这是去年7月写的文章,当时是对的Linux不知道,但是同学向我求助,也去折腾了一次!
折腾经过:前天同学打电话给我,说是某单位的华为服务器(H22H-05)无法进入系统(Centos7)昆明的技术人员说要重做系统,数据会丢失!但单位坚决不允许数据丢失!所以向我求助。。
说实话,我以前从未接触过。Centos,我甚至没有研究过,所以当我问我时,我不知道。。
然而,我更喜欢研究问题,所以第二天早上我问他是否已经完成了。如果没有,我会先远程研究。。
然后开始远程折腾。。
远程操作说明:通过笔记本连接到服务器的管理端口,然后使用华为工具来操作服务器,包括调整BIOS等。然后笔记本装了向日葵,我用向日葵向日葵远程操作笔记本。
首先,我没有进入正常系统。屏幕上提示了一堆英文和百度。我知道这是救援模式或紧急模式。
然后根据屏幕上的提示输入命令:journalctl 查看系统日志。因为是第一次看Centos日志,一开始很认真,但也不时百度,后来发现错了,日志内容太多了!不知道什么时候看到!
于是我直接按下end键,跳到最后一页。三行红色错误提示突然出现在屏幕上!第一行是:Failed to mount /sysroot我不记得另外两行了,大概和这个提示有关。
然后向前翻,还有什么提示? “i没有找到8042控制器。 等等,这不影响。
显然,不能正常进入系统的原因一定是:Failed to mount /sysroot
于是,百度之。。
杜娘的结果,不敢说100%,99%的解决方案都是这样的:xfs_repair -v -L /dev/dm-0
我信了!但是,有人说可能会导致数据丢失!这。。
想了想,觉得不安全,研究了一天,找到了更安全的方法,从来不敢输入这一系列命令!
晚上,我打电话给我的同学安排提升服务器。我打算先进PE备份数据,然后折腾!
今天中午1点,服务器升起,开始现场折腾~~
首先,当然是插上心爱的小U盘,想进去PE。结果试了好几次,服务器一从U盘启动就自动关机!!PE进不去,头痛。。
经过研究,发现是UEFI所以在BIOS中把UEFI改为传统方式,再进入PE成功了!
Windows不能直接读取XFS(Centos默认使用的分区格式)格式的分区,我原本希望DiskGenius这款国产分区神器!
但不幸的是,它不支持它XFS。幸运的是,我准备拿出另一件超级神器:UFS Explorer!
正确读取服务器硬盘上的东西,除了分区显示 RAW 除了无法读取外,还可以看到其他分区的数据!
所以我让人们拿一个移动硬盘来备份单位所需的所有数据。
数据备份需要两三个小时,然后开始尝试修复系统!
我输入了网上查到的命令:xfs_repair -v -L /dev/dm-0
没用!!我又输入:xfs_repair -v -L /dev/dm-1
还是没用!!有点傻,我以为一下子就能搞定。。
想起在PE其他分区正常读取,只有那个RAW分区很奇怪,经过各种折腾,确定是这样。swap交换分区。。
我想,也许我和网上的情况不一样。。错误的原因可能是swap分区异常!
于是,我开始折腾这个分区!
很多服务器原有的救援模式命令变得不可用,所以我用了一个Centos7U盘引导进入其救援模式
经过一番折腾,确定swap分区对应/dev/路由知识dm-5
所以我输入了:xfs_repair -v -L /dev/dm-5
还是没用!!!
我不记得折腾了多少命令,翻了多少百度。。
使用过的命令:mkfs.xfs -f -d agcount=2,su=256k,sw=2 -r extsize=512k /dev/dm-5
agcount=二是用两个CPU线程,su=256k表示块的大小,sw=2 表示阵列有两个盘,extsize=512k 这个值是su*sw。该服务器是三个硬盘组RAID5,所以sw设成了2
…………
最后,似乎是这样解决的:
swapoff -a 关闭swap
rm -f /mnt/sysimage/dev/mapper/cl-swap 删除swap。swap原路径为//dev/mapper/cl-swap,在U盘启动的救援模式挂载到/mnt/sysimage目录下
xfs_repair /dev/dm-5本来没有报什么希望,所以也没加-v -L这两个参数。我加这两个参数,我觉得这里的结果是一样的
看到不同的提示,我预感它正常!我加这两个参数,我觉得这里的结果是一样的看到不同的提示,我预感它正常!于是我又输入了一次:
xfs_repair /dev/dm-5然后reboot重启!!
这个时候快19点了,肚子有点饿。服务器重启前,我们先去吃饭~~
晚饭后回来看看,久违的 localhost login: 出现了!
重启还是正常的,完成工作~~
skyyx2002
2021.07.18后话
路由知识现在回想起来,这个故障应该只是swap分区错误导致!
以我现在对Linux也许几分钟就能完成理解。。