badblocksUnix-like操作系统下用来检查类似于磁盘分区这样的设备上是否存在坏道的命令行程序,其功能类似于Microsoft WindowsDOS操作系统中的SCANDISKCHKDSK。运行后badblocks会给出一份设备上存在问题的区块(block)列表。

badblocks是ext2/3/4文件系统工具集e2fsprogs的一部分。

badblocks在大多数情况下需要配合e2fsckmke2fs使用,此时需要专门指定合适的"-b"参数,也就是badblock所读取的区块大小(block-size)。因此,用户应该通过执行e2fsckmke2fs时加上"-c"参数来调用badblocks,而不是直接使用badblocks。[1]

e2fsck的 "-c" 参数

多数情况下badblocks会透过e2fsck的"-c"参数调用,防止资料被写入坏道中。透过扫描时所产生的坏道清单在分配空间时避免使用到坏道部分。这项测试可以透过只读("-c")或非破坏性写入("-cc")进行。[2]

dumpe2fs

执行dumpe2fs -b可以列出由e2fsck或>tune2fs所纪录的坏道清单。

示例

badblocks -nvs /dev/sdb

这个指令将会对 "sdb"进行非破坏性写入测试以及显示检查进度。

badblocks -wvs /dev/sdb6

这个指令将会对"sdb"的第6硬盘分区进行破坏性写入测试(-w = 写入模式),对分区写入4种不同的方式,并写验证其正确性。过程中将会显示检查进度(-s = 显示,-v = 详细资料). 指令所执行之分区资料将会被覆盖。

badblocks -wvsb 4096 /dev/sdb

这指令行为与上则相同,不过对象为整个硬盘以及指定区块大小为4096。将会破坏MBR分区及资料。新一点的硬盘并不会显示损坏的扇区,其原因为在备用扇区尚存时将自动重新定位至备用扇区[3],但是执行在新硬盘上会测试硬盘表面,解析S.M.A.R.T.信息后将会显示最终所配置的扇区数量。

使用-w参数时,将会把原先硬盘的所有资料抹除掉。

参考

引用

  1. ^ badblocks(8) - Linux man page页面存档备份,存于互联网档案馆), 2010年5月7日查阅
  2. ^ e2fsck(8) – Linux系统管理员工具(Administration and Privileged Commands)手册页
  3. ^ 存档副本. [2012-06-30]. (原始内容存档于2012-07-19).