如何修复当前待处理扇区数

从SMART Data,它显示我有3个待处理的扇区计数。 (运行Ubuntu Maverick。)

我尝试关注如何解决该问题的论坛链接 ,但我无法确定要写入该扇区的确切扇区数。 我从磁盘工具中运行完整的自检,但磁盘实用程序没有显示Maverick中的确切扇区号,但不确定早期版本。 这是在Maverick改变了吗?

我如何识别该部门并修复该待处理计数? 论坛中的提示是否安全?

PS:我确实有其他问题与“重新分配的扇区数量”,从我用谷歌搜索,它不可修复..有没有办法防止它上升?

这实际上是一个很长的评论;-)

IMO文件系统应该在适当的时候自动处理它,特别是因为你已经运行了自检。 正如您所看到的那样,状态重映射是在写入失败的情况下完成的,所以下次尝试写入时,它将被重新映射。

你能说出这样做背后的更大目的吗? 除了对需要重新映射的块的关注之外,还有其他烦恼/问题,你试图解决这个问题吗?

你引用的ubuntuforumspost中的提示是安全的,只要你确切知道哪个扇区坏了并且有令人信服的理由来解决它。 通常,即使文件检查程序也不报告扇区#,因为它是由文件系统在内部抽象和处理的。

但如果您必须找到有问题的坏块,可以使用以下步骤:

  1. 请注意与文件系统对应的设备文件。 它的格式为/ dev / hdc或/ dev / sdb,具体取决于磁盘类型。 这将显示在“磁盘工具”( System -> Administration -> Disk Utility )中。 如果单击左侧面板中显示的列表中的磁盘名称,则可以通过右侧的“设备:”读取设备名称。

  2. 卸载该磁盘中的所有文件系统。 以下命令不应返回任何输出。

     mount | grep -i  
  3. 运行以下命令

     badblocks -sv -b 512  

    注意 -b 512是将blocksize对齐到512,因此您可以使用此命令报告的数字作为dd输入,如论坛post中所述

我不推荐以上所有,因为它通常由正常的磁盘操作处理。

更糟糕的情况是,您始终可以执行此操作:卸载磁盘或arrays并停止任何arrays。

 dd if=/dev/sdX of=/dev/sdX iflag=direct,sync oflag=direct,sync 

这需要很长时间,但应该有效。

理想情况下,您可以查询硬盘驱动器增长缺陷列表(glist),但我还没弄清楚如何做到这一点。

看起来conv=noerror选项有帮助。 当出现i / o错误时,看起来此选项强制dd重试直到它完成读/写。 我使用以下命令为badblocks命令找到的每个坏块创建了一个源文件(由上面的Kaushik给出),并将“当前待定扇区计数”(“等待重新映射”)从5清除为零。

 sudo dd bs=512 count=1 conv=noerror ibs=512 obs=512 if=/dev/sda of=/dev/sda iflag=direct,sync oflag=direct,sync skip=3186809 seek=3186809 

当它超过0时,通常表示即将发生驱动器故障。 我不相信这可以在不更换硬盘的情况下修复。

请参阅http://kb.acronis.com/content/9133?nocache=1