必须在live环境或rescue模式下,新建lvm结构、rsync迁移系统、重装grub并更新fstab,最后从新lvm卷启动验证。

如果当前系统根目录不是 LVM 管理的,但你想把它迁移到 LVM 卷上(比如为了后续灵活扩容、快照或跨盘管理),这属于“非 LVM 到 LVM”的迁移,不能靠 lvextend 直接操作,必须重建逻辑结构并复制数据。整个过程本质是“新建 LVM 根 + 迁移系统 + 切换启动”,需谨慎操作,且必须在 Live 环境或 rescue 模式下进行。
确认前提与准备
迁移前务必确认以下几点:
- 系统当前未使用 LVM(
lsblk输出中无LVM类型,df -h显示根分区为/dev/sda1或类似裸设备) - 有额外磁盘空间(可是一块空硬盘,也可从现有磁盘划出未分配分区)
- 已备份关键数据(/etc、/home、数据库等)
- 准备一个支持 LVM 的 Linux Live 环境(如 Rocky Linux / CentOS / Ubuntu Live USB)
创建目标 LVM 结构
进入 Live 环境后,用命令行构建新 LVM 根环境:
- 用
fdisk或parted在目标磁盘(如/dev/sdb)上创建一个 Linux LVM 类型分区(ID8e),例如/dev/sdb1 - 初始化物理卷:
pvcreate /dev/sdb1 - 创建卷组(建议命名清晰,如
vg0):vgcreate vg0 /dev/sdb1 - 创建逻辑卷(大小建议 ≥ 当前根分区已用空间 ×1.3):
lvcreate -L 30G -n lv_root vg0 - 格式化:
mkfs.ext4 /dev/vg0/lv_root(若原系统为 xfs,请用mkfs.xfs)
复制系统并配置启动
挂载并同步原系统到新 LVM 卷:
- 挂载原根分区(假设为
/dev/sda2)到/mnt/old,新 LVM 卷到/mnt/new - 用
rsync全量复制(保留权限、属性、软硬链接):rsync -aAXH --exclude='/proc' --exclude='/sys' --exclude='/dev' --exclude='/run' --exclude='/boot' --exclude='/mnt' --exclude='/media' /mnt/old/ /mnt/new/ - 挂载必要伪文件系统:
mount --bind /proc /mnt/new/procmount --bind /sys /mnt/new/sysmount --bind /dev /mnt/new/devmount --bind /run /mnt/new/run - chroot 进入新环境:
chroot /mnt/new - 重新安装 GRUB(指定目标磁盘,如
/dev/sdb):grub2-install /dev/sdbgrub2-mkconfig -o /boot/grub2/grub.cfg - 编辑
/etc/fstab:将根挂载项改为新 LV,例如:/dev/vg0/lv_root / ext4 defaults 1 1
切换启动并验证
退出 chroot,重启前做最后检查:
- 确认新卷的
/boot内容完整(若新 LV 不含/boot,需保留原/dev/sda1并在 fstab 中单独挂载) - 若原
/boot在独立分区,确保 GRUB 安装时已识别该分区,并在 grub.cfg 中正确引用内核路径 - 重启,从新磁盘(
/dev/sdb)启动;成功后运行lsblk和df -h确认根分区已是 LVM 逻辑卷 - 验证服务、网络、用户登录是否正常;确认
lvs和vgs命令可列出新卷组和逻辑卷
完成后,旧根分区可留作备份,或清空后加入同一卷组用于扩展其他 LV。迁移本身不改变系统功能,但赋予了 LVM 带来的全部弹性能力——比如今后只需几条命令就能在线扩大根分区。











