回环设备loopback device
你有没有想过在Linux的文件管理系统中再创建一个文件系统,这时你就需要用到回环设备(loop device)。
在Linux中,回环设备允许用户以一个普通磁盘文件虚拟一个块设备。设想一个磁盘设备,对它的所有读写操作都将被重定向到读写一个名为 disk-image 的普通文件而非操作实际磁盘或分区的轨道和扇区。当然,disk-image这个名字你可以任意取,但这个文件必须存在于一个实际的磁盘上,而这个实际的磁盘必须比虚拟的磁盘(disk-image)容量更大。
回环设备的使用与其它任何块设备相同。特别是,你可以在这个设备上创建文件系统并像普通的磁盘一样将它挂载在系统中。这样的一个将全部内容保存在一个普通文件中的文件系统,被称为虚拟文件系统(virtual file system)。
下面就来演示用磁盘文件创建一个Linux回环文件系统的步骤。
创建一个用于承载虚拟文件系统的空文件
这个文件的大小将成为挂载后文件系统的大小。创建指定大小文件的简单方法是通过 dd
命令。这个命令以块为单位(通常为 512 字节,或者你也可以自定义块大小)从一个文件向另一个文件复制数据。/dev/zero 文件则是一个很好的数据来源。
要建立一个 30 MB 大小(zero-filled)的名为 disk-image 的文件可以通过以下命令:dd if=/dev/zero of=/tmp/disk-image bs=1M count=30
创建一个loop device
使用losetup命令创建一个loop devicesudo losetup /dev/loop0 /tmp/disk-image
创建一个文件系统
sudo mkfs -t ext2 /dev/loop0
挂载文件系统
创建一个目录 /tmp/virtualfs,这个目录将被用于挂载我们的文件系统:mkdir /tmp/virtualfs
sudo mount /dev/loop0 /tmp/virtualfs
这时,这个设备应该已经被挂载,就如同一个普通的30M 空间的磁盘一样。df -h /tmp/virtualfs
使用该磁盘
你可以向其它任何磁盘一样使用这个设备:
要记住的是只有超级用户可以使用环回设备,所以此刻需要切换到root用户cd /tmp/virtualfs
echo 'Hello, world!' > test.txt
ls -l
cat test.txt
卸载文件系统
sudo umount -l /dev/loop0
sudo losetup -d /dev/loop0
rm /tmp/disk-image
参考资料: