centos6.9中glibc升级失败救援+救援模式挂载硬盘

centos6.9中glibc2.12升级失败导致系统奔溃的救援+救援模式下挂载硬盘备份数据

起因
在课题组服务器管理员权限下打算安装Rstudio-server时,提示glibc需要2.14及以上版本,纯菜鸟,在未知升级glibc失败会引起什么样的后果下便开始了折腾。自己下载的glibc2.17开始安装,在rpm -Uvh *2.17-55.ELS.X86_64.rpm后麻烦开始了,如下图,提示/lib64/libc.so.6: version 'GLIBC_2.14' not foundcentos6.9中glibc升级失败救援+救援模式挂载硬盘_第1张图片
此后再输入任何命令都是“**GLIBC_2.14' not found”以及“core dumped”等错误。
如果当时没退出root环境,按照网上的说法貌似此时还有补救措施,但我已经退出root权限,退出mobaxterm后就登不上去系统了,百度后才知道,此时我已经把linux底层glibc搞坏掉,影响系统正常运行了,除了cd以外的绝大多数命令都歇菜了。

解决措施

断断续续折腾近两周,下边是成功解决方案的步骤:
1 . 制作U盘启动盘
问题出现后,进入机房将课题组服务器(浪潮英信服务器 NF8480M4)连接到显示屏,蓝屏,长按服务器电源键后强制关机,再开机后报错进不去系统。尝试按照网上的建议进入单用户模式失败,只能进入救援模式。ok,先强制把服务器关机,去制作U盘启动盘吧:
使用UltraISO制作centos6.9的U盘启动盘,所需的镜像从清华镜像https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso下载至本地(DVD1涵盖了所有装机必须软件)。制作U盘启动盘时,在“便捷启动”项内选择“syslinux”(我之前没选这一项,开机U盘启动时无法进入救援模式,其他步骤和网上说的一致),写入U盘的时间大概十分钟。

2.进入救援模式
在服务器上插入U盘启动盘,按电源键开机后在提示界面按下“F12”进入boot选项,之后选择最下边的自己的U盘回车,在界面选择第三项“rescue”进入救援模式,在“what type of media contain the rescue image”界面中选择第二个“hard device”(如下图)回车,我的U盘就是之后界面显示得第一个/dev/sda4/,回车进入,其他的和网上进入救援模式的方法一致,直到出现bash#命令行(由于是回忆的,具体步骤可参照网上其他建议,在此有一个帮助链接Linux系统CentOS进入单用户模式和救援模式详解_IChen.的博客-CSDN博客)。原服务器上的系统被挂载至/mnt/sysimage/。(网上说的chroot /mnt/sysimage/进原系统,这里进不去,因为我把系统底层搞坏掉了啊centos6.9中glibc升级失败救援+救援模式挂载硬盘_第2张图片

3.挂载硬盘拷贝数据
在系统坏掉前未做数据备份,自己买了4t西部数据硬盘(默认NTFS格式),此时由于系统坏掉,网上说的安装ntfs-3g后挂载ntfs硬盘的方法已经行不通(这里自己尝试了好几天,包括自己下载ntfs-3g通过U盘拷贝到服务器上编译也不成功,因为glibc的错误导致编译软件gcc也不能用了),请教过在鹅厂搬砖四年的同学后,了解到centos6.9默认支持的是ext4格式的硬盘,还推荐了将NTFS硬盘转化为ext4格式的办法diskgenius软件改变硬盘格式的方法(这个需要格式化自己硬盘中的数据哈!!!)通过教程成功将自己NTFS的硬盘格式化成ext4格式的硬盘。之后再将自己的硬盘插在服务器,输入以下命令:

lsblk #查看自己的硬盘是哪个盘
fdisk -l #查看磁盘分区状态及挂载路径(无桌面下显示屏翻页按shift+pageup/pagedown)
blkid #查看所有设备的文件系统类型
mkdir /mnt/myusb #创建一个新的文件夹以备挂载自己的硬盘
mount /dev/sdc1 /mnt/myusb #/dev/sdc1这个是你自己硬盘的名称哈,别直接复制粘贴我的
cp -r /mnt/sysimage/ /mnt/myusb #硬盘要足够大就将整个系统里边的东西拷贝出来,或者选择重要的数据自行拷贝,我一共1.5T左右的数据,夜里十点左右输入命令后,第二天早上过去看看,拷贝完了
umount /mnt/myusb #解挂硬盘,此时就可以拔掉你的硬盘了,至于想看数据是否拷过来,可以在window借助diskgenius查看文件

4.恢复系统
前边的所有都是铺垫,最终还是要解救系统,他终于来了。。。
通过U盘启动盘开机后进入救援模式,由于数据已经做了备份了,现在搞起来也大胆了一些。参照“3.挂载硬盘拷贝数据”,将自己的U盘启动盘也挂载到一个目录下以拷贝安装U盘中的glibc*文件。重头戏来了,参考以下3个链接(我没有误删除glibc,只是升级失败,因此下边命令行中的rm -rf一行对我出现的问题很关键)glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc),,,Centos7 – glibc 升级失败、意外删除、故意删除后的处理方法 - caya - 博客园,,,升级centos6.9 glibc引发的惨案_王老欠-CSDN博客

mkdir /mnt/usb
mount /dev/sda4 /mnt/usb #/dev/sda4是你自己的U盘启动盘名字,按照你自己的名称来挂载至/mnt/cdrom
cd /mnt/sysimage/lib64/ #进入原系统文件的lib64库文件
rm -rf *2.17* #这一步很关键,若不删除自己升级失败的glibc.17相关库文件,会导致下边的安装不成功,亲测过了
cd /mnt/usb/Packages/ #你想要替换的glibc相关文件都在U盘的packages中
rpm -ivh --force --root=/mnt/sysimage glibc* #这是终极之战,回车后我这里就把系统的glibc修复好了

运行命令后的成功结果如下(之前的一直是到不了100%,中间会出现很多errors):centos6.9中glibc升级失败救援+救援模式挂载硬盘_第3张图片将U盘启动盘解挂后拔出(不解挂拔出的话重启后我自动又进入了U盘启动的状态),在bash命令行输入reboot重启,glibc的问题就解决了,而我这里重启后出现新问题如下:
centos6.9中glibc升级失败救援+救援模式挂载硬盘_第4张图片
百度后了解到这是重新识别我的/dev/sda4磁盘时出现故障,需要手动fsck解决,因为使用blkid已知它是ext4磁盘类型,所以输入命令fsck.ext4 -y /dev/sda4回车,完成后reboot重启,完美进入了系统。至此,困扰我近两周的升级失败惨案宣告终结。有了经验,后续还会继续捣鼓glibc2.12升级的。

你可能感兴趣的:(centos,linux,服务器)