高和数科 老服务器跑了 5 年没重启,重启直接炸了xfs 不认了

2026-05-04 20:59:23 0点赞 0收藏 0评论
高和数科 老服务器跑了 5 年没重启,重启直接炸了xfs 不认了高和数科 老服务器跑了 5 年没重启,重启直接炸了xfs 不认了

上周给一台跑了好几年的老 Ubuntu 服务器升配置,本来是好事,结果重启完直接给我整懵了: 之前用了好几年的 xfs 数据盘,死活挂载不上,报错就一行:

mount: unknown filesystem type 'xfs'

我当时人都傻了,重启前这硬盘还好好的啊!读写正常,数据都在,怎么重启完,系统直接不认 xfs 了? 而且这盘里存了好几个 T 的业务数据,我差点以为数据丢了,吓出一身冷汗。


第一步:先排除硬盘和文件系统的问题

看到这个报错,我第一反应就是:是不是 xfs 文件系统坏了? 毕竟之前遇到过不少,硬盘坏了,文件系统损坏,系统就认不出格式了。

为了验证,我赶紧把这块云硬盘从这台机器上卸载,挂到了另一台同版本的 Ubuntu16.04 虚机上,试了下挂载:

mount /dev/vdb1 /data

哦!居然一下就挂上了!数据全在,一个文件没少,读写都正常!

这下我松了口气,数据没丢!那说明硬盘没坏,xfs 文件系统也没坏,问题出在这台刚升完配置的机器本身!


排查了一圈,软件包、引导全正常?

那问题出在哪?我挨个排查:

1. 是不是 /boot 引导文件坏了?

刚升完配置重启,会不会是引导文件丢了?导致系统认不出文件系统? 我把 /boot 目录的文件,跟同版本的机器对比了一下,全正常,没缺文件,内核也没错,引导的问题直接排除了。

2. 是不是 xfsprogs 软件包坏了?

那会不会是 xfs 的工具包坏了?毕竟 mount 认 xfs,全靠 xfsprogs 啊。 我赶紧查了下软件包:

dpkg -l |grep xfs

结果输出:

ii  xfsprogs                         4.3.0+nmu1ubuntu1.1                        amd64        Utilities for managing the XFS filesystem

哦?包明明在啊,版本也对,没丢啊。

为了验证,我甚至拿了个新的空硬盘,试了下能不能格式化成 xfs:

mkfs.xfs /dev/vdc

居然成功了!说明 xfsprogs 工具是好的,能格式化,为啥就是挂载不上?

这下我彻底懵了,工具是好的,硬盘是好的,为啥 mount 就是不认 xfs?


最后发现:系统库文件丢了!

折腾了快 6 小时,我突然反应过来:mount 挂载的时候,是不是需要 /lib 里的库文件? 会不会是这台机器的系统库文件丢了?

我赶紧把这台机器的/lib//lib64/目录,跟同版本的正常机器对比了一下,好家伙! 这台机器的这两个目录里,少了一堆 xfs 相关的文件!不知道啥时候,装软件的时候给误删了!

合着这坑埋了不知道多久了! 之前没重启的时候,系统已经把 xfs 的模块、库都加载到内存里了,哪怕磁盘上的文件丢了,内存里还有,所以我们用着好好的,读写正常,没人发现文件丢了! 结果这次升配置重启,内存里的东西全清了,要重新挂载硬盘的时候,才发现磁盘上的文件没了,系统直接认不出 xfs 了!

找到问题就好办了,我赶紧找了台同版本的正常机器,把缺的文件同步过来:

rsync -avz /lib/ root@172.31.243.xx:/lib/rsync -avz /lib64/ root@172.31.243.xx:/lib64/

同步完之后,再执行 mount,哦豁!一下就成功了! 数据全在,硬盘正常挂载,啥问题没有了!


给大家提个醒:别乱碰 xfs_repair!

这里必须给大家提个醒: 很多人遇到 xfs 挂载不上,第一反应就是:是不是文件系统坏了?那我整个 xfs_repair 修一下?

千万别!你都没搞清楚问题在哪,上来就修文件系统,很容易把数据搞没了! 这次的问题,根根本不是文件系统坏了,是系统的文件丢了,你要是上来就 xfs_repair,不仅修不好,反而可能把数据搞坏,到时候哭都来不及!

遇到这种挂载不上的问题,先把硬盘挂到别的机器上,看看能不能识别,先排除文件系统的问题,再排查系统的问题,别上来就乱修!


运维避坑:这 3 个坑,千万别踩!

这次的故障,真的给我上了一课,一个丢了不知道多久的系统文件,重启就炸了,差点把我搞疯。 今天也给大家提个醒,这几个坑,千万别踩:

1. 老服务器改完配置,一定要测试重启!

这次我们就是,升配置、调规格,以为只是改个硬件,改完就不管了,谁能想到,重启才炸出这么个埋了好久的坑。 以后不管你给老服务器改啥,改完一定要测试重启,别等线上出问题了,才发现一堆隐患。

2. 别手贱乱删系统目录的文件!

很多人装软件的时候,为了解决依赖问题,手贱就删/lib/lib64里的文件,觉得删了没事,反正现在用着好好的。 但是你想过没?这些文件,重启的时候就用到了!你删了,当时没事,重启直接炸,你都不知道为啥。

3. 例行重启、故障演练,真的很重要!

文章最后也说了,很多服务器,跑了好几年没重启过,看起来好好的,其实埋了一堆坑,只有重启才会暴露。 有条件的话,一定要给服务器做例行重启、故障演练,把这些隐患提前挖出来,别等真出问题了,你都不知道咋回事,到时候业务停了,数据差点丢了,才后悔。


最后

你看,这次的故障,说复杂也不复杂,就是丢了两个目录里的几个小文件,结果埋了好几年,直到重启才炸,差点把我搞疯。

很多时候,老服务器的故障都是这样,不是什么大的 bug,就是平时的一些小操作,删了个文件,装软件的时候误改了啥,当时没事,就埋成了雷,直到重启才引爆。

千里之堤,溃于蚁穴,运维这活,真的是步步惊心,别以为服务器跑了好几年没重启过,就啥事没有,那些看不见的坑,指不定哪天就给你炸了。

最后问大家一句:你有没有遇到过这种,跑了好几年的服务器,一重启就炸了的经历?有没有踩过 xfs 的坑?欢迎在评论区唠唠!

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松