www.colben.cn/content/post/centos7-migrate.md
2021-11-14 15:52:46 +08:00

3.2 KiB
Raw Blame History

title, date, lastmod, keywords, tags, categories
title date lastmod keywords tags categories
CentOS7 系统盘迁移 2019-10-30T01:03:45+08:00 2019-10-30T01:03:45+08:00
centos
系统
迁移
os

环境

  • 两台服务器(A,B)
  • A 已安装好 CentOS7且已关闭 selinux
  • B 裸机,待安装操作系统

打包根分区

  • 从 B 上拆下系统硬盘,接在 A 上,启动 A
  • 清空日志(推荐)
    cd /var/log/
    find . -type f | xargs rm -f
    
  • 关闭 selinux
    sed -i '/^SELINUX=/cSELINUX=disabled' /mnt/etc/selinux/config
    
  • 如果 A 是 MBR 启动,则直接打包根分区
    tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system /
    
  • 如果 A 是 EFI 启动,则需打包根分区和 EFI 分区
    # 假设 efi 分区挂载在 /boot/efi 下
    tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system / /boot/efi
    

硬盘分区

  • 假设 /dev/sdb 是 B 的系统硬盘
  • MBR 启动时,分区表是 dos只分一个根分区即可
  • EFI 启动时,分区表是 gpt需要分一个 512MB 的 efi 分区和一个根分区
    fdisk /dev/sdb
    # n 创建新分区
    # t 指定分区类型 1 (即 efi system
    

格式化

  • MBR 启动
    mkfs.xfs /dev/sdb1
    
  • EFI 启动
    mkfs.vfat -F32 /dev/sdb1
    mkfs.xfs /dev/sdb2
    

挂载硬盘

  • MBR 启动
    mount /dev/sdb1 /mnt/
    
  • EFI 启动
    mount /dev/sdb2 /mnt/
    mkdir -p /mnt/boot/efi
    mount /dev/sdb1 /mnt/boot/efi/
    

部署操作系统

  • 解压之前打包的 /centos7.tgz
    tar zxpf /centos7.tgz -C /mnt/
    
  • 替换 fstab 中的 uuid 信息
    # 获取 B 的系统硬盘分区的 uuid 信息
    lsblk -f /dev/sdb
    # 把结果中的 uuid 替换到 /mnt/etc/fstab 中的相应位置
    
  • 如果打包时未关闭 selinux此时可以修改配置文件
    sed -i '/^SELINUX=/cSELINUX=disabled' /mnt/etc/selinux/config
    
  • 删除网卡硬件标识(推荐)
    sed -i -e '/HWADDR/d' -e '/UUID/d' /mnt/etc/sysconfig/network-scripts/ifcfg-{eth,enp}*
    
  • 删除 ssh 主机密钥(推荐)
    rm -rf /etc/ssh/ssh_host_*
    

部署 grub

  • MBR 启动
    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 启动
    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 的系统硬盘
    umount -R /mnt
    
  • 关闭 A拆下刚部署好操作系统的硬盘接回 B 中
  • 启动 B刚部署的 CentOS7 正常启动

参考