当你在终端运行 lsblk 命令时候列出已挂载的驱动器时,您一定遇到过以 loop 开头的驱动器名称,这称为循环设备,英语是 Loop device。

如果您是 Ubuntu 用户,那么您将看多有许多循环设备,如 lsblk 命令的输出所示。这是因为 Canonical 开发的通用包管理系统 Snap。而 Snap 将应用程序挂载为一个磁盘分区。

现在你可能会问什么是循环设备以及为什么将 Snap 应用程序挂载为磁盘分区。在本教程中,我们将向你说明什么是循环设备。

lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0 349.7M  1 loop /snap/gnome-3-38-2004/143
.....
loop27   7:27   0 391.5M  1 loop /snap/telegram-desktop/4896
sda      8:0    0 111.8G  0 disk 
├─sda1   8:1    0   300M  0 part /boot/efi
....

循环设备作为虚拟文件系统

Linux 允许用户创建特殊的块设备,通过它可以将普通文件映射到虚拟块设备。简而言之,循环设备可以充当虚拟文件系统,这在处理 Snap 等独立程序时非常有用。

基本上当你将循环设备作为文件系统挂载的时候,你就可以获得一个虚拟文件系统。开发人者也就可以将一堆文件打包到一个地方,因此它可以被操作系统访问,这种行为称为循环挂载。

使用循环设备作为虚拟文件系统是使用循环设备的众多理由之一,如果您感兴趣,这里有更多循环设备的用例。

循环设备的应用场景

作为虚拟文件系统,当开发者或者 Linux 系统管理员获得一个独立的文件系统时,就可以创造无限可能。下面是一些使用循环设备广为人知的用例。

虚拟磁盘镜像

循环设备可以用于创建虚拟磁盘镜像。通过将一个文件关联到循环设备,可以将文件视为一个磁盘设备,从而可以在磁盘设备进行分区、格式化和挂载,安装操作系统等操作。这对于测试和仿真环境非常有用。

加密文件系统

循环设备还可以用于创建加密文件系统。通过将一个加密文件关联到循环设备,就可以在循环设备创建一个加密的文件系统。

这样,所有对循环设备的读写操作都将被自动加密和解密,从而保护敏感数据的安全性以及与系统的隔离。

文件系统的压缩和解压缩

循环设备还可以用于文件系统的压缩和解压缩。通过将一个压缩文件关联到循环设备,可以在循环设备创建一个压缩的文件系统。这样,文件系统上的数据将自动进行压缩和解压缩,从而节省存储空间。

losetup 命令

在讨论如何使用 losetup 命令之前,让我们先回顾一下基本语法。下面是 losetup 命令语法形式 。

 losetup [options] [<loopdev>] <file>

其中 OPTIONS 是 losetup 命令的选项,可选参数,loopdev 是循环设备的名称 ,可选参数,File 是最后的可选参数。

在不指定任何选项与参数运行 losetup 命令时, losetup 命令将会打印所有循环设备与关联文件的信息。

losetup
NAME        SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                        DIO LOG-SEC
/dev/loop1          0      0         1  1 /var/lib/snapd/snaps/gnome-3-34-1804_93.snap       0     512
.....
/dev/loop10         0      0         1  1 /var/lib/snapd/snaps/hugo_16793.snap               0     512

本教程仅说明什么是 Linux 循环设备以及循环设备的用途,因此在本教程中,我们不深入讨论 losetup 命令。请查看教程学习 losetup 命令:losetup 命令创建删除循环设备

结论

本教程旨在涵盖循环设备的基础知识,并且使其足够简单。如果您有任何问题或反馈,请随时发表评论。