生成和使用环回文件

环回文件系统存在与文件之中,我们通过将环回文件连接到一个设备文件来进行挂载,环回文件系统的一个例子就是初始化内存文件(/boot/initrd.img),这个文件存储了一个用于内核初始化的文件系统

创建空白文件

使用dd创建一个1GB的空白文件

[root@MIO-2 ~]# dd if=/dev/zero  of=loopback.img bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 4.17963 s, 257 MB/s

使用mkfs命令格式化文件

mkfs.ext4 loopbackfile.img

[root@MIO-2 ~]# mkfs.ext4 loopback.img 
mke2fs 1.41.12 (17-May-2010)
loopback.img is not a block special device.
Proceed anyway? (y,n) y
...

检查文件系统

[root@MIO-2 ~]# file loopback.img 
loopback.img: Linux rev 1.0 ext4 filesystem data (extents) (large files) (huge files)

挂载环回文件

[root@MIO-2 ~]# mount -o loop loopback.img /mnt/test/
[root@MIO-2 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-main
                       97G  2.4G   89G   3% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/vda1             194M   27M  157M  15% /boot
/root/loopback.img   1008M   34M  924M   4% /mnt/test

这是一种快捷的挂载方法,我们并没有连接到任何设备上,但是在内部,这个环回文件链接到到了一个/dev/loop0-7的某一个设备上

[root@MIO-2 ~]# ll /dev/loo*
brw-rw---- 1 root disk 7, 0 Aug 24 20:44 /dev/loop0
brw-rw---- 1 root disk 7, 1 Aug 24 20:44 /dev/loop1
brw-rw---- 1 root disk 7, 2 Aug 24 20:44 /dev/loop2
brw-rw---- 1 root disk 7, 3 Aug 24 20:44 /dev/loop3
brw-rw---- 1 root disk 7, 4 Aug 24 20:44 /dev/loop4
brw-rw---- 1 root disk 7, 5 Aug 24 20:44 /dev/loop5
brw-rw---- 1 root disk 7, 6 Aug 24 20:44 /dev/loop6
brw-rw---- 1 root disk 7, 7 Aug 24 20:44 /dev/loop7

手动指定将环回文件挂载到某一个设备上

[root@MIO-2 ~]# losetup /dev/loop6 loopback.img 
[root@MIO-2 ~]# mount /dev/loop6 /mnt/test/
[root@MIO-2 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-main
                       97G  2.4G   89G   3% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/vda1             194M   27M  157M  15% /boot
/dev/loop6           1008M   34M  924M   4% /mnt/test

将ISO文件做为环回文件挂载

ISO文件是任意种类的光学存储介质,我们可以采用环回挂载的方法,像挂载物理光盘一样挂载ISO文件

挂载点就是一个目录,用来作为文件系统的访问路径,我们甚至可以用一个非空的目录做为挂载路径,那么知道设备被卸载,这个挂载路径中包含的都是来自设备的数据,而非原始目录中的内容

mount -o loop test.iso /mnt/iso