我从 Linux Mint 上的 Disk Utility 中获取了以下信息:
Current Pending Sector Count:
Normalized: 200
Worst: 200
Threshold: 0
Value: 22 sectors
这是什么意思?可以修复该错误吗?
答案1
这意味着有22个扇区无法读取。下次写入这些扇区时,如果无法正确写入,它们将被重新映射到备用扇区。您可以使用该badblocks
实用程序来定位坏扇区,并dd
写入它们:
sudo badblocks -b 512 /dev/sda
对于列出的每个扇区,首先验证它是否无法读取:
sudo dd if=/dev/sda of=/dev/null bs=512 count=1 iflag=direct skip=[sector]
这应该会因 IO 错误而失败。如果是这样,请继续编写:
sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 oflag=direct seek=[sector]
使用 badblocks 给定的扇区号作为 [sector]。执行此操作后,再次检查 SMART 统计信息,待处理计数应为零。如果写入失败并且从备用池重新分配扇区,则重新分配的计数可能会增加。如果发生这种情况,您可能需要更换磁盘。如果没有,那么一切都已修复。
答案2
答案3
也许重新映射各个扇区的更安全方法是使用hdparm
:
$ sudo hdparm --read-sector 12345678 /dev/sdx # verify that there is a read error
$ sudo hdparm --yes-i-know-what-i-am-doing --write-sector 12345678 /dev/sdx
与 不同的是dd
,hdparm
它设计用于单个扇区,因此由于拼写错误而导致一半磁盘损坏的可能性较小。
除了 之外badblocks
,内核日志 ( dmesg | grep sector
) 或 SMART 报告 ( smartctl -x
) 中还会报告已知的不可读扇区。如果此类扇区的数量如此之多,以至于手动重新映射它们是不切实际的,我实际上会考虑更换 HDD,因为这是即将发生永久性故障的迹象。