为区别网络里的loop端口(回环端口),这里把linux里的hoop设备叫做循环设备
在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件
很多资料里以镜像文件不需刻录就挂载使用的功能来讲解loop设备的,那为什么可以这样呢?
这要先从mount的流程来理解,挂载操作,实际上就是把设备上的文件系统/目录文件连接到指定的目录(directory)下,在操作系统层面就是把挂载设备和挂载目录的对应关系加到内核中的Vfsmount里的对应表单里(内核启动后会从硬盘上加载到内存里),这样我们就可以通过访问目录路径来访问设备上的数据了
之前的博文里谈过bind mount,链接 http://blog.csdn.net/shengxia1999/article/details/52060354
loop mount是另一种mount方式,如果说普通mount解决了实际硬件存储设备的挂载,bind mount解决了目录到目录的挂载,那么loop mount则解决了将档案文件到目录的挂载
档案,英文Archive,与文件(file)不同,是一个打包好的文件集,里面一般包含许多文件, 比如 tar, jar, iso 就是常见的档案格式
那又是怎么实现将档案文件挂载到目录下呢?
实际上,系统先把档案文件(比如某个.iso文件)映射到loop设备上
#losetup /dev/loop0 xxxx.iso 使系统误认为xxxx.iso为存储设备/dev/loop0
再欺骗mount命令,使他认为 /dev/loop0真的是个设备在运行,挂载到指定目录
#mount -t xxxx.iso /dev/loop0 /loop设备路径
其实现在上面这两条命令可以用一条命令实现
#mount -t xxxx.iso -o loop /dev/loop0 /loop设备路径
这样,当我们访问loop设备路径的时候,就好像点开了windows里的CD驱动器,可以访问里面的文件
但前提是,被访问的loop设备里的档案文件具有linux识别的文件系统,像tar, jar, zip 这样的档案,只是一种压缩格式,本身不是文件系统,即使通过loop mount挂载上去了,直接访问他也读不出什么数据,这很好理解,就像在windows下不装任何解压软件,就无法打开压缩文件一样
但是像.iso文件,它一般包含 iso 9660 文件系统,这是一种CD上用的文件系统,linux是认识的,所以用loop mount挂载上去后,直接就可以读出里面的文件
综上所述,loop mount实质上是将具有特定文件系统格式的档案文件,欺骗系统使之认为是一个块设备,并挂载到相应的目录下
详细说明可参考下面链接,感谢分享