fsck修复linux硬盘只读
(2013-08-07 14:02:25)
标签:
fsckit |
分类: Linux技术 |
fsck
前面碰见一个硬盘因为有点小问题自动变成只读模式的问题,网上搜寻了一番,没有什么新意,现在能做的一般都是先备份数据后fsck尝试修复(有可能数据丢失),或者尝试重新格式化,在用data
http://hubpages.com/hub/System-Error-in-Linux这个比较好的一篇,找了半天。下面贴一点fsck的用法。
-----------------------------------------------------------------------------------------------------------------------------------
在windows下,磁盘的文件系统出错,需要运行chkdsk命令进行修复。而在linux下,则需要运行fsck命令。由于linux对于文件系统的错误非常敏感,由于意外断电或者其它原因导致linux系统意外关机或者重启,都可能对linux的文件系统造成严重的损坏,从而导致不能正常地进入系统。这也使得fsck变成一个不可或缺的命令。然而这个fsck命令却有一个致命的软肋,就是对于已经挂载了的分区运行具有极大的危险性,远不如windows下的chkdsk命令的安全。
本文以ubuntu系统为例进行讲述。
由于fsck命令的这个致命的软肋,所以运行这个命令的最好方式是用livecd方式启动ubuntu,进入桌面后,首先确认要运行命令的分区是否挂载。比如要对第一硬盘第一分区进行运行,首先可以用umount命令进行卸载:
sudo
一般情形下,都是没有挂载的。运行这个umount命令只是为了确认一下,或者说是为了以怕万一而已。
确认没有挂载后,需要确认这个分区的文件系统是什么,这个可以用命令:
sudo
以查看这个分区的文件系统是什么。文件系统千万不能错了。这里以ext4文件系统为例进行讲述。这个命令不止是确认分区的文件系统是什么,同时也是确认这个分区是如何写法的。sata硬盘的写法是sda,而ide硬盘的写法是hda。
确认没有挂载和文件系统是什么后,输入下面的命令:
fsck
-t参数是指明文件系统是什么。/dev/sda1则是指定分区。
这个命令还有另外一种输入法,这就是:
fsck.ext4
其实就是fsck
fsck默认只对有错误的档案进行检测,但是,我们可以加一个参数-f,让fsck对于没有错的档案也强行检测。这样大约可以修复一些分区的轻微的错误吧。
fsck.ext4
fsck还有检测硬盘坏道的功能,参数是-c
fsck.ext4
检测坏道是很慢的。一般是不需要运行这个命令的。但有必要了解一下吧。
上面是以/dec/sda1分区为例进行讲述,对于其它的分区的运行,举一反三就是了。
如果没有livecd怎么办呢?可以用硬盘启动映象文件的办法启动ubuntu.只要你懂硬盘安装ubuntu的办法,你也就会知道这种启动的办法,具体启动的办法就不赘述了。
但有一个要点,对于映象文件所在的分区不可检测。这里的原因当然是因为这个分区是被挂载了的。即便用:sudo
另外,fsck命令只能检测linux分区,对于windows分区就不可以用这个命令进行检测了。
所以我一般的办法是把ubuntu映象文件放在windows分区。这样可以无障碍地检测全部linux分区。
在ubuntu9.04的recovery
进入recovery
首先运行命令:
fsck
请注意,这个参数是大写F,而不是小写f,如果你写错,麻烦可就大了。我也就曾经误写过,后果是很严重的。好在我很熟知这方面的知识,没有造成实质的损失。
这个命令的作用是清除掉内存中的磁盘缓存。所以这个命令毋须指定分区对象。根据我的经验,使用这个参数的一个要点是不要同时使用其它的参数。就单独运行一下这个参数。
找到的资料对于这个参数的说明是:
-F:
根据我的经验,用这个参数是很安全的,确实可以极有效地防止fsck出错。我曾经在虚拟机做过试验。在正常登陆状态下,先用这个命令清除掉内存中的硬盘缓存,然后运行命令:fsck
重启电脑后,居然成功地进入了桌面。而不用先用这个命令,直接用fsck
然后运行命令:
sudo
这个命令是把/etc/fstab文件中设定的分区,能卸载掉的都卸载掉。一般来说,除了/分区,其它的都能卸载掉的。卸载掉分区后再运行fsck命令,安全系统就大大地增加了。
然后输入命令:
fsck
-A
-f参数的作用前面说了。
-s参数的作用是分别检测。分别检测是与并行检测相对的。所谓并行检测,就是同时检测/etc/fstab中设定的多个分区。
由于/分区没有卸载掉,所以在这里我们不能用-c参数。因为对于没有卸载掉的分区运行-c参数,危险性更为加大。但是,我们可以加参数-R,略过/分区不检测。
fsck
还有一个参数是-C,这个参数可以在运行时显示进度条,这样命令运行起来时更好看些吧。比如:
fsck
最后特别强调一下,由于fsck命令对于已经挂载的分区运行具有高度的危险性,所以千万不能在正常登陆下运行这个命令。
ps:
还有一个重要的命令,可以以只读模式挂载/分区,这样运行fsck命令就非常之安全了。而对以只读模式挂载的分区运行fsck命令是安全的。
mount
-n
一般而言,mount
-o
可以考虑预先做一个可执行文件放到在/分区可以找得到的地方,比如放在/root下,并命名为runfsck,然后进recovery
=====================
mount
umount
fsck
fsck
=====================
其实命令中的fsck
ps:似乎对以只读模式挂载的分区,虽则安全,但也并不能修正文件系统的错误,恐怕并无意义。

加载中…