功能描述
使用badblocks命令可以在设备(通常是硬盘分区)上搜索坏块。如果没有指定最后一个块,默认值是设备上使用的最后一个块。第一个块是一个可选的参数,如果没有指定第一个块,则默认值是设备上使用的第一个块。
命令语 法
badblocks [选项] [设备] [最后一个块] [第一个块]
选项含义
选项
含义
-b
指定磁盘的区块大小,单位为字节。
-w
在检查时,执行写入测试。
-o
将检查的结果写入指定的输出文件。
-c
在同一时间进行测试的块数。默认值是64
-p
指定重复扫描的次数,直到没有新的磁盘区块被发现。默认值是0,表示坏块会在第一次检测通过后退出
-v
执行时显示详细的信息。
-e
终止测试之前指定坏块的最大数量。默认值为0,表示该测试将继续,直到测试范围结束为止
-s
显示扫描进度。
-i
阅读已经存在的已知的坏块列表
-X
内部标志只使用e2fsck和mke2fs的。它绕过了独占模式中使用的设备安全检查
-t
指定测试模式来读取和写入到磁盘块
-n
使用非破坏性的读写模式
-f
强制在一个已经挂载的设备上执行读写或非破坏性的写测试操作
例
搜索设备/dev/sda1的坏块
[root@linuxlz.com~]# badblocks /dev/sda1
搜索设备/dev/sda的坏块,最后一个块是300000。
[root@linuxlz.com~]# badblocks /dev/sda 300000
搜索设备/dev/sda的坏块。
[root@linuxlz.com~]# badblocks /dev/sda
搜索设备/dev/sda1的坏块,以块大小为4096字节,测试16个块,将结果输出到/root/sda-badblocks-list文件中。
[root@linuxlz.com~]# badblocks -b 4096 -c 16 /dev/sda1 -o /root/sda-badblocks-list
通过命令扫描硬盘
[root@linuxlz.com~]# badblocks -s -v /dev/sdnx
其中n表示硬盘设备名,x表示硬盘对应的分区号,例如需要检查”/dev/sda2″
[root@linuxlz.com~]# badblocks -s -v /dev/sda2
Checking blocks 0 to 30681000
Checking for bad blocks (read-only test): 306809600674112/ 306810000000 30680964
30680965
30680966
30680967
30680968
30680969
30680970
30680971
30680972
30680973
...
done Pass completed, 37 bad blocks found.其中,“37 bad blocks found”表示硬盘存在37个坏块。
以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束
[root@linuxlz.com~]# badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
扫描硬盘的损坏扇区或区块并写入到临时文件夹下的bad-blocks.txt文件中
[root@linuxlz.com~]# badblocks -v -o /dev/sdb > /tmp/bad-blocks.txt
如果找到了坏道,可以进行写入扫描进行修复。写入扫描遇到坏道的时候会自动重映射。写入扫描会覆盖原有数据,所以请先备份。写入扫描速度很低,所以应该只扫描只读扫描时候发现错误的部分
[root@linuxlz.com~]# badblocks -w -s /dev/sdb END START