小编nat*_*nic的帖子

主机重新启动后,容器中的循环设备设置(losetup、mount 等)立即失败

我正在尝试在 Centos 8 上的容器环境(podman)中填充磁盘映像。我最初遇到了从容器访问循环设备的问题,直到找到我需要以 root 身份运行 podman 的 SO 和其他源,并且与--privileged选项。

虽然这确实解决了我的问题,但我注意到重新启动主机后,我第一次尝试在容器中设置循环设备会失败 ( failed to set up loop device: No such file or directory),但退出并重新启动容器后它会成功 (/dev/loop0)。如果由于某种原因我需要在容器中设置第二个循环设备(/dev/loop1)(在第一个循环设备工作后),它也会失败,直到我退出并重新启动容器。

进一步实验,我发现如果我运行losetup --find --show <file created with dd>足够的时间来附加所需的最大数量的循环设备,然后使用 分离所有这些设备losetup -D,我可以完全避免容器中的循环设备错误。

我怀疑我遗漏了一些关于 losetup 在主机上所做的事情的明显内容,它显然无法完全在容器内完成,或者更具体地说,这可能是 Centos+podman+losetup 问题。关于正在发生的事情以及为什么我必须在重新启动后预先连接/分离循环设备以避免容器内出现问题的任何见解?

在 Centos 8 系统上重现的步骤(重新启动后连接/分离一次):

$ dd if=/dev/zero of=file bs=1024k count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.00826706 s, 1.3 GB/s
$ cp file 1.img
$ cp file 2.img …
Run Code Online (Sandbox Code Playgroud)

filesystems containers mount centos podman

3
推荐指数
1
解决办法
8034
查看次数

标签 统计

centos ×1

containers ×1

filesystems ×1

mount ×1

podman ×1