LVM数据迁移核心是用pvmove将旧PV数据安全转移至新PV,保持LV结构不变。需先确认LVM状态、初始化新盘为PV并加入VG,再执行pvmove迁移,最后vgreduce和pvremove移除旧PV。

迁移 LVM 数据到新硬盘,核心是把数据从旧物理卷(PV)安全转移到新 PV,同时保持逻辑卷(LV)结构和数据完整性。整个过程不依赖停机,但需确保卷组(VG)有足够空闲空间或支持在线迁移,关键在于 pvmove 命令的正确使用。
确认当前 LVM 状态并准备新硬盘
先查看现有布局,明确要迁移的目标 PV 和 VG:
- 运行
sudo pvs查看所有物理卷及其所属卷组、使用情况 - 运行
sudo vgs和sudo lvs确认卷组名称、逻辑卷状态及是否处于激活状态 - 用
sudo fdisk -l或lsblk识别新硬盘设备名(如/dev/sdc),确保它未被分区或挂载 - 若新盘已有分区,用
fdisk /dev/sdc删除全部分区,并将分区类型设为8e(Linux LVM),或直接对整盘操作(如/dev/sdc而非/dev/sdc1)
初始化新硬盘为物理卷并加入卷组
新盘必须成为同一卷组的成员,才能接收旧 PV 上的数据:
- 执行
sudo pvcreate /dev/sdc将其初始化为 PV - 运行
sudo vgextend myvg /dev/sdc(将myvg替换为你的卷组名)把新 PV 加入卷组 - 再次执行
sudo pvs,确认新 PV 已显示在 VG 中且PFree列有可用空间
执行数据迁移:用 pvmove 安全转移数据块
pvmove 是 LVM 迁移的主力命令,它按 PE(Physical Extent)粒度把数据从源 PV 搬到卷组内其他空闲 PE 上——自动优先使用新加入的 PV:
- 最简方式:
sudo pvmove /dev/sdb(假设/dev/sdb是待迁移的旧 PV) - 迁移过程可中断、可恢复;运行中可用
sudo pvmove --abort中止,或sudo pvmove --resume继续 - 如需控制速度或避免影响业务 I/O,加限速参数:
sudo pvmove --limit 100 /dev/sdb(单位 KB/s) - 迁移完成后,
sudo pvs应显示该 PV 的PFree等于PSize,即已清空
从卷组中移除旧物理卷并清理
数据搬完后,旧 PV 就不再需要保留在 VG 中:
- 执行
sudo vgreduce myvg /dev/sdb将其从卷组中剔除 - 再运行
sudo pvremove /dev/sdb彻底清除 LVM 元数据(此时该盘可安全重分区或用于其他用途) - 最后验证:
sudo vgdisplay myvg中的Alloc PE应与迁移前一致,Free PE可能增加(因新盘容量更大)
整个流程不涉及文件系统层复制,也不需要解压/打包或修改 fstab,只要 VG 内有足够空间且新盘已加入,就能完成底层块级迁移。实际效果是:逻辑卷路径(如 /dev/myvg/rootlv)完全不变,应用无感知。


















