可以制作磁盘来识别特定的待处理扇区吗?

可以制作磁盘来识别特定的待处理扇区吗?

smartd会很高兴地记录这样的消息:

Sep  2 12:33:59 Watt smartd[438]: Device: /dev/sda, 2 Offline uncorrectable sectors
Sep  2 12:34:01 Watt smartd[438]: Device: /dev/sdc, 16 Currently unreadable (pending) sectors
Sep  2 12:34:01 Watt smartd[438]: Device: /dev/sdc, 16 Offline uncorrectable sectors

这些都用于 mdraid 阵列,因此可以通过 mdraid 清理阵列轻松修复。但这需要很长一段时间(并且会损害性能)。选择性地仅擦洗需要的部件会快得多。

有没有办法从磁盘获取待处理扇区列表?我没有看到任何东西smartctl -x,但这里是sdaSDDC如果有帮助的话。 (是的,sdc 很快就会被替换。)如果我可以获得扇区列表,我可以将其提供给 mdraid 以仅擦除那些部分。

这些都是SATA磁盘。如果重要的话,机器正在运行 Debian 测试/不稳定。但我很想在运行 Debian stable 和 oldstable 的机器上解决这个问题。

答案1

我认为这应该由缺陷日志,如果支持的话:

smartctl -l defects /dev/sdX

但是,我无法确认,因为我从驱动器收到的消息是Pending Defects log (GP Log 0x0c) not supported.从 smartctl 手册页:

缺陷[,NUM] - [仅限 ATA] 打印 ATA 待处理缺陷日志(通用日志地址 0x0c)中的 LBA 和小时值。默认情况下仅打印第一个日志页中的 31 条条目。该数字可以通过可选参数 NUM 进行更改。日志的大小和条目的顺序是特定于供应商的。待处理缺陷日志是在 ACS-4 修订版 01(2014 年 3 月)中引入的。

选择

如果您的驱动器不支持缺陷日志,您可能会发现简短的自检将检查挂起的扇区并立即中止并出现读取错误,并在此过程中为您提供 LBA:

smartctl -t short /dev/sdX

# then wait ~ 1 minute for the test to complete, and check the log:

smartctl -l selftest /dev/sdX

然后你可以按照 smartmontools 文档中的步骤操作处理坏扇区/块。

相关内容