CentOS7系统迁移到新硬盘

admin2023-01-14  175

自己闲置的笔记本安装了centos7.3,配置好了一些环境。现在想给笔记本的光驱改成硬盘位,添加一块硬盘。把新的硬盘做为系统盘,原来的硬盘做为数据盘。如果是在当前的硬盘上备份或还原系统还是很简单的,这样的教程之前也有收集。

 

现在是要把系统备份之后,弄到新的硬盘上恢复,这就涉及到系统迁移的问题。

 

首先来捋一捋思路。

 

原硬盘称为A盘,新硬盘称为B盘。

 

A盘装系的时候是用U盘引导安装的,在GUI界面下安装,不知道是用的MBR启动的还是EFI启动的。

 

通过df -h命令查看磁盘挂载情况,没有efi分区,说明是通过MBR启动的。

 

这样的情况只要直接打包根分区即可。通过度娘查到大佬的教程,推荐在备份系统前清空日志。

 

清空日志的操作步骤:

cd /var/log/

find . -type f | xargs rm -f

 

关闭selinux:

sed -i '/^SELINUX=/cSELINUX=disabled' /mnt/etc/selinux/config

 

然后就直接打包根分区:

tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system /

 

如果是EFI启动的话,还需要把EFI分区一起打包:

假设 efi 分区挂载在 /boot/efi 下

tar zcpf /centos7.tgz --exclude=/centos7.tgz --one-file-system / /boot/efi

 

对比之前收集的教程中打包的命令:

tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=backup.tgz /

 

还是有些不同的,一个是tar的参数不同。有大佬只用了zcpf四个参数,有大佬用了cvpzf五个参数。

 

通过tar --help命令查看到这些参数的意义:

c:创建一个新归档

p:解压文件权限信息,用大佬的话来解释就是:保持权限(保留所有东西原来的权限)

v:详细地列出处理的文件

z:通过gzip压缩

f:使用归档文件或 ARCHIVE 设备

 

还有一个是有没有把proc、lost+found、mnt、sys等等目录除外。这个--one-file-system是不是就是把这些目录除外了?

 

通过度娘查询资料,知道了--one-file-system是什么意思。

--one-file-system 选项的含义:

复制文件或目录存放的文件系统必须和tar命令当前执行的文件系统相同,否则不执行;

也就是说,不处理其他分区的文件。(可忽略mount挂载分区的问题)

 

如果不使用--one-file-system选项,就可以手动排除不需要备份的文件系统。

 

也就是说可以用--one-file-system选项自动的排除一些文件系统,不使用--one-file-system选项的话,就需要手动指定要排除的文件系统。

 

打包好之后,就要把打包好的文件复制到新的硬盘中,再到新的硬盘中进行系统恢复,或者在备份的时候就直接将文件备份到挂载好的新硬盘中。

 

如果是把文件直接备份到新硬盘中的话,首先要对新硬盘进行处理,如果是备份好之后再复制到新硬盘中的话,也同样要对新硬盘进行处理。

 

所以,最好就是先把新硬盘处理好,分好区,格式化,挂载。

 

硬盘分区:

假设 /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盘的位置,将A盘接到光驱改的硬盘位。

 

在把A盘接到光驱位的时候,应该要先格式化,防止和B盘冲突,无法启动系统。

转载请注明原文地址:http://www.198484.com/?read-76.html
0

最新回复(0)