1. Device mapper

设备映射器是提供卷管理的框架的内核驱动程序。它提供了一种创建映射设备的通用方法,它可用作逻辑卷。它没有特别了解卷组或元数据格式。设备映射器的应用程序接口是 ioctl 系统调用。用户界面是 dmsetup 命令。

一个映射的设备是由一个表来定义的,该表规定了如何使用支持的设备表映射来映射设备的每个逻辑扇区范围。映射的设备的表由以下形式构建:

start length mapping [mapping_parameters...]

在设备映射器表的第一行中,start 参数必须相等0。一行中的 start + length 参数必须等于下一步中的 start。在映射表的行中指定哪些映射参数取决于在行中指定 mapping 类型。

设备映射器中的大小总是以扇区(512 字节)指定。

当在设备映射器中将设备指定为映射参数时 , 可以通过文件系统中的设备名称引用它(例如: /dev/hda) , 也可以通过major:minor格式中的主号和次号引用。major:minor格式是首选格式 , 因为它避免了路径名查找。

下面显示了一个设备映射表示例。这个表中有四个线性目标:

0 35258368 linear 8:48 65920
35258368 35258368 linear 8:32 65920
70516736 17694720 linear 8:16 17694976
88211456 17694720 linear 8:16 256

每行的前2个参数分别是段的起始块和段的长度。下一个关键字是映射目标(mapping target),本例中为linear。其余部分为linear的参数。

以下各节描述了下列映射的格式:

  • linear

  • striped

  • mirror

  • snapshot and snapshot-origin

1.1 Linear映射目标

linear 映射目标:将连续范围的块映射到另一个块设备上。

  • 语法:

    start length linear device offset
    • start : 虚拟设备的开始位置

    • length : 映射目标的片段长度

    • device : 块设备,通过文件系统中的设备名或主从设备号引用,格式为major:minor

    • offset : 在该设备中开始映射的偏移。

示例

#一个线性目标,其虚拟设备的起始块为0,段长度为1638400,主从设备号对为8:2,设备的起始偏移量为41146992。
0 16384000 linear 8:2 41156992
​
#一个指定设备参数为/dev/hda的线性目标
0 20971520 linear /dev/hda 384

1.2 striped 映射目标

striped映射目标支持跨物理设备的条带化。它的参数是条带的数量和条带块的大小,然后是设备名称和扇区的一对列表。

  • 语法

    start length striped #stripes chunk_size device1 offset1 ... deviceN offsetN
    • start : 虚拟设备的开始位置

    • length : 映射目标的片段长度

    • #stripes : 虚拟设备的条带数

    • chunk_size : 在切换到下一个条带之前,写入到每个条带的扇区数;该必须是2的幂,至少与内核页大小一样大。

    • device :块设备,通过文件系统中的设备名或主从设备号引用,格式为major:minor

    • offset : 在该设备中开始映射的偏移。

示例

# 一个条带设备,有三个条带,chunk大小为128:
0 73728 striped 3 128 8:9 384 8:8 384 8:7 9789824
​
#一个条带目标,它包含2个条带,每个条带包含256 KiB块,其设备参数由文件系统中的设备名称而不是主设备号和从设备号指定。
0 65536 striped 2 512 /dev/hda 0 /dev/hdb 0

1.3 Mirror映射目标

mirror映射目标支持镜像逻辑设备的映射。

  • 语法

    start length mirror log_type #logargs logarg1 ... logargN #devs device1 offset1 ... deviceN offsetN
    • start :虚拟设备的开始位置

    • length : 映射目标的片段长度

    • log_type

      可能的日志类型及其参数如下

      • core : 镜像在本地 , 镜像日志保存在核心内存中。这种日志类型需要1 - 3个参数:

        regionsize [[no]sync] [block_on_error]
      • disk : 镜像在本地, 镜像日志报错在磁盘上。这种日志类型需要2 - 4个参数

        logdevice regionsize [[no]sync] [block_on_error]
      • clustered_core : 镜像在集群里面,镜像日志报错在核心内存中。这种日志类型需要2 - 4个参数

        regionsize UUID [[no]sync] [block_on_error]
      • clustere_disk : 镜像在集群里面,镜像日志报错存在磁盘里面。这种日志类型需要3- 5个参数

        logdevice regionsize UUID [[no]sync] [block_on_error]

      LVM维护一个小日志,它用于跟踪哪些区域与镜像或镜像同步。regionsize 参数指定这些地区的大小。

      在集群环境中,UUID参数是与镜像日志设备关联的唯一标识符 ,以便可以在整个集群中维护日志状态。

      可选的 [no]sync 参数可用于将镜像指定为 "in-sync" 或 "out-of-sync"。

      block_on_error 参数用于告知镜像响应错误而不是忽略它们。

    • #log_args : 将在映射中指定的日志参数的数量

    • logargs : 镜像的日志参数 ; 提供的日志参数由 #log-args 参数指定 , 有效日志参数由 log_type参数指定。

    • #dev : 镜像中的分支数 ; 为每个分支指定设备和偏移量

    • device : 块设备,通过文件系统中的设备名或主从设备号引用,格式为major:minor

    • offset : 在该设备中开始映射的偏移。

