You've already forked www.colben.cn
update
This commit is contained in:
126
content/post/centos7-migrate.md
Normal file
126
content/post/centos7-migrate.md
Normal file
@@ -0,0 +1,126 @@
|
||||
---
|
||||
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)
|
||||
|
Reference in New Issue
Block a user