由于系统在运行时谁也说不准啥时候硬盘或者是电源会有问题、所以死机可能是难免的情况(不管是硬件还是软件)。现在我们知道文件系统运行时会有硬盘与内存数据异步的状况发生,因此莫名其妙的死机非常可能导致文件系统的错乱。如果文件系统真的发生错乱的话,那该如何是好?此时那个好用的fsck就能拿来仔细分析一下了。
1 fsck [-t 文件系统类型] [-ACay] 设备名称 2 参数: 3 -t:指定文件系统类型,通常不需要。 4 -A:依据/etc/fstab的内容,将需要的设备扫描一次。通常开机过程中就会执行此命令。 5 -a:自动修复检查到的有问题的扇区,所以你不用一直按Y。 6 -y:与-a类似,但是某些文件系统不支持-y这个参数。 7 -C:可以在检验的过程当中使用一个直方图来显示目前的进度。 8 9 EXT3/EXT2 的额外参数功能:(e2fsck这支命令所提供) 10 -f:强制检查,一般来说,如果fsck没有发现任何unclean的标志,不会主动进入细化检查的,如果你想要强制fsck进入细化检查,就得加上-f标志。 11 -D:针对文件系统下的目录进行优化配置。 12 13 范例:强制将新建的/dev/xvdb1这个设备检查一下。 14 [root@iZ255cppmtxZ data]# umount /dev/xvdb1 15 [root@iZ255cppmtxZ data]# fsck -C -f -t ext4 /dev/xvdb1 16 fsck from util-linux 2.23.2 17 e2fsck 1.42.9 (28-Dec-2013) 18 Pass 1: Checking inodes, blocks, and sizes 19 Pass 2: Checking directory structure 20 Pass 3: Checking directory connectivity 21 Pass 4: Checking reference counts 22 Pass 5: Checking group summary information 23 /dev/xvdb1: 11/1966080 files (0.0% non-contiguous), 167409/7864064 blocks
注意:通常只有身为root且你的文件系统有问题的时候才使用这个命令,否则在正常状况下使用此命令,可能会造成对文件系统的危害。
刚才谈到的fsck是用来检验文件系统是否出错,至于badblocks则是用来检查硬盘或软盘扇区有没有坏道的命令
1 badblocks -[svw] 设备名称 2 参数: 3 -s:在屏幕上列出进度; 4 -v:可以在屏幕上看到进度; 5 -w:使用写入的方式来测试,建议不要使用此参数,尤其是待检查的设备已有的文件时; 6 7 [root@iZ255cppmtxZ data]# fsck -C -f -t ext4 /dev/xvdb1 8 fsck from util-linux 2.23.2 9 e2fsck 1.42.9 (28-Dec-2013) 10 Pass 1: Checking inodes, blocks, and sizes 11 Pass 2: Checking directory structure 12 Pass 3: Checking directory connectivity 13 Pass 4: Checking reference counts 14 Pass 5: Checking group summary information 15 /dev/xvdb1: 11/1966080 files (0.0% non-contiguous), 167409/7864064 blocks 16 [root@iZ255cppmtxZ data]# badblocks -sv /dev/xvdb1 17 Checking blocks 0 to 31456255 18 Checking for bad blocks (read-only test): q^Hdone 19 Pass completed, 0 bad blocks found. (0/0/0 errors)