示例

0 52428800 mirror clustered_disk 4 253:2 1024 UUID block_on_error 3 253:3 0 253:4 0 253:5 0

其中数字4表示后续4个值(253:2 1024 UUID block_on_error)均为日志的参数。 3表示镜像分支数量

1.4 snapshot/snapshot-origin 映射目标

固定命名方案用于创建这些设备,例如,您可以使用下列命令创建名为 base 的 LVM 卷以及基于该卷名为 snap 的快照卷。

# lvcreate -L 1G -n base volumeGroup
# lvcreate -L 100M --snapshot -n snap volumeGroup/base

这会产生四个设备,您可以使用以下命令查看:

# dmsetup table|grep volumeGroup
volumeGroup-base-real: 0 2097152 linear 8:19 384
volumeGroup-snap-cow: 0 204800 linear 8:19 2097536
volumeGroup-snap: 0 2097152 snapshot 254:11 254:12 P 16
volumeGroup-base: 0 2097152 snapshot-origin 254:11

# ls -lL /dev/mapper/volumeGroup-*
brw-------  1 root root 254, 11 29 ago 18:15 /dev/mapper/volumeGroup-base-real
brw-------  1 root root 254, 12 29 ago 18:15 /dev/mapper/volumeGroup-snap-cow
brw-------  1 root root 254, 13 29 ago 18:15 /dev/mapper/volumeGroup-snap
brw-------  1 root root 254, 10 29 ago 18:14 /dev/mapper/volumeGroup-base
  • snapshot-origin 映射目标的语法

    start length snapshot-origin origin
    • start : 虚拟设备的开始位置

    • length : 映射目标的片段长度

    • origin : 快照基本卷

    snapshot-origin 通常会有一个或多个基于它的快照。读取数据将直接映射到后备设备。每次写入时,原始数据将保存在每个快照的COW设备中,保持其可见内容不变,直到COW设备填满。

  • snapshot映射目标语法:

    start length snapshot origin COW-device P|N chunksize
    • start : 虚拟设备的开始位置

    • length : 映射目标的片段长度

    • origin : 快照基本卷

    • COW-device : 保存数据块的设备

    • P|N : P(Persistent)或N(Not Persistent) ,表示快照在重启后是否还存在。对于瞬时快照(N),较少的元数据必须保存在磁盘上;它们可以由内核保存在内存中

    • chunksize : 将存储在COW设备上的已更改数据块的扇区大小

示例

#一个 snapshot-origin 目标,原始设备为 254:11。
0 2097152 snapshot-origin 254:11

#一个snapshot目标,原始设备为 254:11,COW 设备为 254:12。此快照设备在重启后保留,且 COW 设备中存储的数据的块大小是 16 个扇区。
0 2097152 snapshot 254:11 254:12 P 16

2. dmsetup介绍

dmsetup使用device-mapper驱动程序管理逻辑设备。设备是通过加载一个表来创建的 , 该表为逻辑设备中的每个扇区(512 字节)指定了一个目标。

常用命令

dmsetup info     #查询设备信息

dmsetup ls       #列出所有逻辑设备

dmsetup status   # 列出所有逻辑设备的状态信息

dsetup remove    # 移除逻辑设备

dmsetup deps     #显示设备依赖关系

dmsetup create   #创建命令激活新的设备映射器设备。

dmsetup rename   # 重命名设备

2.1 dmsetup create命令

create命令激活新的设备映射器设备。它出现在/dev/mapper 中。此外 , 如果目标具有元数据 ,它将读取这些元数据 , 或者如果这是第一次使用 , 它将初始化元数据设备。

2.1.1 linear

线性目标是设备映射器的基本构建块——它用于连接和分割(通常同时进行)块设备

