- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
本篇技术指南围绕 Linux 命令速查仓库 command/badblocks.md 展开,系统讲解badblocks命令的语法、选项、参数与实战用法,并深入介绍其与fsck、e2fsck、mkfs等磁盘维护工具的协作方式,帮助你掌握硬盘坏道定位、屏蔽与格式化前预检的完整方案。
badblocks 是什么
硬盘是典型的损耗设备,使用一段时间后可能出现坏道等物理故障。出现坏道后如果不及时处理,坏道会持续扩散,造成频繁死机与数据丢失。最稳妥的做法是更换磁盘,但在临时场景下,应当尽快定位并屏蔽坏道所在扇区,避免读写操作触碰这些区域。
badblocks 命令正是用于查找磁盘中损坏区块(bad block)的工具,它通过扫描磁盘的每一个区块来判断哪些位置已经损坏,并将结果输出到指定文件,为后续的文件系统检查与格式化操作提供坏道清单。在本仓库的 README.md 中,badblocks被归类在「磁盘维护」命令分类下,与fdisk、e2fsck、fsck、mkfs等命令并列,是 Linux 磁盘健康管理的基础工具之一。
语法与参数说明
badblocks的基本语法如下:
badblocks(选项)(参数)选项
-b<区块大小>:指定磁盘的区块大小,单位为字节; -o<输出文件>:将检查的结果写入指定的输出文件; -s:在检查时显示进度; -v:执行时显示详细的信息; -w:在检查时,执行写入测试。各选项的作用说明如下:
| 选项 | 含义 | 使用要点 |
|---|---|---|
-b <区块大小> | 指定扫描时使用的区块大小(字节) | 应与文件系统实际的块大小(如 4096)保持一致,避免误判 |
-o <输出文件> | 把坏道区块号写入指定文件 | 输出文件为纯文本,每行一个区块号,供后续fsck -l、e2fsck -l直接引用 |
-s | 检查时显示进度 | 适合长时间扫描时掌握任务状态 |
-v | 显示详细信息 | 输出每个被检查区块的状态,便于观察 |
-w | 执行写入测试 | 通过写入并回读数据判断坏道,会破坏数据,务必先备份 |
参数
* 磁盘装置:指定要检查的磁盘装置; * 磁盘区块数:指定磁盘装置的区块总数; * 起始区块:指定要从哪个区块开始检查。三个位置参数按「设备 → 区块总数 → 起始区块」的顺序排列。其中「磁盘区块数」与「起始区块」均为可选参数,当指定了它们时,badblocks只扫描起始区块到区块总数之间的区间,这在只需要针对可疑区域复查时非常高效。
实战一:全盘扫描并输出坏道清单
以 4096 字节为一个区块,对每个区块检查 16 次,并将结果输出到hda-badblocks-list文件中:
badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list说明:
-c <次数>指定每个区块的检查次数(即原文档实例中「每一个 block 检查 16 次」的由来),次数越多对坏道的检出越可靠,但耗时也越长。
hda-badblocks-list是一个文本文件,每行记录一个坏道区块号,内容大致如下:
cat hda-badblocks-list 51249 51250 51251 51253 51254 …… 61245 ……这份清单可以直接保存备用,作为后续屏蔽坏道的依据。
实战二:针对可疑区块的局部复查
全盘扫描结果出来后,往往需要对可疑区域做多次复检,以确认坏道的真实范围。下面的命令以 4096 字节为一个区块、每个区块检查 1 次,从第 51000 个区块开始、到第 63000 个区块结束,结果输出到hda-badblocks-list.1文件:
badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000指定了检查区间后耗时明显缩短,检查时硬盘在短时间内就会产生明显的读写声响。由于每次检查的条件(如磁盘负载、缓存状态)略有不同,输出的结果也不会完全一致,因此建议对可疑区域重复几次同样的操作,每次结果略有差异属正常现象。经过多轮复查后,可以汇总结出最终的hda-badblock-list.final文件,作为可靠的坏道清单。
将坏道清单交给 fsck:跳过坏块继续检查
badblocks本身只在输出文件中标记坏道信息,不会直接修改文件系统。若希望在文件系统检查(fsck)时跳过这些坏块、避免反复触碰损坏区域,可以使用fsck的-l参数加载坏道清单:
fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1这样fsck在检查文件系统时就会把清单中的区块视为坏块并予以跳过。关于fsck命令的更多用法(如-y自动应答、-t指定文件系统类型等),可参考仓库中的 command/fsck.md。
值得一提的是,e2fsck的-c选项可以直接「一并执行 badblocks,以标示损坏的区块」,而-l <文件>/-L <文件>选项则可以分别「将文件中指定的区块加到损坏区块列表」或「先清除损坏区块列表再加入指定区块」,与badblocks的文本输出天然衔接。详见 command/e2fsck.md。
创建文件系统前预检坏道
在格式化磁盘之前先检测坏道,可以避免把文件系统建立在损坏区域之上。badblocks可以随e2fsck和mke2fs的-c选项一起运行(对 ext3 文件系统同样适用),在创建文件系统前先完成坏道检测:
mkfs.ext3 -c /dev/hda1mkfs.ext3 -c采用只读(read-only)方式检查硬盘,会在格式化时逐个用读取的方式扫描每个区块,并自动标记出错误的区块。用这种方式格式化硬盘需要相当大的耐心,因为整个坏道检测过程是逐块进行的,耗时明显长于普通格式化。
说明:
mke2fs的-c选项即「检查是否有损坏的区块」,-l <文件>选项可「从指定的文件中读取损坏区块的信息」——也就是说,你完全可以把前面badblocks输出的hda-badblock-list.final直接交给mke2fs使用,而不是重复扫描。相关选项细节可参见 command/mke2fs.md。通用格式化工具mkfs同样提供-c选项,用于「在制作文件系统前检查该分区是否有坏轨」,参见 command/mkfs.md。
坏道修复流程小结
结合本仓库 command/hdparm.md 中「硬盘坏道修复方法」一节的整理,一套完整的坏道定位与屏蔽流程如下:
检查:smartctl -l selftest /dev/sda # 查看硬盘自检日志,初步定位异常 卸载:umount /dev/sda* # 卸载分区,避免检测时写入造成干扰 修复:badblocks /dev/sda # 扫描坏道,输出清单并据此屏蔽实际操作时注意:
- 检测前务必备份重要数据,
-w写入测试会破坏分区内数据; - 对正在使用中的分区做检测,建议先
umount卸载,否则结果可能失真; - 全盘扫描耗时长,可以结合
-s进度选项监控状态,或利用「区块数 + 起始区块」参数只针对可疑区间复检; - 将最终坏道清单保存为
xxx.final文件,通过fsck -l或e2fsck -l在检查时跳过坏块,或在mkfs -c格式化时一并处理。
这样一套「扫描 → 复检 → 清单落地 → 检查/格式化时引用」的流程,就是 Linux 运维中应对硬盘坏道的标准操作闭环,也是本仓库 command/badblocks.md 文档所承载的核心实战价值。
- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
相关推荐
OpenProject解决方案:如何构建企业级开源项目管理平台实现团队协作转型
OpenProject解决方案:如何构建企业级开源项目管理平台实现团队协作转型 在数字化转型浪潮中,技术团队面临的核心挑战已从单纯的技术实现转向复杂项目的高效协
后端前端项目管理企业应用协同办公Linux 光盘刻录命令 cdrecord 实战指南(linux-command 命令手册详解)
Linux 光盘刻录命令 cdrecord 实战指南(linux command 命令手册详解) 本篇指南聚焦 Linux 系统下的经典刻录命令 cdrecor
文档教程Linux 磁盘空间排查实战:df 命令全面详解与输出解读
Linux 磁盘空间排查实战:df 命令全面详解与输出解读 df (disk free)是 Linux 系统管理员与运维工程师使用频率最高的磁盘监控命令之一,用
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考