磁碟检验: fsck, badblocks
由于系统在运作时谁也说不准啥时硬体或者是电源会有问题,所以‘当机’可能是难免的情况(不管是硬体还是软体)。 现在我们知道档案系统运作时会有硬碟与记忆体资料非同步的状况发生,因此莫名其妙的当机非常可能导致档案系统的错乱。 问题来啦,如果档案系统真的发生错乱的话,那该如何是好?就...挽救啊!此时那个好用的 filesystem check, fsck 就得拿来仔细瞧瞧啰。
* fsck
[root@www ~]# fsck [-t 档案系统] [-ACay] 装置名称
选项与参数:
-t :如同 mkfs 一样,fsck 也是个综合软体而已!因此我们同样需要指定档案系统。
不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨档案系统,
因此通常可以不需要这个选项的啰!请看后续的范例说明。
-A :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。/etc/fstab 于下一小节说明,
通常开机过程中就会执行此一指令了。
-a :自动修复检查到的有问题的磁区,所以你不用一直按 y 啰!
-y :与 -a 类似,但是某些 filesystem 仅支援 -y 这个参数!
-C :可以在检验的过程当中,使用一个长条图来显示目前的进度!
EXT2/EXT3 的额外选项功能:(e2fsck 这支指令所提供)
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入
细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
-D :针对档案系统下的目录进行最佳化配置。
范例一:强制的将前面我们建立的 /dev/hdc6 这个装置给他检验一下!
[root@www ~]# fsck -C -f -t ext3 /dev/hdc6
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
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
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
# 如果没有加上 -f 的选项,则由于这个档案系统不曾出现问题,
# 检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。
范例二:系统有多少档案系统支援的 fsck 软体?
[root@www ~]# fsck[tab][tab]
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
这是用来检查与修正档案系统错误的指令。注意:通常只有身为 root 且你的档案系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令, 可能会造成对系统的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!
另外,如果你怀疑刚刚格式化成功的硬碟有问题的时后,也可以使用 fsck 来检查一硬碟呦!其实就有点像是 Windows 的 scandisk 啦!此外,由于 fsck 在扫瞄硬碟的时候,可能会造成部分 filesystem 的损坏,所以‘执行 fsck 时, 被检查的 partition 务必不可挂载到系统上!亦即是需要在卸载的状态喔!’
不知道你还记不记得第六章的目录配置中我们提过, ext2/ext3 档案系统的最顶层(就是挂载点那个目录底下)会存在一个‘lostt+found’的目录吧! 该目录就是在当你使用 fsck 检查档案系统后,若出现问题时,有问题的资料会被放置到这个目录中喔! 所以理论上这个目录不应该会有任何资料,若系统自动产生资料在里面,那...你就得特别注意你的档案系统啰!
另外,我们的系统实际执行的 fsck 指令,其实是呼叫 e2fsck 这个软体啦!可以 man e2fsck 找到更多的选项辅助喔!
* badblocks
[root@www ~]# badblocks -[svw] 装置名称
参数:
-s :在萤幕上列出进度
-v :可以在萤幕上看到进度
-w :使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有档案时!
[root@www ~]# badblocks -sv /dev/hdc6
Checking blocks 0 to 2008093
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found.
刚刚谈到的 fsck 是用来检验档案系统是否出错,至于 badblocks 则是用来检查硬碟或软碟磁区有没有坏轨的指令! 由于这个指令其实可以透过‘ mke2fs -c 装置档名 ’在进行格式化的时候处理磁碟表面的读取测试, 因此目前大多不使用这个指令啰!
阅读(1195) | 评论(0) | 转发(0) |