dmsetup create test-linear --table '0 1961317 linear /dev/loop0 0'

这4个磁盘可以作为一个磁盘连接在一起:

echo -e '0 1961317 linear /dev/loop0 0'\\n'1961317 1961317 linear /dev/loop1 0'\\n'3922634 1961317 linear /dev/loop2 0'\\n'5883951 1961317 linear /dev/loop3 0' | dmsetup create test-linear

注 : --table 参数只允许单行表。必须从标准输入读取多行表。

在这种情况下 , logical_start_sector不是 0 , 因为每个设备都需要从前面结束的地方开始。 可以将磁盘拆分为4MiB(8192扇区)“小”和1 GB“大”(1953125扇区)磁盘:

dmsetup create test-linear-small --table '0 8192 linear /dev/loop0 0'
dmsetup create test-linear-large --table '0 1953125 linear /dev/loop0 8192'

注 , 在第二个设备中,偏移量不为 0,因为这块设备希望从4MB开始启动

运行这些命令过程中可以通过lvdisplay --units s 查看对应逻辑卷的的扇区数,或者直接使用dmsetup status命令查看占用扇区。另外可以使用pvs --noheadings -o pe_start --units s /dev/sdk3 获取对应物理卷的的开始的扇区偏移量。

[root@localhost ~]# dmsetup status 
test: 0 10477568 linear 
test: 10477568 10477568 linear 
test: 20955136 10477568 linear 
test: 31432704 10477568 linear 
rl-swap: 0 4194304 linear 
rl-root: 0 35643392 linear 
[root@localhost ~]# pvs --noheadings -o pe_start  --units s /dev/nvme0n2p1 
    2048S
[root@localhost ~]# pvs --noheadings -o pe_start  --units s /dev/nvme0n2p2
    2048S
[root@localhost ~]# pvs --noheadings -o pe_start  --units s /dev/nvme0n2p3
    2048S
[root@localhost ~]# pvs --noheadings -o pe_start  --units s /dev/nvme0n2p5
    2048S
[root@localhost ~]#echo -e  '0 10477568  linear  /dev/nvme0n2p1 2048' \\n'10477568 10477568 linear /dev/nvme0n2p2 2048'\\n '20955136 10477568 linear /dev/nvme0n2p3 2048 '\\n '31432704 10477568 linear /dev/nvme0n2p5 2048' | dmsetup create test
[root@localhost ~]# dmsetup  status 
vg001-lvol: 0 10477568 linear 
vg001-lvol: 10477568 10477568 linear 
vg001-lvol: 20955136 10477568 linear 
vg001-lvol: 31432704 10477568 linear 
test: 0 10477568 linear 
test: 10477568 10477568 linear 
test: 20955136 10477568 linear 
test: 31432704 10477568 linear 
rl-swap: 0 4194304 linear 
rl-root: 0 35643392 linear 
[root@localhost ~]# 

运行之后可以看到后台多了个对应的test的dm设备, 但是实际上原本的逻辑卷设备并没有变化,仍然是lvol。这个功能可以实现为lvm逻辑卷临时改名。 临时改名后的设备与原本设备相同,使用过程中只能使用一个设备

[root@localhost ~]# ll /dev/mapper/*
crw-------. 1 root root 10, 236 Feb 28 15:21 /dev/mapper/control
lrwxrwxrwx. 1 root root       7 Feb 28 15:21 /dev/mapper/rl-root -> ../dm-0
lrwxrwxrwx. 1 root root       7 Feb 28 15:21 /dev/mapper/rl-swap -> ../dm-1
lrwxrwxrwx. 1 root root       7 Mar  8 17:50 /dev/mapper/vg001-lvol -> ../dm-2
[root@localhost ~]# echo -e  '0 10477568  linear  /dev/nvme0n2p1 2048' \\n'10477568 10477568 linear /dev/nvme0n2p2 2048'\\n '20955136 10477568 linear /dev/nvme0n2p3 2048 '\\n '31432704 10477568 linear /dev/nvme0n2p5 2048' | dmsetup create test
[root@localhost ~]# ll /dev/mapper/*
crw-------. 1 root root 10, 236 Feb 28 15:21 /dev/mapper/control
lrwxrwxrwx. 1 root root       7 Feb 28 15:21 /dev/mapper/rl-root -> ../dm-0
lrwxrwxrwx. 1 root root       7 Feb 28 15:21 /dev/mapper/rl-swap -> ../dm-1
lrwxrwxrwx. 1 root root       7 Mar  8 17:56 /dev/mapper/test -> ../dm-3
lrwxrwxrwx. 1 root root       7 Mar  8 17:50 /dev/mapper/vg001-lvol -> ../dm-2

