我有一个驱动器,它发出了 SMART 错误信号(Current_Pending_Sector
是1
),并且我对该驱动器运行了“长时间离线测试”,它报告了零错误。
这是在运行“短离线测试”后发生的,该测试识别出一个不可读扇区,强制重新定位该扇区,并重建一个软件 RAID 设备,该驱动器是其中的一个成员。我相当确定此时驱动器是干净的。
有没有办法清除 的1
值Current_Pending_Sector
? 的手册页smartctl
似乎没有提到如何更改属性值。这可能吗,还是 SMART 本质上是只读的?
答案1
SMART 本质上是只读的。
您可以通过修复底层问题并允许驱动器自行解决(如果可以的话!)来改变该值。
从类似的问题来看,“我应该如何理解‘当前待处理部门数量’
稍后,当其中一些扇区被成功读取时,该值就会降低。
请注意需要发生的两件事:
- 必须读取该扇区
- 读取必须成功
如果硬盘扇区遭受永久性损坏,该数字将绝不降回零。发生这种情况时,我喜欢更换硬盘,并让 RAID 阵列或镜像设置的冗余解决该问题。
答案2
SMART 值是只读的,除非您有权访问特定驱动器供应商的特定工具。
另请查看这个问题的答案。
答案3
可接受的答案是错误的 - 一旦待处理扇区得到解决,待处理扇区计数将降至 0,并且最终保证会得到解决。(它被称为“待处理”是有原因的!)这可以通过后续成功读取(不太可能)或写入扇区时发生。写入时,写入将成功,或失败但无害,扇区将被重新分配。无论如何,它将不再是待处理扇区。
为了加速此过程,您可以手动覆盖该扇区。最安全的方法是识别包含坏扇区的文件(文件系统相关进程),然后覆盖文件(非 CoW 文件系统)或对所有可用空间进行零填充(CoW 文件系统)。如果您特别勇敢或不关心文件系统,您可以直接使用 hdparm 覆盖扇区。这里有一个很好的解释如何做到这一点:如何使用 hdparm 修复待处理的扇区?