1、命令简介
pvmove:用于在物理卷(Physical Volumes, PVs)之间移动逻辑卷(Logical Volumes, LVs)的数据。允许在不中断系统操作的情况下动态地管理磁盘空间。
2、命令语法
pvmove [--abort] [--alloc AllocationPolicy] [-b|--background] [-d|--debug] [-h|--help] [-i|--interval Seconds] [-v|--verbose] [-n|--name LogicalVolume] [SourcePhysicalVolume[:PE[-PE]...] [DestinationPhysicalVolume[:PE[-PE]...]...]]
3、命令描述
pvmove
可以将已分配的物理区域 (PE) 从源物理卷 (SourcePhysicalVolume) 移动到一个或多个其他物理卷 (PV)。还可以选择指定一个源逻辑卷 (LogicalVolume),在这种情况下,只有该 LV 使用的区域才会被移动到目标物理卷 (DestinationPhysicalVolume(s)) 上的空闲(或指定的)区域。如果没有指定目标物理卷,则使用卷组的正常分配规则。
如果 pvmove
因任何原因被中断(例如机器崩溃),只需再次运行 pvmove 而不带任何物理卷参数,即可从上一个检查点重新启动任何正在进行的移动。或者,可以随时使用 pvmove --abort
在最后一个检查点中止它们。
可以同时运行多个 pvmove
,前提是它们正在从不同的源物理卷移动数据,但额外的 pvmove
将忽略任何正在更改的逻辑卷,因此某些数据可能无法移动。
pvmove 的工作原理如下:
创建一个临时“pvmove”逻辑卷,用于存储所有数据移动的详细信息。
根据命令行参数,在卷组中的每个逻辑卷中搜索需要移动的连续数据。对于找到的每一段数据,在 pvmove LV 的末尾添加一个新段。这个段的形式是一个临时镜像,用于将数据从原始位置复制到新分配的位置。原始 LV 被更新为使用 pvmove LV 中的新临时镜像段,而不是直接访问数据。更新磁盘上的卷组元数据。
激活 pvmove
逻辑卷的第一个段,并开始镜像数据的第一部分。每次只能镜像一个段,因为这通常更有效。
一个守护程序会以指定的间隔时间重复检查进度。当它检测到第一个临时镜像同步时,它会破坏该镜像,使只能使用该数据的新的位置,并写入一个检查点到磁盘上的卷组元数据中。然后它激活 pvmove LV 的下一个段的镜像。
当没有更多的段需要镜像时,临时逻辑卷被删除,卷组元数据被更新,使逻辑卷反映新的数据位置。
注意:这个新过程不能支持原始 LVM1 类型 的磁盘元数据。可以使用 vgconvert(8) 转换元数据。
4、命令选项
选项 | 描述 |
--abort | 中止所有正在进行的移动。 |
-b, --background | 在后台运行守护进程。 |
-i, --interval Seconds | 以百分比形式定期报告进度。 |
-n, --name LogicalVolume | 仅移动属于 LogicalVolume 的扩展, 而不是将 SourcePhysicalVolume 上的 所有分配的扩展移动到目的物理卷。 |
5、使用示例
1)中止正在进行的移动
pvmove --abort
命令将中止所有正在进行的 pvmove 操作。
2)在后台运行 pvmove
pvmove -b SourcePhysicalVolume DestinationPhysicalVolume
使用 -b
或 --background
标签将会在后台运行 pvmove
进程,移动 SourcePhysicalVolume 上的数据到 DestinationPhysicalVolume。
3)定期报告进度
pvmove -i 60 SourcePhysicalVolume DestinationPhysicalVolume
将每60秒报告一次 pvmove
操作的进度百分比,从 SourcePhysicalVolume 移动数据到 DestinationPhysicalVolume。
4)仅移动特定逻辑卷的扩展
pvmove -n LogicalVolumeName SourcePhysicalVolume DestinationPhysicalVolume