目 录CONTENT

文章目录

Nas硬盘嘎的情况后续——检查硬盘

过客
2026-03-11 / 0 评论 / 1 点赞 / 2 阅读 / 0 字

经过20多个小时的等待,4T多的数据终于备份到移动硬盘上去了,接下来就要找原因了。

分析

硬盘柜里的5个盘在系统中的盘符为 sdc~sdg,其中初步判定sdg盘有问题,将5个盘都移除mdadm 组的raid5。

1. 查看硬盘基本信息与 SMART 健康状态

  • 这是最基础的检查,分别检查5个盘的信息
smartctl -A /dev/sdc
smartctl -A /dev/sdd
smartctl -A /dev/sde
smartctl -A /dev/sdf
smartctl -A /dev/sdg

  • 虽然数据很多,我们只要关心几个关键数据就可以了
ID 属性名称 (Attribute Name) 含义 判断标准
1 Raw_Read_Error_Rate 读取错误率 希捷硬盘此值通常很大是正常的,但其他品牌若 RAW 值很高则需注意。
5 Reallocated_Sector_Ct 重映射扇区计数 最重要指标。如果RAW_VALUE(原始值) 不为 0 且在增加,说明发现了坏道,硬盘已用备用扇区替换。数值越大,坏道越多。
9 Power_On_Hours 通电时间 硬盘累计通电小时数(反映使用时长),休眠累加、只有完全断电才不累加。
12 Power_Cycle_Count 通电次数 判断硬盘启停频率。
187 Reported_Uncorrect 无法校正的错误计数 读写时发生的无法修复的错误。非 0 值通常意味着严重的物理损坏
188 Command_Timeout 命令超时 硬盘响应命令超时的次数,
192 Power-Off_Retract_Count 磁头断电回缩次数 数字越高,非正常断电越频繁
197 Current_Pending_Sector 当前待映射扇区 表示不稳定的扇区,读取出错但尚未被重映射。如果此值不为 0,说明有疑似坏道,下次写入时可能会变成正式坏道(ID 05 会增加)。
199 UDMA_CRC_Error_Count 接口通信错误 通常不是硬盘本身坏了,而是SATA 数据线或接口接触不良。尝试更换数据线。

实在不想看,就直接复制所有数据丢给AI,让他分析把结果发回来就行了。

5个硬盘的数据下来,发现了几个问题。

    1. 有二个盘的 188 超时值非常高,都几十亿上百亿了,这说明这二个盘可能接口的线松了。
    1. sdg盘的 187 无法修正的错误值也有几万了,说明这个盘基本报废。
    1. 所有盘的 192磁头紧急回缩次数非常高,正常硬盘柜的自动休眠应该是发休眠指令让硬盘停转(磁头归位、盘片停转)以降低功耗,但硬盘本身仍保持通电状态,而不是像断电一下直接切断硬盘电源,不会增加192次数。硬盘柜外接了UPS,**极有可能硬盘柜用久了出问题了,导致借供电不稳定,让硬盘误判为“断电”。

处理:拆出硬盘,用酒精擦拭接口后换位插入硬盘柜。(盘符变了但UUID没变,后面依然以原判符来陈述)

2. 快速筛选

  • 使用smartctl -t short快速通电测试。
smartctl -t short /dev/sdc
...
smartctl -t short /dev/sdg

  • 会显示大致什么时候结束,一般是几分钟,然后使用smartctl -l selftest查看结果
smartctl -l selftest /dev/sdc
...
smartctl -l selftest /dev/sdg

  • 如果看到Completed without error,说明快速自检基本没问题,
  • sdg出现了Fatal error,说明这盘已经嘎了,不用后续了。

3. 深度检测与修复

使用Badblocks破坏性写入测试,这会强制重写所有扇区,触发硬盘重映射坏道。只针对sdc~f四个盘。

  • 安装工具
apt install badblocks -y
  • 开始测试,这个时间很长,要几个小时
    • -w: 写入模式 (破坏数据,反正已备份)。
    • -s: 显示进度。
    • -v: 详细输出。
# 窗口1
badblocks -w -s -v /dev/sdc > /root/sdc_badblocks.log 2>&1
# 窗口2
badblocks -w -s -v /dev/sdd > /root/sdd_badblocks.log 2>&1
# 窗口3
badblocks -w -s -v /dev/sde > /root/sde_badblocks.log 2>&1
# 窗口4
badblocks -w -s -v /dev/sdf > /root/sdf_badblocks.log 2>&1
  • badblocks 全盘写入测试,它会向每个 block 写入特定模式(4 种模式),再读回验证,因此是高负载、低速操作,这个速度比较慢,4个盘检查完用了30多个小时。

日志显示四个盘基本都是正常的

Checking for bad blocks in read-write mode
From block 0 to 3907018583
Testing with pattern 0xaa: done                                                 
Reading and comparing: done     
Testing with pattern 0x55: done                                                 
Reading and comparing: done  
Testing with pattern 0xff: done                                                 
Reading and comparing: done                                                 
Testing with pattern 0x00: done                                                 
Reading and comparing: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

为什么187 无法校正的错误有,但badblocks没有报错呢?* badblocks 测试的是​逻辑扇区​。当它尝试读写一个物理坏道时,如果硬盘固件能用备用扇区成功重映射(Reallocate),那么 badblocks 就会认为这个逻辑扇区是“好”的。也有可能是固件在遇到这 18 个错误时,​直接放弃了修复​,导致 badblocks 在读取时可能得到了错误的数据,但它自己无法校验数据内容是否正确,所以没报错

结论

最后测试下来,5块盘嘎一个(smartctl -t short测试失败),病危一个(187无法校正的错误计数也有几十个),硬盘柜可能存在电源不稳情况。心累了,毁灭吧。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区