我以前使用创建图像文件,使用dd
在它们上设置文件系统,并将mkfs
它们mount
作为已安装的分区访问它们。后来我在网上看到很多例子都是losetup
事先在/dev
. 我不知道为什么实际上需要一个图像文件来充当循环设备并拥有自己的/dev
条目,而无需任何麻烦即可获得相同的行为。
总结:在现实生活场景中,为什么我们需要一个/dev/loopX
条目,而我们可以在没有它的情况下挂载 fs 映像?循环设备有什么用?
我以前使用创建图像文件,使用dd
在它们上设置文件系统,并将mkfs
它们mount
作为已安装的分区访问它们。后来我在网上看到很多例子都是losetup
事先在/dev
. 我不知道为什么实际上需要一个图像文件来充当循环设备并拥有自己的/dev
条目,而无需任何麻烦即可获得相同的行为。
总结:在现实生活场景中,为什么我们需要一个/dev/loopX
条目,而我们可以在没有它的情况下挂载 fs 映像?循环设备有什么用?
挂载通常必须在块设备上完成。循环驱动程序将块设备前端放置到您的数据文件中。
如果您没有进行循环挂载,
losetup
那么操作系统会在后台执行一个。例如
losetup
如果您的文件映像中包含嵌入式分区, 您可能需要直接调用。例如,如果我有这张图片:
我不能直接挂载
但是如果我使用
losetup
然后kpartx
我可以访问分区:文件系统期望读取和写入块设备,但图像文件不是块设备。循环设备在文件(或另一个块设备,可选地重新映射)之上提供块设备。
很多情况下挂载镜像时不需要考虑loop设备,因为
mount
一切都为你搞定;但仍涉及循环设备。losetup -l -a
将向他们展示。另请参阅mount 和 mount -o loop 有什么区别。
您似乎在 Linux 上,而 Linux 对该功能使用了错误的名称。
我于 1988 年在 SunOS-4.0 上发明了该功能,我称该功能为
fbk
- 文件模拟块设备。背景是设备驱动程序在普通文件之上模拟块设备。你需要这个,因为文件系统不能使用普通文件作为文件系统的后台存储。它需要一个块设备,这就是
fbk
模拟的。一段时间以来,有些人使程序
mount
变得更加聪明,并且有一些挂载实现会自动fbk
为文件创建一个实例,以防mount
程序检测到预期为块设备的参数似乎是一个计划文件。即使在后台不需要它来从文件挂载文件系统,对于使用绝对需要块设备的驱动程序或程序的任何设置,您仍然需要它。想想 nbd(网络块设备)服务器、复合块设备驱动程序,如 mdraid、lvm 等。