麒麟系统出现i/o错误等异常时,硬盘很可能已产生坏道,需立即用麒麟管家查看健康检测中的重映射扇区计数等标红指标,或用smartctl核查s.m.a.r.t.原始值,再通过badblocks扫描定位并屏蔽坏块。

当麒麟系统出现文件复制失败、I/O错误、启动卡在“Boot From Harddisk”或dmesg日志中频繁报“Input/output error”时,说明硬盘很可能已产生坏道,必须立即检查确认——坏道不及时识别和隔离,后续会引发文件损坏甚至系统崩溃。
用麒麟管家图形化查看坏道风险指标
这是最直观、适合普通用户的入口,直接调用底层SMART传感器,无需命令行操作,但仅能提示风险,不能定位具体扇区。
1、点击左下角“开始菜单”,在应用列表中找到并打开“麒麟管家”。
2、左侧导航栏选择“设备管理” → 右侧顶部工具栏点击“健康检测”按钮。
3、首次使用需授权:弹出硬件传感器访问提示后,点击“允许”,输入管理员密码完成授权。
4、等待扫描完成,重点关注三项标红指标:【重映射扇区计数】(Reallocated_Sector_Ct)、【当前待映射扇区数】(Current_Pending_Sector)、UDMA_CRC错误计数;任一标红即表明物理坏道已实际发生,不是预警而是确认。
用smartctl读取S.M.A.R.T.原始数据确认坏道存在
该方法绕过图形界面,直接解析硬盘固件日志,结果权威、可量化,是运维人员判断坏道真实性的核心依据。
方法一:快速健康状态判别
1、Ctrl+Alt+T打开终端 → 输入su回车 → 输入root密码获取权限。
2、执行lsblk -d -o NAME,MODEL,ROTA,TRAN | grep -E "(sda|nvme)",确认目标磁盘(如/dev/sda)。
3、运行sudo smartctl -H /dev/sda;若返回“PASSED”仅说明基础自检通过,不能排除坏道——很多早期坏道不会触发整体失败。
方法二:深度字段核查(关键步骤)
1、执行sudo smartctl -a /dev/sda | grep -E "(Reallocated_Sector|Current_Pending|Raw_Read_Error|UDMA_CRC)"。
2、重点看三列原始值(RAW_VALUE):Reallocated_Sector_Ct > 5、Current_Pending_Sector ≠ 0、Raw_Read_Error_Rate持续上升,三者满足任一即为确证坏道。
3、若Current_Pending_Sector非零,说明硬盘已发现不可读扇区但尚未成功重映射——此时必须立即备份数据,该扇区随时可能彻底失效。
用badblocks逐扇区扫描定位逻辑坏块位置
前两种方法只能告诉你“有坏道”,而badblocks能精确到字节偏移地址,生成坏块列表供屏蔽,适用于ext4/xfs等已格式化分区的底层验证。
第一步:准备环境
1、先确认目标分区未被挂载:运行mount | grep sda2,若有输出则执行sudo umount /dev/sda2;若提示“target is busy”,用sudo lsof +D /mount/point查进程并kill。
第二步:执行只读扫描(安全)
1、运行sudo badblocks -v -s /dev/sda2 > /tmp/badsectors.txt 2>&1;-v显示进度,-s实时刷新,>重定向结果,2>&1合并错误流。
2、扫描耗时取决于磁盘容量与转速,机械盘1TB约需2–4小时;扫描期间禁止中断电源或强制关机,否则可能损坏文件系统元数据。
第三步:写入坏块列表(仅ext4有效)
1、执行sudo e2fsck -l /tmp/badsectors.txt /dev/sda2;此操作将坏块写入ext4文件系统预留区,内核后续分配数据块时自动跳过。
2、验证是否生效:运行sudo dumpe2fs -h /dev/sda2 | grep -i "bad",输出中“Bad blocks count”值大于0即表示屏蔽成功。











