在 Linux 系统下使用badblocks检测硬盘上的坏道和坏块

 

让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。随着坏道的继续积累,它们会对你的磁盘或闪存容量产生令人不快或破坏性的影响,甚至可能会导致硬件失效。同时还需要注意的是坏块的存在警示你应该开始考虑买块新磁盘了,或者简单地将坏块标记为不可用。

在这篇文章中,我们通过几个必要的步骤,使用特定的磁盘扫描工具让你能够判断 Linux 磁盘或闪存是否存在坏道。

使用badblocks检查坏道

坏块工具可以让用户扫描设备检查坏道或坏块。设备可以是一个磁盘或外置磁盘,由一个如

/dev/sdb5

这样的文件代表。
首先,通过超级用户权限执行 fdisk 命令来显示你的所有磁盘或闪存的信息以及它们的分区信息:

$ sudo fdisk -l

设备       启动    起点      末尾      扇区   大小 Id 类型
/dev/sdb1  *       2048   2000895   1998848   976M ef EFI (FAT-12/16/32)
/dev/sdb2       2002942 468860927 466857986 222.6G  5 扩展
/dev/sdb5       2002944 468860927 466857984 222.6G 83 Linux

然后使用badblocks命令检测坏道

语法:

badblocks [-svw][-b <区块大小>][-o <输出文件>][磁盘装置][磁盘区块数][启始区块]

参数说明

-b<区块大小> 指定磁盘的区块大小,单位为字节。
-o<输出文件> 将检查的结果写入指定的输出文件。
-s 在检查时显示进度。
-v 执行时显示详细的信息。
-w 在检查时,执行写入测试。
[磁盘装置] 指定要检查的磁盘装置。
[磁盘区块数] 指定磁盘装置的区块总数。
[启始区块] 指定要从哪个区块开始检查。

使用如下命令检查你的 Linux 硬盘上的坏道/坏块:

➜  ~ sudo badblocks -s -v /dev/sdb5 >badblocks.txt
正在检查从 0 到 233428991的块
检查坏块(只读测试): 进度   1.17%,用时 0:23。(0/0/0 个错误)

上面的命令中,badblocks 扫描设备/dev/sdb5(记得指定你的实际设备),-s显示选项进度(最好给这个选项,你能看见扫描进度,否则没进度,你会以为卡死了),-v选项让它显示操作的详情。另外,这里使用了输出重定向将操作结果重定向到了文件badblocks.txt。

如果你在你的磁盘上发现任何坏道,卸载磁盘并像下面这样让系统不要将数据写入回报的扇区中。

你需要执行e2fsck(针对 ext2/ext3/ext4 文件系统)或fsck命令,命令中还需要用到badsectors.txt文件和设备文件。

-l 选项告诉命令将在指定的文件 badblocks.txt中列出的扇区号码加入坏块列表。

//针对 for ext2/ext3/ext4 文件系统
$ sudo e2fsck -l badblocks.txt /dev/sdb5
//针对其它文件系统
$ sudo fsck -l badblocks.txt /dev/sdb5

参考自:

https://blog.csdn.net/u014743697/article/details/53316126

https://www.runoob.com/linux/linux-comm-badblocks.html

你可能感兴趣的:(Linux)