只会重装系统的运维,不是好运维

运维时间长了,总会遇到各种难搞的问题,虽然说 Linux 不像 windows server 那样容易出蓝屏,无法启动之类的系统问题,但也不是不会出现系统层面的故障,比如今天在群里有小伙伴遇到的

环境变量问题,导致大部分命令无法使用,环境变量临时修改不生效,也没办法,最终打算重做系统
重做系统,抛开数据不说,系统上所有环境都要重新搭建,当然不是最佳选择
其实系统层面的问题,不管是 windows 还是 linux,都有一种简单的方式,就是镜像修复,windows 和 linux 都提供一种通过镜像修复系统的功能
我直接拿虚拟机来和 CentOS7 系统来做个简单演示
工具:Hyper-v/CentOS7 镜像
要演示修复,我先得把系统搞挂,所以先做个快照

做完快照,做个很多人都做过的操作,rm -rf,把/bin 目录下的命令都删掉

有人说 bin 目录删掉之后,ls 命令还可以使用

whereis 查一下,你就会发现,/usr/bin 目录下也存在 ls 命令,在 CentOS6 之前,/usr/bin 和/bin 是分开的,/bin 下是系统级命令,/usr/bin 下是用户级别以及应用安装后可执行命令,到 CentOS7 之后,/bin 目录成了/usr/bin 目录的软链,两个合并了,所以上面删除了的是软链,接着,重新删一下/usr/bin 下命令都干掉

ok,完犊子了,命令全都执行不了了,开始修复
这里用的是 hyper-v 虚拟机,所以把镜像挂载到 cd/dvd 之后,重启

挂上去,可以在设置里面看下

之后重启服务器,进修复模式

进来之后,有几个选项

Install CentOS Linux 7 in basic graphics mode
这个选项可让您在安装程序无法为您的显卡载入正确的驱动程序的情况下使用图形模式安装
Rescue a CentOS Linux system
当安装完成的 CentOS 无法开机时,选择此项目进行修复
Run a memory test
运行内存测试
Boot from local drive
从本地磁盘引导
我们这肯定是修复系统,所以选择 Rescue 进入

这里解释很清楚,修复就是通过把原来的系统挂载在/mnt/sysimage 下面,然后你可以做任何操作,我们直接选 1,就是继续这个操作,2 是以只读的方式,因为我这里是命令删掉了,我要拷贝文件,所以肯定不能选只读,其他两个选型就不多说了

现在就进入救援模式了,我们看下原来的系统,也就是/mnt/sysimage 下面,是不是我原来的系统

可以看到,正是我自己的系统文件,bin 目录也确实没有,我们现在做修复,把现在的/usr/bin 下的文件拷贝过去,并重新创建/bin 软链

拷贝完之后,关机,把光盘弹出,重新启动进入系统,重启之后会做一次文件系统的恢复,需要比较长的时间,耐心等着就好

重启之后,即可登录系统,正常使用命令,不过如果之前有安装应用的话,因为这里只是从镜像中复制了系统基础命令,安装后的应用命令没办法恢复了
仅作为一个思路,如果有系统类问题,可以通过这样的方式进行修复
版权声明: 本文为 InfoQ 作者【运维研习社】的原创文章。
原文链接:【http://xie.infoq.cn/article/d92bacd6156cf5f9a70e3ea5e】。文章转载请联系作者。
评论