当你在终端运行 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 命令创建删除循环设备。
结论
本教程旨在涵盖循环设备的基础知识,并且使其足够简单。如果您有任何问题或反馈,请随时发表评论。