• Linux中的 loop设备


    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

    1. [root@test ~]# lsblk
    2. NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    3. loop0    7:0    0   10G  0 loop
    4. vda    253:0    0  100G  0 disk
    5. ├─vda2 253:2    0 99.8G  0 part /
    6. └─vda1 253:1    0  200M  0 part /boot/efi
    7. [root@yinjq-test ~]# losetup -a
    8. /dev/loop0: [64770]:392694 (/root/loop.img)

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

    第3步:格式化

    1. [root@test ~]# mkfs.ext4 /dev/loop0
    2. mke2fs 1.42.9 (28-Dec-2013)
    3. Discarding device blocks: 完成
    4. 文件系统标签=
    5. OS type: Linux
    6. 块大小=4096 (log=2)
    7. 分块大小=4096 (log=2)
    8. Stride=0 blocks, Stripe width=0 blocks
    9. 655360 inodes, 2621440 blocks
    10. 131072 blocks (5.00%) reserved for the super user
    11. 第一个数据块=0
    12. Maximum filesystem blocks=2151677952
    13. 80 block groups
    14. 32768 blocks per group, 32768 fragments per group
    15. 8192 inodes per group
    16. Superblock backups stored on blocks:
    17.     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
    18. Allocating group tables: 完成
    19. 正在写入inode表: 完成
    20. Creating journal (32768 blocks): 完成
    21. Writing superblocks and filesystem accounting information: 完成

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

    1. mkdir /root/loop-dev
    2. mount /dev/loop0 /root/loop-dev
    3. [root@test ~]# df -h
    4. 文件系统        容量  已用  可用 已用% 挂载点
    5. devtmpfs        3.8G     0  3.8G    0% /dev
    6. tmpfs           3.8G     0  3.8G    0% /dev/shm
    7. tmpfs           3.8G   79M  3.7G    3% /run
    8. tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
    9. /dev/vda2        99G  2.8G   92G    3% /
    10. /dev/vda1       200M  9.0M  191M    5% /boot/efi
    11. tmpfs           763M     0  763M    0% /run/user/0
    12. /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  这样的命令看看。
           
    解决方法:先格式化

  • 相关阅读:
    彻底理解零拷贝技术
    12.v3+ts的watch
    Go语言实现原理——Map实现原理
    CSS 【详解】响应式布局(含 rem 详解)
    Java 抽象类与接口
    mysql 插入更新数据
    java-php-net-python-4大型卖场仓储部进出仓库管理系统计算机毕业设计程序
    element Cascader 级联选择器动态通过接口获取二级三级数据
    Istio Arch-1
    Ethereum技术架构介绍
  • 原文地址:https://blog.csdn.net/yjq8116/article/details/130852582