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

127 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)