[root@localhost ~]# lvs
  LV   VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rl    -wi-ao---- <17.00g                                                    
  swap rl    -wi-ao----   2.00g                                                    
  lvol vg001 -wi-a-----  19.98g   
[root@localhost ~]# lvscan
  ACTIVE            '/dev/vg001/lvol' [19.98 GiB] inherit
  ACTIVE            '/dev/rl/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/rl/root' [<17.00 GiB] inherit

临时改名后的设备与原本设备相同,使用过程中只能使用一个设备。否则报下面错误

[root@localhost ~]# mount /dev/mapper/vg001-lvol /mnt
[root@localhost ~]# mount /dev/mapper/test /media/
mount: /media: wrong fs type, bad option, bad superblock on /dev/mapper/test, missing codepage or helper program, or other error.

正常Centos系统盘如果直接放置在其他节点上面时,可以使用

dmsetup create lz-root --table “0 356704256 linear 8:163 2048”,

将系统盘/dev/mapper/centos-root映射到/dev/mapper/lz-root

lvdisplay --units s # 获取系统盘逻辑卷/dev/mapper/centos-root扇区数
pvs --noheadings -o pe_start --units s /dev/sdk3 # 获取pe的pe_start偏移量

2.1.2 snapshot

root #dmsetup create test-snapshot-base-real --table '0 1953125 linear /dev/loop0 0'
root #dmsetup create test-snapshot-snap-cow --table '0 390625 linear /dev/loop0 1953125'

snapshot 映射目标用于创建一个特殊的写时复制设备,用于存储原始设备的更改内容。

original设备应该已经被填充。如果将设备标记为original则需要使用snapshot-original。

root #dmsetup create test-snapshot-base --table '0 1953125 snapshot-origin /dev/mapper/test-snapshot-base-real'

2.1.2.1 创建快照

如果快照设备是device mapper设备 , 则在创建快照设备之前需要挂起original设备 , 然后创建快照设备。

root #dmsetup create test-snapshot-cow --table '0 1953125 snapshot /dev/mapper/test-snapshot-base-real /dev/mapper/test-snapshot-snap-cow P 8'

注意,源设备与我们刚才创建的设备不是同一个设备,而是源的底层设备

2.1.2.2 合并快照

要合并快照,必须暂停源,解除快照设备映射,将snapshot-origin目标替换为snapshot-merge目标,并且源恢复:

root #dmsetup suspend test-snapshot-base
root #dmsetup remove test-snapshot-cow
root #dmsetup reload test-snapshot-base --table '0 1953125 snapshot-merge /dev/mapper/test-snapshot-base-real /dev/mapper/test-snapshot-snap-cow P 8'
root #dmsetup resume test-snapshot-base

此时,需要轮询dmsetup状态输出以确定合并完成。一旦合并完成,快照合并目标应该再次替换为快照源目标:

root #dmsetup suspend test-snapshot-base
root #dmsetup reload test-snapshot-base --table '0 1953125 snapshot-origin /dev/mapper/test-snapshot-base-real'
root #dmsetup resume test-snapshot-base

然后可以创建一个新的快照,如果需要,可以重用已经释放的旧快照设备。

2.2 dmsetup info命令

dmsetup命令是用来与Device Mapper沟通的命令行封装器(wrapper)。可使用dmsetup命令的info,ls,status和deps查看LVM设备的常规信息,如以下小结所述

dmsetup info device 命令提供有段Device Mapper设备概述 , 如果没有指定设备名称 , 则输出所有目前配置的Device Mapper , 如果指定了设备,那么这个命令只会生成该设备信息。

dmsetup命令提供以下分类信息:

  • 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。

[root@DM01 ~]# dmsetup info
Name:              36001438005deddc80000400003340000p1
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 6
Number of targets: 1
UUID: part1-mpath-36001438005deddc80000400003340000

Name:              hdvg-swaplv
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 1
Number of targets: 1
UUID: LVM-HdEgjZIOBlqvg5UJrJiJZMrD8amxrnKuwZMowd50csflOe9XekfB4ohPBVFayV6U

