一、系统版本
这次实验涉及两个版本:
1) CentOS 7.1.1503
2) CentOS 7.2.1511
二、通过tar命令备份当前操作系统
# tar cvpzf /mnt/linuxbackup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt/linuxbackup.tgz --exclude=/mnt --exclude=/sys /
这条命令看起来复杂,但拆开理解其实很简单。tar是Linux下常用的打包工具,后面的参数各自有分工:c表示创建新文档,v是在处理过程中输出相关信息,p保持原有权限,z调用gzip压缩归档,f指定对普通文件操作。而linuxbackup.tgz就是打包后的文件名。关键是用--exclude排除了/proc、/lost+found、/mnt、/sys这些目录,以及打包文件自身(因为文件也在/mnt下)。最后一个/表示打包根目录下所有未被排除的文件。
整个过程就是:创建一个名为linuxbackup.tgz的压缩包,其中包含了除排除目录外的所有文件,且保留了原始权限。需要注意,恢复时得手动创建那些被排除的目录。到底排除哪些目录,根据实际需求决定就好。执行后等待一段时间,然后把linuxbackup.tgz拷贝到其他地方,备份就完成了。
重点提示:打包过程中不要进行任何操作,否则可能修改某些文件——备份完成时tar会提示错误,恢复时也一样。
三、通过YUM命令升级操作系统版本至CentOS 7.2.1511
# mount -t iso9660 -o loop xxx.iso /mnt/iso ### 挂载ISO镜像文件至/mnt/iso
# vim /etc/yum.repos.d/CentOS-Base.repo
在repo文件中添加以下内容:
[local-source]
name=CentOS-$releasever - Base
baseurl=file:///mnt/iso
gpgcheck=1
enabled=1
gpgkey=file:///mnt/iso/RPM-GPG-KEY-CentOS-7
然后执行:
# yum clean
# yum update -y
四、重启之后系统顺利升级至CentOS 7.2.1511
这一步没什么可说的,重启后确认版本号已变更为7.2即可。
五、现在将系统恢复至升级之前CentOS 7.1.1503,通过tar命令恢复我们之前备份的文件
# tar xvpfz /mnt/linuxbackup.tgz -C /
命令执行完后,先别急着重启。记得手动创建备份时排除的目录:
# mkdir /proc
# mkdir /lost+found
# mkdir /mnt
# mkdir /sys
六、重启系统,发现系统引导卡在最后一步,图形化界面无法完全显示,通过SSH连接也被拒。
问题来了:重启后图形界面没能正常启动,SSH也连不上。看来恢复过程出了些岔子。
七、挂载光盘,进入拯救模式,挂载硬盘分区至/mnt,将系统启动级别修改到3(字符界面)。
# mount /dev/mapper/centos-root /mnt/root
# cd /mnt/root/etc/systemd/system/
# rm default.target
# ln -sf /lib/systemd/system/multi-user.target default.target
### systemd使用链接来指向默认的运行级别,由/etc/systemd/system/default.target文件中决定。
通过拯救模式手动挂载分区,然后修改默认启动目标为multi-user(相当于运行级别3),解决图形界面卡死的问题。
八、重启之后,显示字符用户登录界面,但是用户无法登录,提示密码错误。
字符界面能看到了,但密码验证失败——恢复时可能把密码相关文件搞坏了。
九、启动单用户模式,修改root用户密码。
- 启动系统,按下e键进入编辑模式。
- 在
linux16/vmlinuz-3.10.0-229.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet LANG=en_US.UTF-8所在参数行尾添加:init=/bin/sh - 按Ctrl+x启动到shell。
- 挂载文件系统为可写模式:
mount --o remount,rw / - 运行
passwd并按提示修改root密码。 - 如果之前系统启用了selinux,必须运行
# touch /.autorelabel,否则无法正常启动。个人实验系统可以直接关闭SELINUX,所以我这一步直接禁用了。 - 运行
exec /sbin/init正常启动,或者用exec /sbin/reboot重启。
十、重启后通过新密码登录成功,系统提示一些错误,按照提示一一执行命令修复成功,执行startx启动图形化界面成功,系统已成功恢复至CentOS 7.1.1503。
登录后有若干报错,根据提示逐个修复,最后运行startx图形界面正常显示,系统恢复如初。
十一、将系统启动级别恢复到5(图形化界面)
# systemctl set-default graphical.target
至此,整个备份—升级—恢复的流程就完整走了一遍。虽然中间出了几个小插曲,但每一步都有对应的解决思路。实际操作时建议提前在白名单环境中做验证,以免生产环境遇到类似问题手忙脚乱。
