因为原来是1T的机械硬盘,实际占用空间不多。所以打算换成容量小的固态硬盘,或者镜像虚拟化云化改造,虚拟磁盘小。
同时为了方便后续扩容,所以将原来直接挂载分区的方式变更为使用LVM卷。
原始环境:1T MBR硬盘、CentOS7.7.1908、直接挂载sda3到根目录、sda3为xfs格式分区。

一、准备工作

准备好相同版本的CentOS安装光盘
安装好相关的备份还原支持工具

yum install -y xfsdump dump
uname -r # 记住系统内核版本号,后续可能会用到

二、备份/dev/sda3根目录分区

xfsdump -L CentOS7.7  -M rootfs  -f /root/CentOS7-rootfs.dump /dev/sda3
# -L:对文件系统进行简易的说明;-M:对存储媒介进行简易的说明。
# 如果是ext4格式分区,可用:dump -0f /root/CentOS7-rootfs.dump /

备份完成后,将备份好的CentOS7-rootfs.dump文件取出来到其他地方

三、卸载原磁盘,装载新磁盘,并从CentOS安装盘启动

配置好UEFI引导,并使用EFI启动系统安装,正常安装相同版本的CentOS系统
在磁盘分区中创建LVM卷,并调整好所需的分区,需注意分区格式保存原磁盘的格式


可选继续安装完成,安装完成后,某些配置可能会被还原初始状态(如firewalld规则,一些服务启停状态)后续步骤参考步骤四
或者安装开始后,直接关机(利用安装光盘才创建分区表),后续步骤参考步骤五

四、进入新安装好的CentOS系统,还原镜像到新磁盘(完成了系统安装)

先把之前备份的CentOS7-rootfs.dump文件传回到需要还原的机器中

xfsrestore -f  /root/CentOS7-rootfs.dump  /
# 如果是ext4格式分区,可用:restore -rf /root/CentOS7-rootfs.dump

修改/etc/fstab中的磁盘UUID号

blkid          # 获取磁盘的UUID
vi /etc/fstab          # 修改/etc/fstab中的UUID号

完成后,即可重启生效,完成迁移

五、从CentOS安装盘启动,进入救援模式(未完成了系统安装)

根据原盘分区格式,格式化分区

mkfs.vfat /dev/sda1      # 格式化efi引导分区
mkfs.xfs /dev/sda2      # 格式化boot分区
mkfs.xfs /dev/centos/root      # 格式化根目录分区
mkswap  /dev/centos/swap      # 格式化swap交换分区

将镜像文件存到一个中转磁盘dev/vda内并挂载,还原镜像到新磁盘

mkdir /centos-root /sda1 /sda2 /dump-data
mount /dev/vda /dump-data
mount /dev/sda1 /sda1
mount /dev/sda2 /sda2
mount /dev/centos/root /centos-root
xfsrestore -f /dump-data/centos-root.dump /centos-root            # 使用xfsrestore还原根目录镜像到新磁盘

修改fstab文件磁盘标识UUID

blkid           # 获取磁盘的UUID
vi /centos-root/etc/fstab          # 对应修改然后保存

安装kernel内核(如果不是同版本的安装盘,同到互联网下载原版本的kernel内核rpm安装包存到中转磁盘)

rpm -ivh /run/install/repo/Packages/kernel-3.10.0-1160.el7.x86_64.rpm --root=/centos-root/ --force
# rpm -ivh /dump-data/kernel-3.10.0-1160.el7.x86_64.rpm --root=/centos-root/ --force

六、修复系统引导

#CD下的救援模式SHELL更新方法:
chroot /centos-root
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg        #BIOS引导
grub2-mkconfig -o /boot/EFI/grub2/grub.cfg       #UEFI引导
grub2-mkconfig -o /sda2/boot/grub/grub.cfg        #BIOS引导
grub2-mkconfig -o /sda1/EFI/centos/grub.cfg       #UEFI引导
#进入系统后的SHELL更新方法:
grub2-mkconfig -o /boot/grub/grub.cfg                  #BIOS引导
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg       #UEFI引导

七、扫尾工作,处理网卡UUID问题

移除中转磁盘,调整系统引导方式。
开机后发现网卡UUID有变更,对应修改即可。

nmcli c s          # 查看网卡的信息
sed -i -e '/HWADDR/d' -e '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-{eth,enp,eno}*          # 删除原UUID
nmcli c m eth0 c.autoconnect yes          # 让nmcli补全UUID
systemctl restart network