Name:              vgdm-lvznff2
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      253, 10
Number of targets: 1
UUID: LVM-1xNOdw2IYIcdocFnxwQUNCIYjo2OUZdqcliq0OGmuWImwCPLhf2frdi9ge4RdNm3

Name:              hdvg-rootlv
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 0
Number of targets: 1
UUID: LVM-HdEgjZIOBlqvg5UJrJiJZMrD8amxrnKurdvdBAzDoZXbjVnQccm7Gk24F7or5Czw

2.3 dmsetup ls 命令

可以使用dmsetup ls命令列出映射的设备的设备名称列表。可以使用dmsetup ls --target target_type 命令列出至少有一个指定类型目标的设备。

以下示例演示了用来列出目前配置的映射设备名称的命令

[root@DM01 ~]# dmsetup ls
36001438005deddc80000400003340000p1     (253, 6)
36001438005deddc80000400003340000       (253, 2)
fenxi-2T        (253, 5)
fenxi-lvfenxi   (253, 8)
DMdisk03-1T     (253, 4)
hdvg-swaplv     (253, 1)
vgdm-lvznff2    (253, 10)
hdvg-rootlv     (253, 0)
vg_settlement-lv_settlement     (253, 7)
DMdisk02-2T     (253, 3)
vgdm-lvznff     (253, 9)

在多路径或者其他device mapper装置中堆叠的LVM配置文件可能过于复杂。dmsetup ls命令提供了一个--tree选项,可以树形形式显示设备间的相依性,这对梳理各逻辑设备和物理设备的关系很有帮助,如下

[root@DM01 ~]# dmsetup ls --tree
fenxi-lvfenxi (253:8)
 └─fenxi-2T (253:5)
    ├─ (65:80)
    ├─ (65:64)
    ├─ (65:48)
    └─ (65:32)
hdvg-swaplv (253:1)
 └─ (104:2)
vgdm-lvznff2 (253:10)
 └─DMdisk02-2T (253:3)
    ├─ (8:240)
    ├─ (8:224)
    ├─ (8:80)
    ├─ (8:16)
    ├─ (8:144)
    └─ (8:96)
hdvg-rootlv (253:0)
 └─ (104:2)
vg_settlement-lv_settlement (253:7)
 └─36001438005deddc80000400003340000p1 (253:6)
    └─36001438005deddc80000400003340000 (253:2)
       ├─ (8:208)
       ├─ (8:192)
       ├─ (8:64)
       ├─ (8:0)
       ├─ (8:128)
       └─ (8:48)
vgdm-lvznff (253:9)
 ├─DMdisk03-1T (253:4)
 │  ├─ (65:16)
 │  ├─ (65:0)
 │  ├─ (8:112)
 │  ├─ (8:32)
 │  ├─ (8:176)
 │  └─ (8:160)
 └─DMdisk02-2T (253:3)
    ├─ (8:240)
    ├─ (8:224)
    ├─ (8:80)
    ├─ (8:16)
    ├─ (8:144)
    └─ (8:96)

2.4 dmsetup status 命令

dmsetup status device 命令提供指定设备中每个目标的状态信息。如果没有指定设备名称,输出结果是所有目前配置的设备映射器设备信息。可以使用 dmsetup status --targettarget_type 命令列出那些至少有一个指定类型目标的设备。

以下示例演示了用来列出在所有目前配置映射设备中目标状态的命令

[root@DM01 ~]# dmsetup status
36001438005deddc80000400003340000p1: 0 4194298332 linear 
36001438005deddc80000400003340000: 0 4194304000 multipath 2 0 0 0 2 1 A 0 2 0 8:48 A 0 8:128 A 0 E 0 4 0 8:0 A 0 8:64 A 0 8:192 A 0 8:208 A 0 
fenxi-2T: 0 4194304000 multipath 2 0 0 0 2 1 A 0 2 0 65:32 A 0 65:48 A 0 E 0 2 0 65:64 A 0 65:80 A 0 
fenxi-lvfenxi: 0 3774873600 linear 
DMdisk03-1T: 0 2097152000 multipath 2 0 0 0 2 1 A 0 2 0 8:160 A 0 8:176 A 0 E 0 4 0 8:32 A 0 8:112 A 0 65:0 A 0 65:16 A 0 
hdvg-swaplv: 0 4063232 linear 
vgdm-lvznff2: 0 2097152000 linear 
hdvg-rootlv: 0 62914560 linear 
vg_settlement-lv_settlement: 0 4128768000 linear 
DMdisk02-2T: 0 4194304000 multipath 2 0 0 0 2 1 A 0 2 0 8:96 A 0 8:144 A 0 E 0 4 0 8:16 A 0 8:80 A 0 8:224 A 0 8:240 A 0 
vgdm-lvznff: 0 2096103424 linear 
vgdm-lvznff: 2096103424 1048576 linear 

