lvm迁移核心是先建lvm结构、再安全搬运数据、最后切换挂载点,全程不改动原分区直至新路径验证可用;需停服务、验一致性、备数据、配fstab并测试。

将数据从普通分区迁移到 LVM 卷,核心是“先建好 LVM 结构,再安全搬运数据,最后切换挂载点”,整个过程不改动原分区数据,直到确认新路径完全可用。关键在于避免直接覆盖、确保服务停用、验证一致性。
准备阶段:确认环境与备份
确保目标普通分区(如 /dev/sdb1)已卸载,且其挂载目录(如 /opt/data)当前无进程占用:
- 运行 lsof +D /opt/data 或 fuser -v /opt/data 检查并停止相关服务
- 用 df -hT 和 lsblk 确认源分区大小和文件系统类型(如 ext4 或 xfs)
- 对源数据执行完整备份:rsync -aHAXx --delete /opt/data/ /backup/opt-data-$(date +%F)/
- 确认系统已安装 lvm2:rpm -q lvm2(RHEL/CentOS)或 dpkg -l | grep lvm2(Debian/Ubuntu)
构建目标 LVM 存储结构
在空闲磁盘(如 /dev/vdb)上创建 LVM 层级,或复用已有卷组:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 用 fdisk /dev/vdb 新建一个分区(如 /dev/vdb1),并将类型设为 8e(Linux LVM)
- 执行 partprobe /dev/vdb 刷新内核分区表
- 初始化物理卷:pvcreate /dev/vdb1
- 加入现有卷组(如 vg_root):vgextend vg_root /dev/vdb1;或新建卷组:vgcreate myvg /dev/vdb1
- 创建逻辑卷(大小建议 ≥ 源分区已用空间):lvcreate -L 50G -n datalv myvg
- 格式化为同类型文件系统:mkfs.ext4 /dev/myvg/datalv(若源为 ext4)
迁移数据并切换挂载
使用 rsync 进行增量安全同步,保留权限、属主、时间戳等属性:
- 临时挂载新 LV:mkdir /mnt/newdata && mount /dev/myvg/datalv /mnt/newdata
- 同步数据:rsync -aHAXx --progress /opt/data/ /mnt/newdata/
- 再次运行 rsync(不加 --delete)比对内容:rsync -avn /opt/data/ /mnt/newdata/,输出应为空表示一致
- 卸载原分区:umount /opt/data,修改 /etc/fstab:把原 /dev/sdb1 行注释掉,新增一行:
# /dev/sdb1 /opt/data ext4 defaults 0 0
/dev/myvg/datalv /opt/data ext4 defaults 0 0 - 执行 mount -a 测试 fstab 配置,再检查 df -h /opt/data 是否指向新 LV
收尾与验证
确认服务可正常读写新路径后,再清理旧分区(非必须,建议保留数日作为回退保障):
- 重启相关服务,或重新登录验证应用行为是否正常
- 检查日志:journalctl -u your-service-name -n 50
- 如需释放旧分区空间,可在确认无误后:fdisk /dev/sdb 删除 /dev/sdb1,再 pvcreate /dev/sdb1 && vgextend myvg /dev/sdb1 将其也纳入 LVM










