badblocks:在一个device上检查坏区(通产为硬盘分区)。deveice是对应设备的特殊文件,last-block是最后被检测的块,如果他不是被指定的,最后一个扇区通常在设备上是默认的。first-block是一个可选的参数用来指定检测的起始块号,可以允许测试从磁盘中间开始
提示: 如要要把坏的扇区输出到e2fsck或者mke2fs程序,那么适当的指定块大小是非常重要的,因为块号经常依照块大小被文件系统使用,因此,强烈推荐用户不要直接运行坏块,而是使用e2fsck和mke2fs的-c参数
参数:
-b block-size 以字节数指定块大小,默认是1024
-c number of blocks 一次测试的快数,默认是64
-e max bad block count 在测试挺值钱指定最大坏块,默认是0,因为着测试直到最后能达到的范围才会停止
-d read delay factor 这个参数如果被忽略或不为0,如果在读取中没有遇到错误,会导致两次读取之间出现坏块休眠,延迟将被计算为读取操作所花费时间的百分比,话句话说,值100将导致每次读取都延迟前一次读取的时间,值200则为两倍
-f 通常,坏块将拒绝在已安装的设备上进行读/写或非破坏性测试,因为这两种方法都可能导致系统潜在崩溃或损坏文件系统,即使它是只读安装的也是如此。这可以使用-f标志覆盖,但几乎不应该使用---如果您认为自己比badblocks程序更聪明,唯一可以安全使用此选项的时间是/ etc / mtab文件不正确,并且实际上未挂载。
-i input_file 读取一组已经知道的坏块,Badblocks会跳过已知坏块的检测
-n 使用非破坏性读写模式,默认情况下测试使用的是非破坏性只读模式,这个参数会被-w参数覆盖,因为他们是互斥的
-o output_file 将坏块列表写到指定的文件中,没有这个参数,坏块按照标准输出坏块列表,该文件的格式适合e2fsck(8)或mke2fs(8)中的-l选项使用。
-p num_passes 重复扫描磁盘直到num_passes次后没有发现新块为止,默认为0,意味着badblocks在扫描一次后会退出
-s 通过列出当前badblocks在磁盘上的通过量的百分比进行展示,请注意,badblock可能会在磁盘上进行多次测试,尤其是如果用户请求-p或-w选项时。
-t test_pattern 指定对磁盘块测试的模式读(写)。test_pattern可以是0到ULONG_MAX-1(含)之间的数字值,也可以是单词“ random”,它指定应该用随机位模式填充该块。对于读/写(-w)和非破坏性(-n)模式,可以通过为所需的每种测试模式指定-t选项来指定一个或多个测试模式。对于只读模式,只能指定一个模式,并且不能为“随机”模式。使用模式的只读测试假定先前已将指定的模式写入磁盘-如果没有,则大量块将无法通过验证。如果指定了多个模式,则在进行下一个模式之前,将使用一个模式测试所有块
-v 详细模式,写出读写错误和数据在控制台上
-w 使用写模式测试,在这个参数下,badblocks通过在设备的每一个快上通过写入、读取和比较内容等模式展现出坏块。和-n是不能同时出现的。
-B 即使Direct I/O可用,也使用缓冲I/O
-X 仅由 e2fsck(8) and mke2fs(8)使用的内部标识,它绕过了专有模式使用中的安全检查
警告:
不要再已存在文件系统的设备上使用-w参数,这个参数会擦除数据!如果想用写模式测试已经存在的文件系统,使用-n体态,它比较慢,但是会保留数据
-e参数将导致坏块输出不完整,因此,建议仅在要知道设备上是否存在任何坏块的情况下才使用它,而不是在需要坏块列表时才使用它
-n不能对已经挂载的文件系统进行检测,会提示不安全
$badblocks -b 1024 -c 64 -p 2 -s -v /dev/sda1
正在检查从 0 到 511999的块
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)
正在检查从 0 到 511999的块
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)