2.5 dmsetup deps 命令

dmsetup deps device 命令为指定设备的映射列表参考的设备提供(major,minor)对列表。如果没有指定设备名称 , 则输出所有目前配置的设备映射器设备信息。 以下示例演示了用来列出所有目前配置的映射设备相依性的命令

[root@DM01 ~]# dmsetup deps
36001438005deddc80000400003340000p1: 1 dependencies     : (253, 2)
36001438005deddc80000400003340000: 6 dependencies       : (8, 208) (8, 192) (8, 64) (8, 0) (8, 128) (8, 48)
fenxi-2T: 4 dependencies        : (65, 80) (65, 64) (65, 48) (65, 32)
fenxi-lvfenxi: 1 dependencies   : (253, 5)
DMdisk03-1T: 6 dependencies     : (65, 16) (65, 0) (8, 112) (8, 32) (8, 176) (8, 160)
hdvg-swaplv: 1 dependencies     : (104, 2)
vgdm-lvznff2: 1 dependencies    : (253, 3)
hdvg-rootlv: 1 dependencies     : (104, 2)
vg_settlement-lv_settlement: 1 dependencies     : (253, 6)
DMdisk02-2T: 6 dependencies     : (8, 240) (8, 224) (8, 80) (8, 16) (8, 144) (8, 96)
vgdm-lvznff: 2 dependencies     : (253, 4) (253, 3)

2.6 dmsetup rename命令

该命令可以临时修改lvm逻辑卷的名字

  • 语法

    dmsetup rename device_name new_name

    改名之后只能使用new_name设备名

示例

[root@localhost ~]# dmsetup rename vg001-lvol test
[root@localhost ~]# dmsetup status 
test: 0 10477568 linear 
test: 10477568 10477568 linear 
test: 20955136 10477568 linear 
test: 31432704 10477568 linear 
rl-swap: 0 4194304 linear 
rl-root: 0 35643392 linear 

之后使用dmsetup remove删除该名之后的逻辑卷设备

[root@localhost ~]# dmsetup remove test
[root@localhost ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 1024M  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part 
  ├─rl-root 253:0    0   17G  0 lvm  /
  └─rl-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2     259:3    0   20G  0 disk 
├─nvme0n2p1 259:9    0    5G  0 part 
├─nvme0n2p2 259:10   0    5G  0 part 
├─nvme0n2p3 259:11   0    5G  0 part 
├─nvme0n2p4 259:12   0    1K  0 part 
└─nvme0n2p5 259:13   0    5G  0 part 
[root@localhost ~]# lvscan
  inactive          '/dev/vg001/lvol' [19.98 GiB] inherit
  ACTIVE            '/dev/rl/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/rl/root' [<17.00 GiB] inherit

之后手动激活对应逻辑卷即可,激活之后可以直接使用该设备

[root@localhost ~]# lvchange -a y vg001/lvol
[root@localhost ~]# lvs
  LV   VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rl    -wi-ao---- <17.00g                                                    
  swap rl    -wi-ao----   2.00g                                                    
  lvol vg001 -wi-a-----  19.98g                                                    
[root@localhost ~]# lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0             11:0    1 1024M  0 rom  
nvme0n1        259:0    0   20G  0 disk 
├─nvme0n1p1    259:1    0    1G  0 part /boot
└─nvme0n1p2    259:2    0   19G  0 part 
  ├─rl-root    253:0    0   17G  0 lvm  /
  └─rl-swap    253:1    0    2G  0 lvm  [SWAP]
nvme0n2        259:3    0   20G  0 disk 
├─nvme0n2p1    259:9    0    5G  0 part 
│ └─vg001-lvol 253:2    0   20G  0 lvm  
├─nvme0n2p2    259:10   0    5G  0 part 
│ └─vg001-lvol 253:2    0   20G  0 lvm  
├─nvme0n2p3    259:11   0    5G  0 part 
│ └─vg001-lvol 253:2    0   20G  0 lvm  
├─nvme0n2p4    259:12   0    1K  0 part 
└─nvme0n2p5    259:13   0    5G  0 part 
  └─vg001-lvol 253:2    0   20G  0 lvm  


熊熊