一、简单介绍

首先我们在命令行终端中输入manloop

出现如下内容:

摘要:

Loop设备是一种块设备,然而它并不指向硬碟或则硬盘,而是指向一个文件块或则另一种块设备。

一种应用的事例:将另外一种文件系统的镜像文件保存到一个文件中,比如iso文件,之后将一个Loop设备指向该文件,紧接着就可以通过mount挂载该loop设备到主文件系统的一个目录下了,我们就可以正常访问该镜像中的内容,如同访问一个文件系统一样。

二、详细介绍

loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后,如同一个c盘或光碟一样使用。在使用之前linux device命令,一个loop设备必需要和一个文件进行联接。这些结合形式给用户提供了一个代替块特殊文件的插口。因而,假如这个文件包含有一个完整的文件系统,这么这个文件就可以像一个c盘设备一样被mount上去。之所以叫loop设备(回环),虽然是从文件系统这一层来考虑的,由于这些被mount上去的镜像文件它本身也包含有文件系统,通过loop设备把它mount上去,它如同是文件系统之上再绕了一圈的文件系统linux device命令,所以称为loop。

回环设备('loopbackdevice')准许用户以一个普通c盘文件虚拟一个块设备。构想一个c盘设备,对它的所有读写操作都将被重定向到读写一个名为disk-image的普通文件而非操作实际c盘或分区的轨道和磁道。(其实linux基础教程,disk-image必须存在于一个实际的c盘上,而这个c盘必须比虚拟的c盘容量更大。)回环设备容许你这样使用一个普通文件。

回环设备以/dev/loop0、/dev/loop1等命名。每位设备可虚拟一个块设备。注意只有超级用户才有权限设置回环设备。

三、简单使用

通常在linux中会有8个loop设备,通常是/dev/loop0~loop7,可用通过losetup-a查看所有的loop设备,假如命令没有输出就说明所有的loop设备都没有被占用,你可以根据以下步骤创建自己的loop设备。

命令losetup可以对loop设备进行操作。

下边简单的说明loop设备映射或则指向一个文件的简单步骤:

创建一个文件

1、ddif=/dev/zeroof=/var/loop.imgbs=1Mcount=10240

使用losetup将文件转化为块设备

2、losetup/dev/loop0/var/loop.img

通过lsblk查看刚才创建的块设备

lsblk|greploop0

losetup–a

3、2步骤之后linux桌面,我们就获得了一个c盘,在这c盘上我们可以重构任何文件系统,一般来说,使用默认的文件系统(即操作系统的当前的文件系统格式)就行了。怎样创建一个文件系统,须要另外了解。

4、挂载该c盘到主文件系统下的一个目录。

首先创建一个目录:

Mkdir/myloopdev

接着挂载:

Mount/dev/loop0/myloopdev

5、就可以步入myloopdev目录,对该虚拟c盘进行操作了。如同使用真实c盘一样,比如:echo“helloworld!”>hello_world.txt

6、使用结束,我们卸载该c盘,umount/myloopdev

7、接着删掉该loop设备,losetup–d/dev/loop0

四、使用loop设备完成一些功能

里面三简单介绍了怎样使用Loop指向一个文件,接下介绍使用loop的一些场景。

借助Loop设备作为一个虚拟硬盘或则虚拟光驱

1、回环设备关联文件。

losetup/dev/loop0a.iso

losetup命令拿来实现回环设备和文件的关联。这个命令还可以实现文件系统的加密,有兴趣的同学可以查看指南。

2、挂载回环设备到特定目录,我们假定要挂载到/mnt/下边。

mount/dev/loop0/mnt/

这样/mnt/下边就是a.iso的内容了。可以通过shell去访问它了。

3、用完以后,须要卸载会换设备。

umount/mnt/

这样设备就卸载,/mnt/下边就不是a.iso的文件了。

4、回环设备和关联文件分离。其实早已在系统中卸载了回环设备,并且这个设备和文件的关联还存在。如果你还要用这个设备关联其他的文件,系统会提示这个设备正在忙。所以须要让回环设备和关联文件分离。

losetup-d/dev/loop0

这样一个光碟镜像的使用就完成了。其实同理也可以通过回环设备挂载其他的虚拟文件,例如虚拟软驱img等。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复