迁移逻辑卷就是将分区从一个PV(物理卷)移动到另一个PV。迁移逻辑卷是更换磁盘最安全的方法之一。执行迁移的方式是使用pvmove操作。假设在我们的设置中,只有一个磁盘/dev/sda1,大小为20gb。此时/dev/sda1处于故障告警状态,需要更换一块相同容量的新硬盘。让我们使用pvmove选项将分区移动到一个新的PV中。通过用新物理卷替换底层旧物理卷来使用pvmove命令。此外,使用文件系统的用户不会注意到引擎盖下发生的变化。为什么需要迁移逻辑卷?1.更换故障磁盘。2.用更大的磁盘替换现有磁盘。CreatePV,VGandLV#CreatePV[root@localhost~]#pvcreate/dev/sda1成功创建物理卷“/dev/sda1”。CreateVG[root@localhost~]#vgcreatevg_data/dev/sda1成功创建卷组“vg_data”以创建LV,使用所有空间。[root@localhost~]#lvcreate-l100%FREE-nlv_datavg_data已创建逻辑卷“lv_data”。创建后格式化并挂载文件系统。[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/dataFilesystemSizeUsedAvailUse%Mountedon/dev/mapper/vg_data-lv_data20G2.2G18G11%/data列出下面所有的物理卷、卷组和逻辑卷:[root@localhost~]#pvsPVVGFmtAttrPSizePFree/dev/nvme0n1p2cllvm2a--<19.00g<2.00g/dev/sda1vg_datalvm2a--<20.00g0[root@localhost~]#vgsVG#PV#LV#SNAttrVSizeVFreecl120wz--n-<19.00g<2.00gvg_data110wz--n-<20.00g0[root@localhost~]#lvsLVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvertrootcl-wi-ao----15.00gswapcl-wi-ao----2.00克lv_datavg_data-wi-a-----<20.00g让我们检查一下逻辑卷使用了哪个磁盘。使用lvs命令并使用-o+devices选项显示逻辑卷使用了哪个磁盘:[root@localhost~]#lvs-o+devices/dev/vg_data/lv_dataLVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvertDeviceslv_datavg_data-wi-ao----<20.00g/dev/sda1(0)使用dmsetup命令获取逻辑卷的主次编号[root@localhost~]#dmsetupdeps/dev/vg_data/lv_data1dependencies:(8,1)记住主次编号。一旦我们用另一个PV替换有故障的PV,它就会改变。开始迁移逻辑卷可以通过运行pvmove命令来执行逻辑卷的迁移。首先开始创建新的物理卷:[root@localhost~]#pvcreate/dev/sdb1成功创建物理卷“/dev/sdb1”。然后将新建的物理卷添加到已有的卷组中,下图可以看出vg_data卷组的容量增加了:[root@localhost~]#vgextendvg_data/dev/sdb1卷组“vg_data”成功扩展使用pvs命令添加-o+pv_used选项显示物理卷的使用情况:[root@localhost~]#pvs-o+pv_usedPVVGFmtAttrPSizePFreeUsed/dev/nvme0n1p2cllvm2a--<19.00g<2.00g17.00g/dev/sda1vg_datalvm2a--<20.00g0<20.00g/dev/sdb1vg_datalvm2a--<20.00g<20.00g0现在可以使用pvmove命令迁移逻辑卷,下面是用法:#pvmove-n下面是常用选项的解释:-n指定逻辑卷的名称。-b可以加上-b选项,表示后台运行。如果容量大,文件多,可以后台带屏运行。-i5表示每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_dataLVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvertDeviceslv_datavg_data-wi-ao----<20.00g/dev/sdb1(0)运行pvs-o+pv_used命令,看到/dev/sda1使用的空间为0,/dev/sdb1空间已满。[root@localhost~]#pvs-o+pv_usedPVVGFmtAttrPSizePFreeUsed/dev/nvme0n1p2cllvm2a--<19.00g<2.00g17.00g/dev/sda1vg_datalvm2a--<20.00g<20.00g0/dev/sdb1vg_datalvm2a--<20.00g0<20.00g同时我们检查/data目录下的内容是否还保留,逻辑卷还是挂载的。这意味着逻辑卷的迁移不会影响用户对逻辑卷的使用。[root@localhost~]#df-h/dataFilesystemSizeUsedAvailUse%Mountedon/dev/mapper/vg_data-lv_data20G2.2G18G11%/data[root@localhost~]#ll/data/total2097152-rw-r--r--1rootroot2147483648Apr2615:17disk.img移除故障磁盘接下来,我们可以使用vgreduce命令移除故障物理卷。[root@localhost~]#vgreducevg_data/dev/sda1Removed"/dev/sda1"fromvolumegroup"vg_data"移除故障的物理卷:[root@localhost~]#pvremove/dev/sda1Labelsonphysicalvolume"/dev/sda1”成功擦除。接下来使用dmsetup命令查看逻辑卷的major和minornumber是否发生变化:[root@localhost~]#dmsetupdeps/dev/vg_data/lv_data1dependencies:(8,17)就这样,我们就完成了迁移逻辑卷。总结本文使用pvmove命令在不停机的情况下从逻辑卷迁移数据。
