loop设备是一种伪设备(pseudo-device),或者说是仿真设备。它可以使我们在类UNIX系统上像块设备一样访问一个文件。loop设备必须与一个文件进行连接,才能被使用。通过这种方式,文件可以被mount为块设备,并像其他块设备一样进行挂载和读写操作。loop设备通常用于将镜像文件挂载为块设备,以便在系统中使用。

回环设备以 /dev/loop0、/dev/loop1 等命名。每个设备可虚拟一个块设备。注意只有超级用户才有权限设置回环设备。
一般在linux中会有8个loop设备,一般是/dev/loop0~loop7,可用通过losetup -a查看所有的loop设备,如果命令没有输出就说明所有的loop设备都没有被占用,你可以按照以下步骤创建自己的loop设备。

第1步:创建一个文件

dd if=/dev/zero of=/root/loop.img bs=1M count=10240

第2步:使用losetup将文件转化为块设备

losetup /dev/loop0 /root/loop.img

通过lsblk查看刚刚创建的块设备,TYPE是loop,还没有MOUNTPOINT

[root@test ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   10G  0 loop
vda    253:0    0  100G  0 disk
├─vda2 253:2    0 99.8G  0 part /
└─vda1 253:1    0  200M  0 part /boot/efi

[root@yinjq-test ~]# losetup -a
/dev/loop0: [64770]:392694 (/root/loop.img)

我们就获得了一个磁盘,在这磁盘上我们可以构建任何文件系统,通常来说,使用默认的文件系统(即操作系统的当前的文件系统格式)就行了

第3步:格式化

[root@test ~]# mkfs.ext4 /dev/loop0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

第4步:挂载该磁盘到主文件系统下的一个目录

mkdir /root/loop-dev
mount /dev/loop0 /root/loop-dev

[root@test ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        3.8G     0  3.8G    0% /dev
tmpfs           3.8G     0  3.8G    0% /dev/shm
tmpfs           3.8G   79M  3.7G    3% /run
tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
/dev/vda2        99G  2.8G   92G    3% /
/dev/vda1       200M  9.0M  191M    5% /boot/efi
tmpfs           763M     0  763M    0% /run/user/0
/dev/loop0      9.8G   37M  9.2G    1% /root/loop-dev

接下来,可以正常使用 /root/loop-dev  这个块设备了

第5步:卸载磁盘

umount /root/loop-dev

第6步:删除loop设备

losetup –d  /dev/loop0

问题
[root@yinjq-test ~]# mount /dev/loop0 /root/loop-dev
mount: 文件系统类型错误、选项错误、/dev/loop0 上有坏超级块、
       缺少代码页或助手程序,或其他错误

       有些情况下在 syslog 中可以找到一些有用信息- 请尝试
       dmesg | tail  这样的命令看看。
       
解决方法:先格式化

Logo

更多推荐