linux操作系统故障处理-ext4文件系统超级块“can't read superblock”损坏修复

前几天在广州参加植物病毒学会议,一边听会一边开着TeamViewer远程连接实验室装有linux系统的工作站跑程序干活。有一天下午发现TeamViewer显示服务器离线,原来是因为施工导致停电。Anyway, 不重要,发微信让小青儿给我重启服务器,结果发现重启不了,大概就是这个界面。

进不去系统时绝望的命令行提示

怎么着都进不去图形界面,简而言之,工作站重启不了了。索性不管了,好好听报告,心想回到福州再收拾工作站。回到福州第一件事就是坐下来重启工作站,发现无论怎么折腾都进不去系统。

虽然图形界面进不去,好在还能够在命令行下进行操作。当看到/bioinfor,这个存放目录的路径下啥都没有的时候,这可是我所有的数据啊!如果这个盘里的数据没了,各个合作者还不得把我手撕了。想到这里,冷汗差点下来了。

于是开始寻找解决方法。

首先得想办法进入系统,在反复地sudo reboot都无法进入系统之后,通过df -h也看不到/dev/sda(也就是挂载到/bioinfor路径的磁盘)信息。然后猜测是不是因为磁盘以及分区表之类出现了错误导致不能进入系统。通过sudo vi /etc/fstab将除了系统安装盘之外的所有硬盘的挂载信息全部注释掉,再reboot, 这时候果然可以进入图形界面系统了。但依然看不到/bioinfor盘下的数据。能够开机就让我放心了很多。通过gparted工具,能够看到/dev/sda硬盘里used space大概是1.7T,还剩下1.9T左右,这就表示我的数据还在。试图通过sudo umount /dev/sda先取消挂载,再重新sudo mount /dev/sda /bioinfor挂载到/bioinfor路径,结果报错。

报错信息显示:

can't read superblock

搜索网页发现,有一个哥们经历了跟我一样的遭遇,意外断电造成mount挂载硬盘报错。所以,这次事故是因为意外断电,基本实锤了。

但到底什么是superblock呢?

继续搜索,直到读到一篇技术文章linux操作系统故障处理,ext4文件系统超级快损坏修复。本文可以忽略,但这篇技术文章得认真读读。里面讲解了磁头,磁道,柱面,扇区,以及硬盘容量等等概念,以及最重要的inode和block,Superblock(超级块)概念。

既然报错提示Superblock出了问题,那我们就应该从这里入手。linux系统提供了一个磁盘命令fsck来尝试对设备进行修复。但可惜,用这个命令的时候,都会提醒你,应该安装最新的fsck工具包。

提示如下:

fsck from util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
/dev/sda has unsupported feature(s): metadata_csum
e2fsck: Get a newer version of e2fsck!

根据这篇文章E2FSCK: how to handle the “metadata_csum” error by advancing the e2fsck version beyond default installed version的提示,需要安装1.43X的e2fsck, 安装方法小结如下。

# open url "http://old-releases.ubuntu.com/ubuntu/pool/main/e/e2fsprogs/"
wget http://old-releases.ubuntu.com/ubuntu/pool/main/e/e2fsprogs/e2fsprogs_1.43.5-1_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/main/e/e2fsprogs/e2fslibs_1.43.5-1_amd64.deb
# cd ~/Download
for f in e2fs{libs,progs}_*_$(dpkg --print-architecture).deb; do sudo dpkg -i "$f"; done

检验一下是否更新成功:

(base) xuzhongtian@biocomp~$e2fsck -V
e2fsck 1.43.5 (04-Aug-2017)
Using EXT2FS Library version 1.43.5, 04-Aug-2017

能够看到已经更新到1.43.5版本。

安装完之后,开始对磁盘进行修复,命令如下:

sudo fsck -y /dev/sda

一般都能修复完毕,然后可以再进行取消挂载或者重新挂载的操作。看到数据都还完好无缺地在电脑上,还处于后怕的我赶紧掏出移动硬盘进行原始数据的备份。

本次debug结束


这篇技术日志对读者可参考性并不高,是因为应用场合实在是少,(试想谁会天天断电呢),但还是有一些体会和感悟:

  • 1.数据无价!重要数据一定要做好备份,因为万一哪一天硬盘遇到更严重的问题,数据丢失了,后悔都来不及。
  • 2.通过控制变量法,能够缩小可能的原因的范围,然后再挨个尝试,直到找到症结。
  • 3.如果不是实在没有办法,不建议去用重装系统这种简单粗暴的方法解决问题。
  • 4.认真读一下文章推荐的那篇文章,对硬盘的理解会上一个新高度。

你可能感兴趣的:(linux操作系统故障处理-ext4文件系统超级块“can't read superblock”损坏修复)