温馨提示×

Centos怎么替换系统分区

小樊
45
2026-08-19 15:03:16
栏目: 智能运维

CentOS 中“替换系统分区”通常指 更换 /(根分区)所在的磁盘或分区,比如:

  • 换硬盘
  • 根分区空间不够,迁移到新分区
  • 从 MBR 改为 GPT / 换文件系统

下面按 最常见、最安全的做法 给你一个完整思路。⚠️ 操作有风险,请务必先备份数据。


一、常见替换系统分区的方式

✅ 推荐方式(最安全)

新盘 / 新分区 → 复制系统 → 修改启动

流程:

  1. 准备新分区
  2. 复制系统文件
  3. 修改 /etc/fstab
  4. 重新安装 GRUB
  5. 重启验证

二、示例场景

假设:

  • 当前系统盘:/dev/sda
  • 新系统分区:/dev/sdb1
  • 挂载点:/mnt/newroot

三、操作步骤(CentOS 7/8 通用)

1️⃣ 进入救援模式(强烈建议)

避免系统运行中复制文件出错

systemctl set-default multi-user.target
reboot
# 或直接使用 CentOS 安装盘 → Rescue Mode

2️⃣ 对新磁盘分区并格式化

fdisk /dev/sdb
# 或 parted / gdisk

mkfs.xfs /dev/sdb1     # CentOS 7/8 默认 xfs
# 或 mkfs.ext4

3️⃣ 挂载新分区

mount /dev/sdb1 /mnt/newroot

4️⃣ 复制系统文件(关键)

推荐 rsync(比 cp 更安全)

rsync -avxHPS / /mnt/newroot/

参数说明:

  • -a 保留权限
  • -x 不跨文件系统
  • -H 保留硬链接
  • -P 显示进度

⚠️ 不要复制 /proc /sys /dev 里的设备文件,rsync 会自动处理


5️⃣ 修改新系统的 fstab

blkid /dev/sdb1

记下 UUID,然后编辑:

vi /mnt/newroot/etc/fstab

示例:

UUID=xxxx-xxxx-xxxx   /   xfs   defaults   0 0

6️⃣ 重新安装 GRUB(非常重要)

CentOS 7 / 8(BIOS)

mount --bind /dev  /mnt/newroot/dev
mount --bind /proc /mnt/newroot/proc
mount --bind /sys  /mnt/newroot/sys

chroot /mnt/newroot

grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub2/grub.cfg

exit

UEFI 系统

mount /dev/sdb2 /mnt/newroot/boot/efi
grub2-install --target=x86_64-efi --efi-directory=/boot/efi

7️⃣ 设置启动顺序

reboot

进入 BIOS / UEFI 选择新盘启动


四、LVM 系统分区替换(常见)

如果是:

/dev/mapper/centos-root

方法 1:LVM 扩容(推荐)

pvcreate /dev/sdb
vgextend centos /dev/sdb
lvextend -l +100%FREE /dev/centos/root
xfs_growfs /

方法 2:迁移 LV

pvmove /dev/sda
vgreduce centos /dev/sda

五、常见错误 & 排查

❌ 启动卡在 dracut

原因:

  • fstab UUID 错误
  • 根分区没识别

解决:

dracut --force

❌ GRUB 进 rescue

set root=(hd0,msdos1)
linux /vmlinuz root=/dev/sdb1
initrd /initramfs
boot

六、总结

目的 推荐方案
换系统盘 rsync + grub2-install
根分区扩容 LVM
磁盘损坏 新盘迁移
生产环境 必须备份 + 救援模式

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(6 / 7 / 8 / Stream)
  • ✅ 是否使用 LVM
  • ✅ BIOS 还是 UEFI
  • ✅ 是 物理机 / VM / 云服务器

我可以给你 完全针对你环境的命令清单

0