smartctl 重新测试坏道

Cli*_*ton 6 hard-disk smartctl

我今天收到通知,我的驱动器将在 24 小时内出现故障。'Reallocated_Sector_Ct' 已经在 3000 左右,并且在过去几个小时内升至 4004。然而,几周前我把我的情况从一边倒过来,并试图把它直立起来。从那时起,'Reallocated_Sector_Ct' 就没有上升,即使目前有很多磁盘活动,因为我正在将我的重要数据 tar/zip 压缩到另一个驱动器。

我知道硬盘无法从侧面读取是一个问题,但如果将硬盘直立放置似乎暂时可以解决问题,至少我不必那么恐慌。

有没有办法可以对那些“坏扇区”进行重新测试,并在它们通过测试后将它们标记为好?我想看看有多少“真正的”坏扇区在重新测试后将盒子直立(当然我会在备份完成后这样做)。

如果这有什么不同,我正在使用 Debian。

kei*_*u4U 12

我只能支持冯布兰德的回答。在过去的一个月里,我看到至少有两个 HDD 在 SMART 中预故障后死亡。

但是,您最好的选择可能不是 SMART 本身,而是badblocks实用程序。

您可以让badblocks读取和重写整个磁盘,从而强制您的 HDD 重新分配挂起的扇区。这通常工作得很好。

如果您没有时间运行badblocks(在更大的磁盘上可能需要几天时间),您可以尝试读取 SMART 错误日志(smartctl -x /dev/<hdd>并获取损坏扇区的列表。

然后您可以使用hdparm读取扇区:

hdparm --read-sector <sector> /dev/<hdd>` 
Run Code Online (Sandbox Code Playgroud)

如果失败,则使用强制重新映射

hdparm --yes-i-know-what-i-am-doing --write-sector <sector> /dev/<hdd>` 
Run Code Online (Sandbox Code Playgroud)

这很有效(至少对于 WD-Green 驱动器,您不能告诉其他驱动器的任何信息)

如果您有dmesg失败扇区的日志消息,那就更容易了。

sectors=$(dmesg | grep <hdd> | grep sector | awk '{print $8}')

for s in $sectors; do <hdparm stuff>; done
Run Code Online (Sandbox Code Playgroud)

在再次安装卷之前做一个强制 fsck

fsck -f -y /dev/<hdd> 
Run Code Online (Sandbox Code Playgroud)

并假设昨天有驱动器死在你身上!

祝你好运 :)


von*_*and 3

关闭机器,立即更换磁盘!硬盘中的坏扇区往往呈指数级增长,大量数据丢失迫在眉睫。

  • Vonbrand:你是对的,磁盘出现故障。不过我确实保存了数据。 (3认同)