一、loop设备简介
1、概念
loop设备是使用文件来模拟块设备的一种技术,可以像访问磁盘的方式一样对其进行访问,是一种伪设备
2、使用方式
首先需要创建一个文件和loop设备连接,为用户提供替代块设备文件的接口,创建的文件通常也有一个完整的文件系统,所以也可以像磁盘一样被挂载
即创建一个虚拟的磁盘设备,对它的所有读写操作都将被重定向到读写一个普通文件而非操作实际磁盘或分区的轨道和扇区
二、loop设备的创建
1、losetup命令
losetup命令用来将一个文件或设备虚拟成块设备,也就是将一个文件或设备作为一个磁盘分区来使用,在将这个虚拟块设备挂载到文件系统后,便可以像使用普通磁盘一样来使用了
$ losetup --help
Usage:
losetup [options] [<loopdev>]
losetup [options] -f | <loopdev> <file>
-f --- 自动查找未使用的循环设备文件名
loopdev --- 指定的循环设备文件名
file --- 要映射的文件或设备名
通过下面losetup -a命令可以查看所有的loop设备的状态
$ losetup -a
/dev/loop1: []: (/var/lib/snapd/snaps/gnome-system-monitor_184.snap)
/dev/loop19: []: (/var/lib/snapd/snaps/gnome-characters_795.snap)
/dev/loop27: []: (/var/lib/snapd/snaps/gnome-logs_119.snap)
/dev/loop15: []: (/var/lib/snapd/snaps/snapd_20671.snap)
......
/dev/loop24: []: (/var/lib/snapd/snaps/core22_1122.snap)
/dev/loop14: []: (/var/lib/snapd/snaps/gnome-3-34-1804_90.snap)
/dev/loop5: []: (/var/lib/snapd/snaps/gnome-42-2204_172.snap)
2、创建/卸载loop设备
(1)创建镜像文件
# dd if=/dev/zero of=test.img bs=128M count=1
1+0 records in
1+0 records out
134217728 bytes (128.0MB) copied, 1.138415 seconds, 112.4MB/s
(2)使用losetup
将镜像文件虚拟成块设备
# losetup /dev/loop0 test.img
[181086.884016] loop0: detected capacity change from 0 to 262144
也可以使用下面自动查找未使用的loop设备命令
# losetup -f test.img
[181143.406463] loop0: detected capacity change from 0 to 262144
(3)查看刚刚创建的设备
# losetup -a
/dev/loop0: 0 test.img
(4)挂载块设备
# mkfs.ext2 /dev/loop0
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
32768 inodes, 131072 blocks
6553 blocks (5%) reserved for the super user
First data block=1
Maximum filesystem blocks=262144
16 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
# mount /dev/loop0 /tmp
(5)经过此步骤,就可以通过/tmp目录,像访问真实块设备一样访问test.img
# cd /tmp/
# ls
lost+found
# echo hello > a.txt
# ls
a.txt lost+found
# cat a.txt
hello
(6)卸载删除
umount /tmp
losetup -d /dev/loop0
【参考博客】
[1] https://cloud.tencent.com/developer/article/2393236
[2] https://blog.csdn.net/scaleqiao/article/details/46777811