Linux 硬碟坏轨测试 (badblocks)

一、 badblocks介绍
badblocks是Unix-like作业系统下用来检查类似于磁碟分区这样的设备上是否存在坏道的命令行程序,其功能类似于Microsoft Windows或DOS作业系统中的SCANDISK或CHKDSK。运行后badblocks会给出一份设备上存在问题的区块(block)列表。

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

详细介绍可参考 维基百科
二、 badblocks 测试说明

badblocks实作测试
1.1 badblocks语法说明

[root@localhost ~]# badblocks [-svwnf] [-b block-size] [-c blocks_at_once] [-i input_file] [-o output_file] [-p num_passes] [-t test_pattern ] device [last-block] [start-block]

1.2 测试硬碟是否有坏轨

[root@localhost ~]# badblocks -nsv /dev/sdc Checking for bad blocks in non-destructive read-write modeFrom block 0 to 584843264Checking for bad blocks (non-destructive read-write test)Testing with random pattern: done                                Pass completed, 0 bad blocks found.  #测试完成后会在这边显示有无坏轨数

用此方式测试因为没有设定重覆测试的次数,预设16次。若是硬碟较大的情况下会测试的比较久。

1.3 限制测试次数
为了怕硬碟过大,又要重覆16次会佔去很多时间。所以在参数部份加入-c

[root@localhost ~]# badblocks –nsv -c 5 /dev/sdc #加入参数-c,且在-c的后面加上要重覆测试的次数后就行了。

1.4 将测试的结果记录下来

[root@localhost ~]# badblocks –nsv -c 5 /dev/sdc -o sdc-badblocks-list#加入参数-o,且在-o后面加上档案名称就行了。[root@localhost ~]# cat sdc-badblocks-list   #查看测试内容

1.5 针对某磁区範围内测试 (假设为50000-55000)

[root@localhost ~]# badblocks –nsv -c 5 /dev/sdc  -o sdc-badblocks-list 55000 50000#50000为开始磁区,55000为结束磁区。

1.6 fsck 使用badblocks的方式(fsck为修复硬碟)
在fsck时使用badblocks来略过已经检查到的坏轨磁区。请用-l这个参数。
也就可以跳过这些坏轨不检测了。

[root@localhost ~]# fsck.ext3 -l /opt/ sdc-badblocks-list /dev/sdc#参数说明:fsck.ext3 为修复硬碟的格式-l        后面接已测试好磁区标记的档案,表示当在fsck时会略过该档内的磁区不检查/dev/sdc  为要修复的硬碟

1.7 在格式话硬碟时检查是否有坏轨
以下两种方式选一种使用

[root@localhost ~]# mkfs.ext3 -c /dev/sdc或是使用[root@localhost ~]# mke2fs -j -l sdc-badblocks-list /dev/sdc#参数说明:-c  在格式化之前先检查硬碟。使用此参数操作,清楚地告知可以採用“mkfs.ext3 -c”    选项用“read-only”方式检查硬碟。这个命令会在格式化硬碟时检查硬盘,并标出    错误的硬碟“block”。用这个方法格式化硬碟,需要有相当的时间,因为命令运行    后,会一个个用读的方式检查硬盘。-j  将硬碟格式转化成 ext3 journal 格式。-l  后面接已测试好磁区标记的档案,表示当在fsck时会略过该档内的磁区不检查    /dev/sdc  为要修复的硬碟

badblocks参数说明

#参数说明:
-b blocksize
指定硬碟的磁区大小,单位为字元,预设值为“block 4K”(4K/block)

-c blocksize
每个磁区检查的次数,预设值是16次

-f
强制在一个已经挂载的设备上执行读写或非破坏性的写入测试操作
(建议先umount设备,然后再进行坏轨检测。仅当/etc/mtab出现设备报错挂载错误时可以
使用该选项)

-i file
跳过已经显示在file文件中的坏轨,而不进行检测(可以避免重複检测)

-o file
把检测结果输出到file文件

-p number
重複搜寻设备,直到在指定通过次数内都没有找到新的坏轨位置,预设次数为0

-s
在萤幕上显示检查进度

-t pattern
通过按指定的模式读写来检测磁区。可以指定一个0到ULONG_MAX-1的十进制正数值,或使
用random(随机)。如果指定多个模式,badblocks将使用第一个模式检测所有的磁区,然后
再使用下一个模式检测所有的磁区。Read-only方式只接受一个模式,不能接受random模式。

-v
执行时在萤幕上显示详细的讯息

-w
使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有档案时

[device]
指定要检查的硬碟装置。

[last-block]
指定硬碟装置的磁区总数。

[start-block]
指定要从哪个磁区开始检查

更多的文章内容同步于FAQ-BOOK


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章