跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何检查Linux磁盘坏道 badblocks检测工具使用

badblocks 是 linux 下检测磁盘坏道的工具,使用时应先确认设备路径,再通过只读或写入方式扫描,并结合 e2fsck 标记坏道。1. 用 df -h 或 lsblk 确认磁盘设备如 /dev/sdb;2. 执行 sudo badblocks -sv /dev/sdb > bad_sectors.txt 进行只读扫描或加 -w 参数进行写入测试(慎用);3. 使用 sudo e2fsck -l bad_sectors.txt /dev/sdb 标记坏道,仅适用于 ext2/ext3/ext4 文件系统;4. 注意事项包括避免频繁写入测试、卸载分区后再运行、raid 成员盘可单独检测、ssd 不建议频繁写入测试。 Linux系统下,磁盘坏道的检测其实并不复杂,关键是要用对工具。
badblocks
是一个专门用来扫描硬盘是否存在物理损坏区域(也就是常说的“坏道”)的命令行工具,它在大多数Linux发行版中默认都已安装。 下面我们就来看看怎么用
badblocks
来检查磁盘坏道。 1. 确认磁盘设备路径 在使用 badblocks 之前,首先要确认你要检测的磁盘对应的设备文件路径。常见的设备名像
/dev/sda
、
/dev/sdb
这样的格式。可以通过以下命令查看当前系统挂载的磁盘情况:
df -h
或者列出所有块设备:
lsblk
如果你不确定哪个是目标磁盘,注意查看容量和挂载点信息。比如
/dev/sdb
可能是你外接的一块新硬盘,而
/dev/sda
很可能是系统盘。 ⚠️ 注意:千万不要在系统正在使用的分区上直接运行读写测试,否则可能导致系统崩溃或数据丢失。 2. 使用 badblocks 检测坏道 基本语法如下:
sudo badblocks [选项] [设备]
常用选项说明:
-s
:显示进度。
-v
:详细输出模式。
-b
:指定块大小(通常由文件系统决定,默认512字节)。
-p
:如果发现坏块,重复测试几次以确认。
-w
:进行写入测试(更彻底但也更危险)。 示例1:只读方式扫描磁盘
sudo badblocks -sv /dev/sdb > bad_sectors.txt
这条命令会以只读方式扫描
/dev/sdb
的所有扇区,并将结果保存到
bad_sectors.txt
文件中。 CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 示例2:写入方式扫描磁盘(慎用)
sudo badblocks -swvp 3 /dev/sdb > bad_sectors.txt
这个命令会对磁盘执行3次写入并验证操作,可以更准确地发现潜在问题,但 会破坏磁盘上的现有数据 ,所以一定要确保该磁盘没有重要数据或已经备份。 3. 结合 e2fsck 标记坏道 如果你打算修复磁盘并标记坏道,可以用
e2fsck
命令配合 badblocks 的输出来完成。 步骤如下: 首先运行 badblocks 并保存坏扇区列表:
sudo badblocks -sv /dev/sdb > bad_sectors.txt
然后运行 e2fsck 标记这些坏块:
sudo e2fsck -l bad_sectors.txt /dev/sdb
这样,系统就会知道哪些扇区有问题,以后不会再使用它们了。 ⚠️ 注意:只有当磁盘使用的是 ext2/ext3/ext4 文件系统时,才推荐使用这种方式处理坏道。 4. 实际使用中的注意事项 不要频繁写入测试 :虽然
-w
参数能更全面地检测,但频繁使用会影响磁盘寿命,尤其是机械硬盘。 最好在无数据盘上使用 :特别是写入模式,避免误删重要数据。 提前卸载磁盘分区 :运行 badblocks 前,建议先用
umount
卸载对应磁盘的所有分区。 RAID 或 SSD 也适用吗? RAID阵列中每个成员盘都可以单独检测。 SSD理论上也可以用 badblocks,但由于其磨损均衡机制,坏块管理更多依赖固件,不建议频繁使用写入测试。 基本上就这些。badblocks 虽然看起来简单,但如果用错了地方,反而可能带来麻烦。掌握好基本用法,结合实际场景选择合适参数,就能有效排查磁盘健康状况。

相关文章