4.2.4 磁盘检验:fsck、badblocks
当磁盘出现逻辑错误时,可以使用fsck来尝试修复。出现此类错误比较典型的情况是当机器突然掉电时可能引发。该命令的典型使用方式如下(其中TYPE可以是ext2、ext3,最后接设备的全路径):
- [root@localhost ~]# fsck -t TYPE DEVICEPATH
需要特别说明的是,fsck在检查磁盘的时候,需要磁盘是未挂载的状态,否则会造成文件系统损坏。对于已挂载的设备需要先进行umount(解除挂载)操作,umount命令的参数可以是设备路径或者是挂载点,如下所示:
- [root@localhost ~]# umount DEVICEPATH
- #
- 或者
- [root@localhost ~]# umount MOUNT_POINT
举个例子演示一下如何fsck磁盘,以上一节中挂载的devsdb1为例。如果当前是挂载状态,则需要先进行umount操作,如果umount成功,系统将不会有任何提示,如果umount失败,系统会有相应的报错信息,如下所示:
- [root@localhost ~]# umount devsdb1
- [root@localhost ~]# #
- 这里没有任何报错,说明umount
- 成功
上面的这个卸载操作的另一种方式如下,效果相同。
- [root@localhost ~]# umount rootnewDisk
卸载完成后,就可以执行fsck了。
- [root@localhost ~]# fsck -t ext3 devsdb1
- fsck 1.39 (29-May-2006)
- e2fsck 1.39 (29-May-2006)
- devsdb1: clean, 11/130560 files, 8529/261048 blocks
想象一下,如果系统的根文件系统出现问题需要fsck怎么办呢?因为系统在运行时,根是无法被umount的。这时候只有重新启动计算机,因为如果确认根文件系统出现问题,系统在重启的时候会检测到这个问题,然后提示用户输入root的密码进入单用户模式,这样就可以使用fsck来修复根文件系统了。
与fsck不同,badblocks主要是用来检测磁盘的物理坏道的,使用这个命令其实更多的只是确认磁盘是否有坏道,所以平时使用得较少,往往只是在怀疑磁盘有坏道的时候才使用。命令如下所示:
- [root@localhost ~]# badblocks -v devsdb1
- Checking blocks 0 to 1044193
- Checking for bad blocks (read-only test): done
- Pass completed, 0 bad blocks found.