A.2. DMSETUP 命令

dmsetup 命令是一个用来与 Device Mapper 沟通的命令行封装器(wrapper)。可使用 dmsetup 命令的 infolsstatus 和 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

可能的设备状态是 SUSPENDEDACTIVE 和 READ-ONLYdmsetup suspend 命令将设备状态设定为 SUSPENDED。当挂起某个设备时,会停止对该设备的所有 I/O 操作。使用 dmsetup resume 命令可将设备状态恢复到 ACTIVE

Read Ahead

系统对正在进行读取操作的任意打开文件的预读数据块数目。默认情况下,内核会自动选择一个合适的值。可使用 dmsetup 命令的 --readahead 选项更改这个值。

Tables present

这个类型的可能状态为 LIVE 和 INACTIVEINACTIVE 状态表示已经载入了表格,且会在 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