我今天收到通知,我的硬盘将在 24 小时内出现故障。 “Reallocated_Sector_Ct”已经在 3000 左右,并且在过去几个小时内已升至 4004。但是,几周前我将机箱翻过来,并尝试将其恢复直立。从那时起,“Reallocated_Sector_Ct”就没有上升,尽管当前有很多磁盘活动,因为我将重要数据 tar/zipping 到另一个驱动器。
我知道硬盘无法从侧面读取是一个问题,但如果将硬盘直立放置似乎暂时可以解决问题,至少我不必那么惊慌。
有没有办法可以对这些“坏扇区”进行重新测试,如果通过测试就将它们标记为良好?我想看看在盒子直立的情况下重新测试后有多少“真正”的坏扇区(当然我会在备份完成后这样做)。
我正在使用 Debian,如果这有什么区别的话。
答案1
我只能附议冯布兰德的答案。在过去的一个月里,我看到至少有两个 HDD 在 SMART 中发生预故障后死亡。
然而,您最好的选择可能不是 SMART 本身,而是badblocks
实用程序。
您可以badblocks
读取和重写整个磁盘,从而强制您的 HDD 重新分配挂起的扇区。这通常效果很好。
如果您没有时间运行badblocks
(在较大的磁盘上可能需要几天时间),您可以尝试读出 SMART 错误日志(smartctl -x /dev/<hdd>
并获取损坏扇区的列表。
然后您可以使用hdparm
读取该扇区:
hdparm --read-sector <sector> /dev/<hdd>`
如果失败,您可以使用强制重新映射
hdparm --yes-i-know-what-i-am-doing --write-sector <sector> /dev/<hdd>`
这工作得很好(至少对于 WD-Green 驱动器来说,你不能告诉其他驱动器吗)
如果您有dmesg
失败扇区的日志消息,那就更容易了。
sectors=$(dmesg | grep <hdd> | grep sector | awk '{print $8}')
for s in $sectors; do <hdparm stuff>; done
在再次安装卷之前执行强制fsck
fsck -f -y /dev/<hdd>
假设昨天你的动力已经耗尽!
祝你好运 :)
答案2
关闭机器,并获取替换磁盘现在!硬盘中的坏扇区往往呈指数级增长,大量数据丢失迫在眉睫。
答案3
我不认为可以重新测试驱动器已标记为损坏并重新映射的扇区。这将是“将其送回保修”领域。 (例如,理论上供应商可能拥有可以验证和重置此类驱动器的工具)。