磁盘检验: fsck, badblocks
现在也建立好了新的 partition 了,也 format 好了,那么有没有其它的关于硬盘的工作需要来进行呢?
有的,就是需要怎样来检查硬盘有没有坏轨呢?那个就是 fsck 这个工具的用途啦!此外,您会发现到,在 / 这个目录底下 (其实只要有挂载硬盘的那个目录底下都有这个目录 ) 会有一个特殊的目录,就是『 lost+found 』这个目录啦!对的!就是当你处理完fsck 之后,如果程序有发现到任何的错误的档案,就会将该档案的数据给他丢到这个目录当中,嘿嘿! 所以当你发现你的 Linux目录当中有这个档案时,不要担心,那个是正常的啦!而且 只有挂载
partition 的目录 (就是挂载点) 才会有这个预设的目录啰!
还有,由于在 Linux 系统当中,为了增加系统效能,通常系统预设就是一些数据会写在内存当中, 并不会直接将数据写入硬盘里面,这是因为内存的速度要比硬盘快上若干倍呀!
但是有个问题就发生了,万一系统由于『跳电』或者是其它的莫名原因,造成系统的 shutdown 时,唉呀!怎么办?!系统就完蛋啦!所以啰,我们需要在某些特定的时候让数据直接回存到硬盘之中呀!
瞭乎!这里提供几个惯用的指令,其中,那个 fsck 是相当重要的,请参考其用法啰!
· fsck
[root@linux ~]# fsck [-AtCary] 装置名称
参数:
-t :fsck 可以检查好几种不同的 filesystem ,而 fsck 只是一支综合程序而已。
个别的 filesystem 的检验程序都在 /sbin 底下,您可以使用 ls -l /sbin/fsck*
去检查看看,就知道有几种 filesystem
啰。预设的 FC4 情况下,至少有:
ext2, ext3, vfat, msdos 等等 filesystem。
-A :依据 /etc/fstab 的内容,将所有的装置都扫瞄一次 (通常开机过程中就会执行此一指令)
-a :自动修复检查到的有问题的扇区,所以你不用一直按 y 啰!
-r :一定要让使用者决定是否需要修复,这与上一个 -a 刚好相反!
-y :与 -a 类似,但是某些
filesystem 仅支持 -y 这个参数,所以您也可以利用 -y 啦!
-C :可以在检验的过程当中,使用一个长条图来显示目前的进度!
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入
细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
范例:
范例一:将前面我们建立的 /dev/hdb5 这个装置给他检验一下!
[root@linux ~]# fsck -C -t ext3 /dev/hdb5
fsck 1.37 (21-Mar-2005)
e2fsck 1.37 (21-Mar-2005)
logical: clean, 11/181056 files,
21706/361446 blocks
# 如果一切没有问题,就会出现上述的讯息~
这是用来检查与修正硬盘错误的指令。注意:通常只有身为 root 且你的系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令, 可能会造成对档案的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!另外,如果你怀疑刚刚格式化成功的硬盘有问题的时后,也可以使用 fsck 来检查一下硬盘呦!其实就有点像是 Windows 的 scandisk啦!此外,由于 fsck 在扫瞄硬盘的时候,可能会造成部分 filesystem 的损坏,所以『执行 fsck 时, 被检查的partition 务必不可挂载到系统上!亦即是需要在卸载的状态喔!』
常常我们会发现,在比较老旧的机器上 ( 例如鸟哥的 p-166
),如果主机不正常的关机 (例如跳电啰!),那么硬盘很可能会出现错误的状况!这个时候 Linux 就无法正常的开机!这个时候就需要输入root 的密码,以登入单人维护模式 (run level 1),然后下达 fsck -y /dev/hdxxx来检查你的硬盘!等到确认成功之后,就使用 reboot 来重新启动吧!
· badblocks
[root@linux ~]# badblocks -[svw] 装置名称
参数:
-s :在屏幕上列出进度
-v :可以在屏幕上看到进度
-w :使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有档案时!
范例:
[root@linux ~]# badblocks -sv /dev/hdb5
Checking blocks 0 to 722893
Checking for bad blocks (read-only test):
done 893
Pass completed, 0 bad blocks found.
这是用来检查硬盘或软盘扇区有没有坏轨的指令!跟 Windows 的 scandisk 相同功能啦!不过由于 fsck 的功能比较强,所以目前大多已经不使用这个指令了!