badblocks – search a device for bad blocks
命令语法格式
badblocks [ -svwnfBX ] [ -b block_size ] [ -c blocks_at_once ] [ -d read_delay_factor ] [ -e max_bad_blocks ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last_block ] [ first_block ]
命令描述
命令badblocks用于搜索设备上的坏块(通常是磁盘分区)。参数device是与设备对应的特殊文件(例如/dev/hdc1)。参数last_block是要检查的最后一个块;如果未指定,则将设备上的最后一个块用作默认值。 参数first_block是一个可选参数,指定测试的起始块编号,允许测试从磁盘中间开始;如果未指定,则将磁盘上的第一个块用作默认值。
重要说明:如果要将badblock的输出提供给e2fsck或mke2fs程序,则正确指定块大小非常重要,因为生成的块编号非常依赖于文件系统使用的块大小。 因此,强烈建议用户不要直接运行badblock,而应使用e2fsck和mke2fs程序的-c选项。
命令支持的选项及含义
-b block_size
以字节为单位指定块的大小。 默认值为1024。
-c number of blocks
是一次测试的块数。 默认值为64。
-d read delay factor
如果该参数被传递且非零,如果在读操作中没有遇到错误,则该参数将导致坏块在read之间休眠;dalay将计算为执行读取操作所花费的时间的百分比。 换句话说,值100将导致每次读取延迟“先前读取所花费的量”,并且值200将延迟两倍量。
-e max bad block count
在中止测试之前指定最大数量的坏块。 默认值为0,表示测试将持续到达测试范围结束。
-f
通常,badblocks将拒绝对挂载的设备进行读/写或非破坏性测试,因为即使以只读方式挂载,也可能导致系统崩溃和/或损坏文件系统。 这可以使用-f标志覆盖,但几乎不应该使用 – 如果你认为你比badblocks程序更聪明,你几乎肯定不会。 唯一可以安全使用此选项的是/etc/mtab文件不正确,并且设备确实未安装。
-i input_file
阅读已存在的已知坏块列表。 坏块将跳过测试这些块,因为它们已知是坏的。 如果input_file指定为“-”,则将从标准输入中读取列表。在标准输出或输出文件中生成的新坏块列表中,将省略此列表中列出的块。 dumpe2fs(8)的-b选项可用于检索现有文件系统上当前标记为坏的块列表,格式适合与此选项一起使用。
-n
使用非破坏性读写模式。 默认情况下,仅执行非破坏性只读测试。 此选项不能与-w选项组合使用,因为它们是互斥的。
-o output_file
将坏块列表写入指定文件。 如果没有此选项,badblocks会在其标准输出上显示列表。 此文件的格式适合e2fsck(8)或mke2fs(8)中的-l选项使用。
-p num_passes
重复扫描磁盘,直到在磁盘的num_passes连续扫描中找不到新块。 默认值为0,表示第一次轮后badblocks将退出。
-s
通过写出当前坏块通过磁盘的粗略百分比完成来显示扫描进度。 请注意,badblocks可能会通过磁盘执行多次测试,特别是如果用户请求-p或-w选项。
-t test_pattern
指定要读取(和写入)磁盘块的测试模式。test_pattern可以是介于0和ULONG_MAX-1之间的数值,也可以是单词“random”,后者指定该块应填充随机位模式。对于读/写(-w)和非破坏性(-n)模式,可以通过为每个所需的测试模式指定-t选项来指定一个或多个测试模式。 对于只读模式,只能指定一个模式,它可能不是“random”的。使用模式的只读测试假定先前已将指定的模式写入磁盘 – 如果不是,则大量的块将无法通过验证。 如果指定了多个模式,则在继续下一个模式之前,将使用一个模式测试所有块。
-w
使用写模式测试。 使用此选项,badblocks通过在设备的每个块上写入一些模式(0xaa,0x55,0xff,0x00)来扫描坏块,读取每个块并比较内容。 此选项不能与-n选项组合使用,因为它们是互斥的。
-B
使用缓冲I/O并且不使用直接I/O,即使它可用。
-X
内部标志仅供e2fsck(8)和mke2fs(8)使用。 它绕过独占模式在用设备安全检查。
-v
详细模式。 将向标准错误写入读取错误,写入错误和数据损坏的数量。
注意事项
切勿在包含现有文件系统的设备上使用-w选项。 此选项会删除数据! 如果要在现有文件系统上执行写入模式测试,请改用-n选项。 它速度较慢,但会保留您的数据。
选项-e将导致badblocks输出可能不完整的坏块列表。 因此,建议仅在想知道设备上是否存在任何坏块时使用它,而不是在需要坏块列表时使用它。
相关手册
e2fsck(8), mke2fs(8)
参考文献
- man 8 badblocks, Version 1.44.4-2
更新日志
- 11/16/2018 创建文章