--- title: "CentOS7 系统盘迁移" date: 2019-10-30T01:03:45+08:00 lastmod: 2019-10-30T01:03:45+08:00 keywords: [] tags: ["centos", "系统", "迁移"] categories: ["os"] --- # 环境 - 两台服务器(A,B) - A 已安装好 CentOS7,且已**关闭 selinux** - B 裸机,待安装操作系统 # 打包根分区 - 从 B 上拆下系统硬盘,接在 A 上,启动 A - 清空日志(推荐) ```bash cd /var/log/ find . -type f | xargs rm -f ``` - 关闭 selinux ```bash sed -i '/^SELINUX=/cSELINUX=disabled' /mnt/etc/selinux/config ``` - 如果 A 是 MBR 启动,则直接打包根分区 ```bash tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system / ``` - 如果 A 是 EFI 启动,则需打包根分区和 EFI 分区 ```bash # 假设 efi 分区挂载在 /boot/efi 下 tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system / /boot/efi ``` # 硬盘分区 - 假设 /dev/sdb 是 B 的系统硬盘 - MBR 启动时,分区表是 dos,只分一个根分区即可 - EFI 启动时,分区表是 gpt,需要分一个 512MB 的 **efi 分区**和一个根分区 ```bash fdisk /dev/sdb # n 创建新分区 # t 指定分区类型 1 (即 efi system) ``` # 格式化 - MBR 启动 ```bash mkfs.xfs /dev/sdb1 ``` - EFI 启动 ```bash mkfs.vfat -F32 /dev/sdb1 mkfs.xfs /dev/sdb2 ``` # 挂载硬盘 - MBR 启动 ```bash mount /dev/sdb1 /mnt/ ``` - EFI 启动 ```bash mount /dev/sdb2 /mnt/ mkdir -p /mnt/boot/efi mount /dev/sdb1 /mnt/boot/efi/ ``` # 部署操作系统 - 解压之前打包的 /centos7.tgz ```bash tar zxpf /centos7.tgz -C /mnt/ ``` - 替换 fstab 中的 uuid 信息 ```bash # 获取 B 的系统硬盘分区的 uuid 信息 lsblk -f /dev/sdb # 把结果中的 uuid 替换到 /mnt/etc/fstab 中的相应位置 ``` - 如果打包时未关闭 selinux,此时可以修改配置文件 ```bash sed -i '/^SELINUX=/cSELINUX=disabled' /mnt/etc/selinux/config ``` - 删除网卡硬件标识(推荐) ```bash sed -i -e '/HWADDR/d' -e '/UUID/d' /mnt/etc/sysconfig/network-scripts/ifcfg-{eth,enp}* ``` - 删除 ssh 主机密钥(推荐) ```bash rm -rf /etc/ssh/ssh_host_* ``` # 部署 grub - MBR 启动 ```bash mount --bind /dev/ /mnt/dev/ mount -t proc procfs /mnt/proc/ mount -t sysfs sysfs /mnt/sys/ chroot /mnt grub2-install /dev/sdb grub2-mkconfig -o /boot/grub2/grub.cfg exit ``` - EFI 启动 ```bash mount --bind /dev/ /mnt/dev/ mount -t proc procfs /mnt/proc/ mount -t sysfs sysfs /mnt/sys/ mount -t efivarfs efivarfs /target/sys/firmware/efi/efivars/ chroot /mnt efibootmgr -c -p 1 -d /dev/sdb -L "centos" grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg exit ``` # 启动操作系统 - 卸载 B 的系统硬盘 ```bash umount -R /mnt ``` - 关闭 A,拆下刚部署好操作系统的硬盘,接回 B 中 - 启动 B,刚部署的 CentOS7 正常启动 # 参考 - [https://wiki.centos.org/zh/HowTos/ManualInstall?highlight=%28grub2-install%29](https://wiki.centos.org/zh/HowTos/ManualInstall?highlight=%28grub2-install%29)