CentOS7 系统盘迁移
最编程
2024-01-17 13:10:21
...
12.23 源创会 · 上海站,聊聊 LLM 基础设施
环境
- 两台服务器(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 正常启动
- 从 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 正常启动
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 正常启动
mount /dev/sdb1 /mnt/
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 正常启动
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
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 正常启动
上一篇: Linux命令之lsblk命令
推荐阅读
-
在 centos7 中添加新用户并授权
-
centos7 进入系统图形已盘旋或命令行提示开始切换根处理方法
-
Hyper-V Centos7 网络设置 虚拟机固定 IP
-
centos7 启动报错 Failed to mount /sysroot
-
CentOS7 网卡配置文件详细信息
-
[linux] centos7 关闭蜂鸣器声音
-
在 CentOS7 下通过 rpm 软件包将 openssl 升级到安全版本 1.1.1n
-
全面分析从 Unity 到虚幻的项目迁移过程
-
Centos7 升级 openssl 至 openssl1.1.1
-
DataKit 从 MySQL 迁移到 openGauss(顶部)