Linux Command dmsetup管理LVM
文章目录
Linux Command dmsetup管理LVM
1. 简介
2. 语法
3. 命令
3.1 常用命令
3.2 dmsetup info
3.3 dmsetup ls
3.4 dmsetup status
3.5 dmsetup deps
3.6 dmsetup table
3.7 dmsetup create
1. 简介
dmsetup
命令是一个用来与 Device Mapper 沟通的命令行封装器(wrapper)。可使用 dmsetup 命令的 info、ls、status 和 deps 选项查看 LVM 设备的常规信息,如以下小节所述。
2. 语法
dmsetup + <command> + <device_name> or <uuid> # command 常见的有 remove 、 ls 、status 等 # device_name: 可以是/dev/sd*,或者是物理卷的名称
3. 命令
3.1 常用命令
dmsetup clear device_name dmsetup create device_name [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume] [-n|--notable|--table table|table_file] [--readahead [+]sectors|auto|none] dmsetup create --concise [concise_device_specification] dmsetup deps [-o options] [device_name...] dmsetup help [-c|-C|--columns] dmsetup info [device_name...] dmsetup info -c|-C|--columns [--count count] [--interval seconds] [--nameprefixes] [--noheadings] [-o fields] [-O|--sort sort_fields] [--separator separator] [device_name] dmsetup load device_name [--table table|table_file] dmsetup ls [--target target_type] [--exec command] [--tree] [-o options] dmsetup mangle [device_name...] dmsetup message device_name sector message dmsetup mknodes [device_name...] dmsetup reload device_name [--table table|table_file] dmsetup remove [-f|--force] [--retry] [--deferred] device_name... dmsetup remove_all [-f|--force] [--deferred] dmsetup rename device_name new_name dmsetup rename device_name --setuuid uuid dmsetup resume device_name... [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs] [--readahead [+]sectors|auto|none] dmsetup setgeometry device_name cyl head sect start dmsetup splitname device_name [subsystem] dmsetup stats command [options] dmsetup status [--target target_type] [--noflush] [device_name...] dmsetup suspend [--nolockfs] [--noflush] device_name... dmsetup table [--concise] [--target target_type] [--showkeys] [device_name...] dmsetup targets dmsetup udevcomplete cookie dmsetup udevcomplete_all [age_in_minutes] dmsetup udevcookie dmsetup udevcreatecookie dmsetup udevflags cookie dmsetup udevreleasecookie [cookie] dmsetup version dmsetup wait [--noflush] device_name [event_nr] dmsetup wipe_table device_name... [-f|--force] [--noflush] [--nolockfs] devmap_name major minor devmap_name major:minor
3.2 dmsetup info
# dmsetup info Name: testgfsvg-testgfslv1 State: ACTIVE Read Ahead: 256 Tables present: LIVE Open count: 0 Event number: 0 Major, minor: 253, 2 Number of targets: 2 UUID: LVM-K528WUGQgPadNXYcFrrf9LnPlUMswgkCkpgPIgYzSvigM7SfeWCypddNSWtNzc2N ... Name: VolGroup00-LogVol00 State: ACTIVE Read Ahead: 256 Tables present: LIVE Open count: 1 Event number: 0 Major, minor: 253, 0 Number of targets: 1 UUID: LVM-tOcS1kqFV9drb0X1Vr8sxeYP0tqcrpdegyqj5lZxe45JMGlmvtqLmbLpBcenh2L3
dmsetup info 命令提供以下分类信息:
Name 设备名称。LVM 设备以用小横线分隔的卷组名称和逻辑卷名称表示。在源名称中小横线会转换为两个小横线。在标准 LVM 操作过程中,不应使用这种格式的 LVM 设备名称直接指定 LVM 设备,而是应该使用 vg/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。
3.3 dmsetup ls
可以使用 dmsetup ls
命令列出映射的设备的设备名称列表。可以使用 dmsetup ls --target target_type
命令列出至少有一个指定类型目标的设备。有关 dmsetup ls 的其他选项
# dmsetup ls testgfsvg-testgfslv3 (253:4) testgfsvg-testgfslv2 (253:3) testgfsvg-testgfslv1 (253:2) VolGroup00-LogVol01 (253:1) VolGroup00-LogVol00 (253:0)
# dmsetup ls --target mirror lock_stress-grant--02.1722 (253, 34) lock_stress-grant--01.1720 (253, 18) lock_stress-grant--03.1718 (253, 52) lock_stress-grant--02.1716 (253, 40) lock_stress-grant--03.1713 (253, 47) lock_stress-grant--02.1709 (253, 23) lock_stress-grant--01.1707 (253, 8) lock_stress-grant--01.1724 (253, 14) lock_stress-grant--03.1711 (253, 27)
在多路径或者其它 device mapper 装置中堆叠的 LVM 配置文件可能过于复杂。dmsetup ls 命令提供了一个–tree 选项,可以树形式显示设备间的相依性,如下所示。
# dmsetup ls --tree vgtest-lvmir (253:13) ├─vgtest-lvmir_mimage_1 (253:12) │ └─mpathep1 (253:8) │ └─mpathe (253:5) │ ├─ (8:112) │ └─ (8:64) ├─vgtest-lvmir_mimage_0 (253:11) │ └─mpathcp1 (253:3) │ └─mpathc (253:2) │ ├─ (8:32) │ └─ (8:16) └─vgtest-lvmir_mlog (253:4) └─mpathfp1 (253:10) └─mpathf (253:6) ├─ (8:128) └─ (8:80)
3.4 dmsetup status
dmsetup status device
命令提供指定设备中每个目标的状态信息。如果没有指定设备名称,输出结果是所有目前配置的设备映射器设备信息。可以使用 dmsetup status --target target_type
命令列出那些至少有一个指定类型目标的设备。
# dmsetup status testgfsvg-testgfslv3: 0 312352768 linear testgfsvg-testgfslv2: 0 312352768 linear testgfsvg-testgfslv1: 0 312352768 linear testgfsvg-testgfslv1: 312352768 50331648 linear VolGroup00-LogVol01: 0 4063232 linear VolGroup00-LogVol00: 0 151912448 linear
3.5 dmsetup deps
dmsetup deps device
命令为指定设备的映射列表参考的设备提供(major,minor)对列表。如果没有指定设备名称,则输出所有目前配置的设备映射器设备信息。
# dmsetup deps testgfsvg-testgfslv3: 1 dependencies : (8, 16) testgfsvg-testgfslv2: 1 dependencies : (8, 16) testgfsvg-testgfslv1: 1 dependencies : (8, 16) VolGroup00-LogVol01: 1 dependencies : (8, 2) VolGroup00-LogVol00: 1 dependencies : (8, 2)
# dmsetup deps lock_stress-grant--02.1722 3 dependencies : (253, 33) (253, 32) (253, 31)
3.6 dmsetup table
显示table信息
# dmsetup table docker-253:2-8409152-pool: 0 419430400 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing docker-docker--lv: 0 16777216 linear 8:16 2048 centos-swap: 0 4194304 linear 8:2 2048 centos-root: 0 98549760 linear 8:2 4196352
3.7 dmsetup create
dmsetup create dm-name dm-table
- dm-name是要创建的设备名字。 如果成功将会在/dev/mapper/目录下 生成这个名字的文件
- dm-table是保存了这个map device的 mapping table。
起始扇区 扇区个数 线性映射 目标设备 目标设备上的起始扇区 0 1025 linear /dev/sdb2 0 1025 1025 linear /dev/sdc2 0
某个block的sector大小,可以用 blockdev --getsize /dev/sdb2
来得到。
如果是刚分区的盘,需要用partprobe来更新一下。
查看linear设备的写入顺序
将新生成的设备创建文件系统,mount到某个目录。
cd到这个目录下,运行
dd if=/dev/zero of=test
这个命令将一直运行到写满磁盘。
在运行之前可以运行
watch -n 1 iostat /dev/sdb2 /dev/sdc2
来观察磁盘的读写情况。
可以发现 写入的过程是,先写入到/dev/sdb2,再写入到/dev/sdc2
.
这个过程是和linear的概念一致的。
[root@node1 ~]# blockdev --getsize /dev/sdc1 1012032 [root@node1 ~]# blockdev --getsize /dev/sdd1 1012032 [root@node1 ~]# vi linear_table 0 1012032 linear /dev/sdc1 0 1012032 1012032 linear /dev/sdd1 0 [root@node1 ~]# dmsetup create linear_test linear_table [root@node1 ~]# ls -l /dev/mapper/linear_test brw-rw---- 1 root disk 253, 0 Jan 4 10:39 /dev/mapper/linear_test
更多阅读: