myfreax

Linux Loop 循环设备

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

4 min read
By myfreax
Linux Loop 循环设备
Linux Loop 循环设备

当你在终端运行 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 命令创建删除循环设备

结论

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

Related Articles