A.2. DMSETUP 命令
dmsetup
命令是一个用来与 Device Mapper 沟通的命令行封装器(wrapper)。可使用 dmsetup
命令的 info
、ls
、status
和 deps
选项查看 LVM 设备的常规信息,如以下小节所述。
有关 dmsetup
命令的额外选项和功能,请参考 dmsetup
(8) man page。
A.2.1. dmsetup info 命令
dmsetup info device
命令提供有关 Device Mapper 设备概述。如果没有指定设备名称,则输出所有目前配置的 Device Mapper 设备信息。如果指定了设备,那么这个命令只会生成该设备信息。
dmsetup info
命令提供以下分类信息:
Name
设备名称。LVM 设备以用小横线分隔的卷组名称和逻辑卷名称表示。在源名称中小横线会转换为两个小横线。在标准 LVM 操作过程中,不应使用这种格式的 LVM 设备名称直接指定 LVM 设备,而是应该使用 vg/lv 指定。
name:raidVG-eph_d03ab0ae--09b6--43e5--a9e0--2dc4acf4dfd8
raidVG 表示vg
eph_d03ab0ae--09b6--43e5--a9e0--2dc4acf4dfd8 表示lv
State
可能的设备状态是 SUSPENDED
、ACTIVE
和 READ-ONLY
。dmsetup suspend
命令将设备状态设定为 SUSPENDED
。当挂起某个设备时,会停止对该设备的所有 I/O 操作。使用 dmsetup resume
命令可将设备状态恢复到 ACTIVE
。
Read Ahead
系统对正在进行读取操作的任意打开文件的预读数据块数目。默认情况下,内核会自动选择一个合适的值。可使用 dmsetup
命令的 --readahead
选项更改这个值。
Tables present
这个类型的可能状态为 LIVE
和 INACTIVE
。INACTIVE
状态表示已经载入了表格,且会在 dmsetup resume
命令将某个设备状态恢复为 ACTIVE
时进行切换,届时表格状态将为 LIVE
。有关详情请参考 dmsetup
man page。
Open count
打开参考计数表示打开该设备的次数。mount
命令会打开一个设备。
Event number
目前收到的事件数目。使用 dmsetup wait n
命令允许用户等待第 n 个事件,收到该事件前阻断该调用。
Major, minor
主设备号码和副设备号码
Number of targets
组成某个设备的片段数目。例如:一个跨三个磁盘的线性设备会有三个目标。线性设备由某个磁盘起始和结尾,而不是中间组成的线性设备有两个目标。
UUID
该设备的 UUID。
以下是 dmsetup info
命令的部分输出示例。
sudo dmsetup info raidVG-eph_d03ab0ae--09b6--43e5--a9e0--2dc4acf4dfd8
Name: raidVG-eph_d03ab0ae--09b6--43e5--a9e0--2dc4acf4dfd8
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 18
Number of targets: 1
UUID: LVM-4ovvx8eqezZ2or1OMqz0KUhyK8SZtTqdVLGvsPQd58pFUr8muAhxmaDYtEWN2NDG
A.2.2. dmsetup ls 命令
可以使用 dmsetup ls
命令列出映射的设备的设备名称列表。可以使用 dmsetup ls --target target_type
命令列出至少有一个指定类型目标的设备。有关 dmsetup ls
的其他选项,请参考 dmsetup ls
man page。
以下示例演示了用来列出目前配置的映射设备名称的命令。
sudo dmsetup ls
raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a--linear (253:8)
docker-253:0-12070-cbdbceb36eca043e9769c92d968e5fbb32d34743515f58d733bf1b1c16001171 (253:73)
raidVG-vm_data (253:0)
raidVG-eph_0443b779--cb51--478a--9c4d--bc2a7c35c571--meta (253:34)
docker-253:0-12070-7684cc6f46a62e77a48b0eefe1dfbc2aee4b86daffc3d9abf5272843385d51c2 (253:80)
docker-253:0-12070-pool (253:70)
docker-253:0-12070-875c736f340ba4094c7e90aed5dedf212ee8a912f01b11be3268f41098209d6f (253:120)
raidVG-eph_a6d5292a--bff4--49da--8a8c--7b2835c144c1 (253:2)
docker-253:0-12070-d04ca7fd6e5713e88dd444c20deac92f10dc231f3e451cc0eddcbfb9770824c5 (253:84)
raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a (253:6)
docker-253:0-12070-e5c60544db49425174f99b8e9128f57254775d95f1990c9cb325f41b55c3dc9c (253:104)
raidVG-eph_d19e6f31--4e59--4301--af75--d4d1aa576a2c (253:129)
raidVG-eph_e4bc6c27--dfa5--402d--b7f3--54fe77e954ae--meta (253:33)
docker-253:0-12070-61d574220dddbadc6752e16be782bc81a55ee4ca9171b60d39eacbb068742e92 (253:96)
以下示例演示了用来列出目前配置的镜像映射设备名称的命令。
在多路径或者其它 device mapper 装置中堆叠的 LVM 配置文件可能过于复杂。dmsetup ls
命令提供了一个--tree
选项,可以树形式显示设备间的相依性,如下所示。
sudo dmsetup ls --tree
docker-253:0-12070-cbdbceb36eca043e9769c92d968e5fbb32d34743515f58d733bf1b1c16001171 (253:73)
└─docker-253:0-12070-pool (253:70)
├─ (7:0)
└─ (7:1)
raidVG-vm_data (253:0)
├─raidVG-vm_data--meta (253:1)
│ └─ (8:4)
└─raidVG-vm_data--linear (253:62)
└─ (8:4)
raidVG-eph_0443b779--cb51--478a--9c4d--bc2a7c35c571--meta (253:34)
└─ (8:4)
docker-253:0-12070-7684cc6f46a62e77a48b0eefe1dfbc2aee4b86daffc3d9abf5272843385d51c2 (253:80)
└─docker-253:0-12070-pool (253:70)
├─ (7:0)
└─ (7:1)
docker-253:0-12070-875c736f340ba4094c7e90aed5dedf212ee8a912f01b11be3268f41098209d6f (253:120)
└─docker-253:0-12070-pool (253:70)
├─ (7:0)
└─ (7:1)
raidVG-eph_a6d5292a--bff4--49da--8a8c--7b2835c144c1 (253:2)
└─ (8:4)
docker-253:0-12070-d04ca7fd6e5713e88dd444c20deac92f10dc231f3e451cc0eddcbfb9770824c5 (253:84)
└─docker-253:0-12070-pool (253:70)
├─ (7:0)
└─ (7:1)
raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a (253:6)
├─raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a--meta (253:7)
│ └─ (8:4)
└─raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a--linear (253:8)
└─ (8:4)
docker-253:0-12070-e5c60544db49425174f99b8e9128f57254775d95f1990c9cb325f41b55c3dc9c (253:104)
└─docker-253:0-12070-pool (253:70)
├─ (7:0)
└─ (7:1)
A.2.3. dmsetup status 命令
dmsetup status device
命令提供指定设备中每个目标的状态信息。如果没有指定设备名称,输出结果是所有目前配置的设备映射器设备信息。可以使用 dmsetup status --targettarget_type
命令列出那些至少有一个指定类型目标的设备。
以下示例演示了用来列出在所有目前配置映射设备中目标状态的命令。
sudo dmsetup status
raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a--linear: 0 20971520 linear
docker-253:0-12070-cbdbceb36eca043e9769c92d968e5fbb32d34743515f58d733bf1b1c16001171: 0 20971520 thin 639488 20971519
raidVG-vm_data: 0 1551892480 ksc-linear
raidVG-eph_0443b779--cb51--478a--9c4d--bc2a7c35c571--meta: 0 8192 linear
docker-253:0-12070-7684cc6f46a62e77a48b0eefe1dfbc2aee4b86daffc3d9abf5272843385d51c2: 0 20971520 thin 753792 20971519
docker-253:0-12070-pool: 0 419430400 thin-pool 968 21495/524288 2001462/3276800 - rw discard_passdown queue_if_no_space -
docker-253:0-12070-875c736f340ba4094c7e90aed5dedf212ee8a912f01b11be3268f41098209d6f: 0 20971520 thin 252800 20971519
raidVG-eph_a6d5292a--bff4--49da--8a8c--7b2835c144c1: 0 20971520 linear
docker-253:0-12070-d04ca7fd6e5713e88dd444c20deac92f10dc231f3e451cc0eddcbfb9770824c5: 0 20971520 thin 2049024 20971519
raidVG-eph_3764d0aa--df56--478d--926c--e01dab91518a: 0 20971520 ksc-linear
创建一个linear设备
dmsetup create dm-name dm-table
dm-name 是要创建的设备名字。 如果成功将会在/dev/mapper/目录下 生成这个名字的文件
dm-table 是保存了这个map device的 mapping table。
简单的dm-table一个例子是:
起始扇区 扇区个数 线性映射 目标设备 目标设备上的起始扇区
0 1025 linear /dev/sdb2 0
1025 1025 linear /dev/sdc2 0
某个block的sector大小,可以用 blockdev --getsize /dev/sdb2来得到。
如果是刚分区的盘,需要用partprobe来更新一下
sudo fdisk -l
Disk /dev/mapper/raidVG-eph_8efd7082--1128--465b--b42b--b59c659593b2: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mapper/raidVG-eph_8efd7082--1128--465b--b42b--b59c659593b2--meta: 4 MB, 4194304 bytes, 8192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mapper/raidVG-eph_8efd7082--1128--465b--b42b--b59c659593b2--linear: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes