问题现象:
开机后,硬件检测完毕,加载系统文件,提示如下错误:
Couldn’t find ext2 superblock, trying magic number in superblock while trying to open /dev/sdi The superblock could not be read or does not describe a correct ext2 filesystem. If the device is valid and it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt ,and you might try running e2fsck with an alternate superblock: e2fsck –b 8193 <device>
Is a directory while trying to open/ [FAILED]
***An error occurred during the file system check.\
***Dropping you to a shellthe system will reboot
***When you leave the shell
Give root password for maintenance( or type Control-D to continue):
解决方案1:
最简单的修复步骤——修改fstab文件
但修复模式是无法对fstab进行直接编辑的,需先执行mount -o remount, rw /命令,即——以可读写方式重新挂载根文件系统,执行完毕后,再对fstab进行编辑
解决方案2:
还有一种修复步骤是采用修复超级块的方式,比较麻烦,详细修复步骤见下方
解决步骤:输入root密码登入修复模式
1、登入后执行命令mke2fs -n /dev/sdi提示时按y确定 查看分区信息最后一行的数字就是超级块所在,随便用一个
2、然后输入命令fsck -b查到的数字/dev/sdi修复,返回下面的结果时修复成功
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sdi was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdi: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdi: 11/26104 files (9.1% non-contiguous), 8966/104388 blocks
3、重新格式化,慎用,如上述操作还是没有返回第二步的执行成功显示,则请输入mkfs.ext3 /dev/sdi提示时按y确定,这两条命令执行完后重启服务器
如果mount命令发现有的分区变成了ro
可以试试先umount后再mount
前几天在广州参加植物病毒学会议,一边听会一边开着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路径,结果报错。
报错信息显示:
搜索网页发现,有一个哥们经历了跟我一样的遭遇, 意外断电造成mount挂载硬盘报错 。所以,这次事故是因为意外断电,基本实锤了。
但到底什么是superblock呢?
继续搜索,直到读到一篇技术文章 linux操作系统故障处理,ext4文件系统超级快损坏修复 。本文可以忽略,但这篇技术文章得认真读读。里面讲解了磁头,磁道,柱面,扇区,以及硬盘容量等等概念,以及最重要的inode和block,Superblock(超级块)概念。
既然报错提示Superblock出了问题,那我们就应该从这里入手。linux系统提供了一个磁盘命令 fsck 来尝试对设备进行修复。但可惜,用这个命令的时候,都会提醒你,应该安装最新的 fsck 工具包。
提示如下:
根据这篇文章 E2FSCK: how to handle the “metadata_csum” error by advancing the e2fsck version beyond default installed version 的提示,需要安装1.43X的 e2fsck , 安装方法小结如下。
检验一下是否更新成功:
能够看到已经更新到1.43.5版本。
安装完之后,开始对磁盘进行修复,命令如下:
一般都能修复完毕,然后可以再进行取消挂载或者重新挂载的操作。看到数据都还完好无缺地在电脑上,还处于后怕的我赶紧掏出移动硬盘进行原始数据的备份。
本次debug结束
这篇技术日志对读者可参考性并不高,是因为应用场合实在是少,(试想谁会天天断电呢),但还是有一些体会和感悟:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)