Linux 操作系统原理 — loop 伪设备

网友投稿 1883 2022-05-28

目录

文章目录

目录

Linux 的伪设备

Loop 设备

Linux 的伪设备

在开发或测试环境中,往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方便。在这种情况下,可以通过伪设备来进行模拟。

常见的伪设备包括:

null

zero

full

loop

random

urandom

Loop 设备

在 Linux 中,设备名称按照相应的设备驱动程序的符号表项来进行命名。为 Loop 伪设备被命名为 loopX,例如:/dev/loop0、/dev/loop1。

Linux 默认支持 8 个 Loop 设备,如果超过 8 个,则需要额外的配置。否则会出现 no such device 或 could not find any free loop device 之类的错误。

可以通过修改 modprobe.conf 配置文件,增加如下参数的方式进行扩展:

$ /etc/modprobe.conf ... options loop max_loop=20 $ modprobe -v loop

1

2

3

4

5

还有一种扩展 loop 设备数量办法是通过 mknod 指令来创建 loop 设备:

# X 表示第 X 个 loop 设备。 $ mknod -m 0660 /dev/loopX b 7 X # e.g. $ mknod -m 0660 /dev/loop8 b 7 8 $ chown root:disk /dev/loop8

1

2

3

4

5

6

使用 losetup -a 指令可以查询目前被使用的 loop 设备:

$ losetup -a

1

在使用之前,Loop 设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口允许将文件视为一个 “块设备”(块特殊文件)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载。

这种设备文件经常被用于光盘或是磁盘镜像。通过循环挂载方式来挂载包含文件系统的文件,这些文件将出现在挂载点目录,使得应用程序可以访问这个文件系统中的文件。

例如,在 OpenStack 开发/测试环境中创建 Cinder 使用的块存储设备。

Linux 操作系统原理 — loop 伪设备

$ yum install -y device-mapper-persistent-data lvm2 $ systemctl enable lvm2-lvmetad.service && systemctl start lvm2-lvmetad.service && systemctl status lvm2-lvmetad.service $ mkdir -p /cinder/volumegroup $ dd if=/dev/zero of=/cinder/volumegroup/volpool01.img count=204800 bs=1MB $ losetup /dev/loop0 /cinder/volumegroup/volpool01.img $ pvcreate /dev/loop0 $ vgcreate cinder-volumes /dev/loop0 $ vgs $ vi /etc/rc.local ... losetup /dev/loop0 /cinder/volumegroup/volpool01.img pvcreate /dev/loop0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle自动清理日志脚本
下一篇:jupyter notebook相关问题
相关文章