让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。随着坏道的继续积累,它们会对你的磁盘或闪存容量产生令人不快或破坏性的影响,甚至可能会导致硬件失效。同时还需要注意的是坏块的存在警示你应该开始考虑买块新磁盘了,或者简单地将坏块标记为不可用。
在这篇文章中,我们通过几个必要的步骤,使用特定的磁盘扫描工具让你能够判断 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)