it-swarm.cn

如何解决当前待处理的扇区数

从SMART=数据,它表明我有3个待处理的扇区数。(正在运行Ubuntu Maverick。)

我尝试遵循 有关如何解决该问题的论坛链接 ,但是我无法确定要写入该扇区的确切扇区数。我已经从“磁盘工具”中运行了完整的自我测试,但是“磁盘工具”在Maverick中没有显示确切的扇区号,尽管不确定较早的版本。小牛的情况有变化吗?

我如何识别部门并解决未决计数?论坛中的提示安全吗?

PS:我确实对“重新分配的部门数”还有其他问题,这是我无法解决的。是否有什么方法可以防止它上升?

8
Vish

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

IMO文件系统应在适当的时候自动进行处理,特别是因为您已经运行了自检。如您所见,它指出在发生写入失败时重新映射已完成,因此下次尝试尝试对其进行写操作时,它将被重新映射。

您能否说明这样做的更大目的?除了担心需要重新映射的块外,您是否要通过此方法解决其他烦恼/问题?

您所引用的ubuntuforums帖子中的提示是安全的,只要您确切知道哪个扇区出现问题并有令人信服的理由对其进行修复即可。通常,即使文件检查程序也不会报告扇区号,因为它是文件系统在内部进行抽象和处理的。

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

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

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

    mount | grep -i <device-name>
    
  3. 运行以下命令

    badblocks -sv -b 512 <device-name>
    

    注意-b 512是将块大小调整为512,因此您可以使用此命令报告的数字作为dd的输入,如 论坛帖子 中所述

我不建议您使用上述所有方法,因为正常的磁盘操作还是可以解决上述问题。

7
koushik

看起来像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
1
Vis

当该值超过0时,通常表示驱动器即将发生故障。我认为不更换硬盘就无法解决此问题。

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

1
Malcolm McCaffery

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

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

这将花费很长时间,但应该可以。

理想情况下,您可以查询硬盘驱动器缺陷列表(glist),但我还没有弄清楚该怎么做。

1
Jim Mills