如何修复当前待处理扇区数
从SMART Data,它显示我有3个待处理的扇区计数。 (运行Ubuntu Maverick。)
我尝试关注如何解决该问题的论坛链接 ,但我无法确定要写入该扇区的确切扇区数。 我从磁盘工具中运行完整的自检,但磁盘实用程序没有显示Maverick中的确切扇区号,但不确定早期版本。 这是在Maverick改变了吗?
我如何识别该部门并修复该待处理计数? 论坛中的提示是否安全?
PS:我确实有其他问题与“重新分配的扇区数量”,从我用谷歌搜索,它不可修复..有没有办法防止它上升?
这实际上是一个很长的评论;-)
IMO文件系统应该在适当的时候自动处理它,特别是因为你已经运行了自检。 正如您所看到的那样,状态重映射是在写入失败的情况下完成的,所以下次尝试写入时,它将被重新映射。
你能说出这样做背后的更大目的吗? 除了对需要重新映射的块的关注之外,还有其他烦恼/问题,你试图解决这个问题吗?
你引用的ubuntuforumspost中的提示是安全的,只要你确切知道哪个扇区坏了并且有令人信服的理由来解决它。 通常,即使文件检查程序也不报告扇区#,因为它是由文件系统在内部抽象和处理的。
但如果您必须找到有问题的坏块,可以使用以下步骤:
-
请注意与文件系统对应的设备文件。 它的格式为/ dev / hdc或/ dev / sdb,具体取决于磁盘类型。 这将显示在“磁盘工具”(
System -> Administration -> Disk Utility
)中。 如果单击左侧面板中显示的列表中的磁盘名称,则可以通过右侧的“设备:”读取设备名称。 -
卸载该磁盘中的所有文件系统。 以下命令不应返回任何输出。
mount | grep -i
-
运行以下命令
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