最近有一个项目,客户要做升级,
因为centos 要变成滚动更新,所以逼不得已,只能把现在的centos 8.2升级成redhat 8
客户主机是DELL PowerEdge R440刀片机,有Raid,4.4T
但买的时候没有购买其他服务,所以备份比较棘手
网上找寻了大多数方案,基本都是停机做镜像,但谁也不想晚上去客户那操作
找来找去,找到了redhat官方推荐的Rear(Relax and Recover)
https://relax-and-recover.org/
只需要yum install 相关的pkg,就可以直接进行备份,
设置很详细,可以备份到挂载硬盘,也可以备份到远程ssh机器或网络硬盘
该备份方式是软硬结合,
会备份硬盘分区结构和其中的所有文件
注意,这个软件对Intel 的Raid
Intel(R) Rapid Storage Technology
支持的不好,可能Intel raid本身比较特殊,还没发现其他问题。
注意备份之前最好停掉硬盘写入相关的东西,例如db,为了数据完整
安装
yum install rear grub2-efi-x64-modules
grub2-efi-x64-modules为UEFI的启动支持,如果不安装,备份uefi时候会出错缺少lib
备份
设置备份存储位置
编辑 /etc/rear/local.conf
增加以下内容
BACKUP=NETFS
BACKUP_URL=file:///mnt/backup
我这里用的是挂载的硬盘保存备份,
此设置默认会把系统内所有文件压缩打包成tar保存
如果不想压缩,也可以用rsync代替tar,
详细的设置请在官方文档查看
rear mkbackup //备份
备份后会生成iso和系统备份文件在/mnt/backup/{主机名}/
iso可用其他工具做成启动引导U盘,内置恢复程序
恢复
从iso启动,进入以下界面
进入第一项后输入任意字符回车(我没设置),进入console
进入后手动挂载备份用的硬盘
mount /dev/sdb /mnt/backup //挂载路径和设置保持一致,让rear找到它
执行 rear recover
如果系统发现同样的硬盘有多个会让你确认恢复到哪里
一般会自动进行恢复,但出现错误的话,可能就要手动修复了,还好备份本身就是整个文件系统的备份,
手动修复
重新安装os后(为了重建分区),用U盘启动rescue把原系统的文件全部覆盖过去
注意排除 sys
proc
dev
这几个虚拟目录
覆盖后在系统的root生成 .autorelabel 文件,
touch .autorelabel
启动时会重新设置selinux的文件label,
这步很重要,不做会导致进不去系统,类似password错误之类的莫名其妙的问题都是这个原因
重启之前注意手动修改/etc/fstab内的硬盘uuid
格式化重新分区之后uuid会变,更新uuid来避免device进系统后挂载失败
blkid
可显示当前硬盘情报和id
/etc/fstab 内的uuid
注意这里的UUID各对应的root和EFI分区
和blkid里的/dev/sda2
/dev/sda1
一致
修改完毕后重启系统即可