迁徙逻辑卷是通过将分区从一个 PV(物理卷) 挪动至另一个 PV。迁徙逻辑卷是替换磁盘最平安的办法之一。将要执行迁徙的办法是应用 pvmove 操作。假如在咱们的设置中,只有一个磁盘 /dev/sda1,大小为 20gb。此时 /dev/sda1 处于故障正告状态,须要更换新的等同容量的硬盘。让咱们应用 pvmove 选项将分区挪动到一个新的 PV 中。应用 pvmove 命令是通过将底层旧物理卷替换为新的物理卷。此外,应用文件系统的用户将不会留神到在底层产生的更改。为什么须要迁徙逻辑卷?1. 更换故障磁盘。2. 将现有的磁盘替换为较大的磁盘。创立 PV、VG 和 LV# 创立 PV
[root@localhost ~]# pvcreate /dev/sda1
Physical volume “/dev/sda1” successfully created.
创立 VG
[root@localhost ~]# vgcreate vg_data /dev/sda1
Volume group “vg_data” successfully created
创立 LV,应用所有空间。
[root@localhost ~]# lvcreate -l 100%FREE -n lv_data vg_data
Logical volume “lv_data” created.
创立实现之后格式化并挂载文件系统。[root@localhost ~]# mkfs.xfs /dev/vg
[root@localhost ~]# mkfs.xfs /dev/vg_data/lv_data
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/vg_data/lv_data /data
列呈现有的逻辑卷上面列出逻辑卷使用率:[root@localhost ~]# df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data 20G 2.2G 18G 11% /data
上面列出所有的物理卷、卷组、逻辑卷:[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 cl lvm2 a– <19.00g <2.00g
/dev/sda1 vg_data lvm2 a– <20.00g 0
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz–n- <19.00g <2.00g
vg_data 1 1 0 wz–n- <20.00g 0
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao—- 15.00g
swap cl -wi-ao—- 2.00g
lv_data vg_data -wi-a—– <20.00g
上面测验一下逻辑卷应用到的磁盘是哪块,应用 lvs 命令并应用 -o +devices 选项,能够显示逻辑卷应用到的是哪块磁盘:[root@localhost ~]# lvs -o +devices /dev/vg_data/lv_data
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
lv_data vg_data -wi-ao—- <20.00g /dev/sda1(0)
应用 dmsetup 命令获取逻辑卷的主编号和次编号。[root@localhost ~]# dmsetup deps /dev/vg_data/lv_data
1 dependencies : (8, 1)
记住主编号和次编号。一旦咱们将故障 PV 替换为另一个 PV,它将扭转。开始迁徙逻辑卷能够通过运行 pvmove 命令来执行逻辑卷的迁徙。上面首先开始创立一个新的物理卷:[root@localhost ~]# pvcreate /dev/sdb1
Physical volume “/dev/sdb1” successfully created.
而后将新创建的物理卷增加到已存在的卷组中,上面图中可看到 vg_data 卷组容量减少了:[root@localhost ~]# vgextend vg_data /dev/sdb1
Volume group “vg_data” successfully extended
应用 pvs 命令增加 -o +pv_used 选项能够显示物理卷的应用状况:[root@localhost ~]# pvs -o +pv_used
PV VG Fmt Attr PSize PFree Used
/dev/nvme0n1p2 cl lvm2 a– <19.00g <2.00g 17.00g
/dev/sda1 vg_data lvm2 a– <20.00g 0 <20.00g
/dev/sdb1 vg_data lvm2 a– <20.00g <20.00g 0
上面就能够应用 pvmove 命令迁徙逻辑卷啦,上面是用法:# pvmove -n
上面是罕用选项解释:-n 指定逻辑卷的名称。-b 能够增加 - b 选项,意思是在后盾运行,如果容量大,文件多能够配合 screen 在后盾运行。-i 5 示意每 5 秒打印一次状态。上面将逻辑卷 lv_data 从 /dev/sda1 迁徙到 /dev/sdb1 中:[root@localhost ~]# pvmove -n /dev/vg_data/lv_data /dev/sda1 /dev/sdb1
/dev/sda1: Moved: 1.29%
/dev/sda1: Moved: 39.99%
/dev/sda1: Moved: 73.90%
/dev/sda1: Moved: 100.00%
迁徙实现后,运行命令 lvs -o +devices。在这里,咱们看到旧磁盘 /dev/sda1 曾经被 /dev/sdb1 替换了。[root@localhost ~]# lvs -a -o +devices /dev/vg_data/lv_data
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
lv_data vg_data -wi-ao—- <20.00g /dev/sdb1(0)
运行 pvs -o +pv_used 命令查看可看到,/dev/sda1 应用空间为 0。/dev/sdb1 的应用空间用满了。[root@localhost ~]# pvs -o +pv_used
PV VG Fmt Attr PSize PFree Used
/dev/nvme0n1p2 cl lvm2 a– <19.00g <2.00g 17.00g
/dev/sda1 vg_data lvm2 a– <20.00g <20.00g 0
/dev/sdb1 vg_data lvm2 a– <20.00g 0 <20.00g
与此同时咱们检查一下 /data 目录中的内容依然保留,逻辑卷依然挂载着。这就阐明迁徙逻辑卷的时候不影响用户应用该逻辑卷。[root@localhost ~]# df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data 20G 2.2G 18G 11% /data
[root@localhost ~]# ll /data/
total 2097152
-rw-r–r– 1 root root 2147483648 Apr 26 15:17 disk.img
移除故障磁盘上面咱们能够应用 vgreduce 命令将故障的物理卷移除。[root@localhost ~]# vgreduce vg_data /dev/sda1
Removed “/dev/sda1” from volume group “vg_data”
移除故障的物理卷:[root@localhost ~]# pvremove /dev/sda1
Labels on physical volume “/dev/sda1” successfully wiped.
上面应用 dmsetup 命令查看逻辑卷的主编号和次编号是否变了:[root@localhost ~]# dmsetup deps /dev/vg_data/lv_data
1 dependencies : (8, 17)
就这样,咱们曾经实现迁徙逻辑卷了。总结本文应用了 pvmove 命令从逻辑卷迁徙数据而无需停机。