SMART 在我的其中一个磁盘上发现了不可恢复的读取错误,但zpool status
将所有磁盘列为“在线”(IE 未降级)。
- 你知道为什么会这样吗?我认为 ZFS 会尽快知道任何错误...
- 我是否需要运行清理才能重新检查所有磁盘的状态?
- 我可以让 SMART 自动向 ZFS 报告吗?
答案1
- 你知道为什么会这样吗?我认为 ZFS 会尽快知道任何错误...
- 我是否需要运行清理才能重新检查所有磁盘的状态?
- 我可以让 SMART 自动向 ZFS 报告吗?
- 不,它不会一直检查所有块,它只是确保每个写入块在需要/访问时都可以被考虑(如果冗余可用,则可以恢复)。根本不检查空白空间(因为那里没有有价值的数据,所以这会浪费时间),并且仅在读取时检查普通数据(因为写入是仅追加的)。正如 mmusante 所说,只有当错误严重并且无法自动恢复时,您才会收到错误消息(否则,您只会看到一条通知,并且错误计数
zpool status
)。 - 是的。
定期(通过 cronjob)清理池可能会更容易。对于企业级磁盘,常见的建议时间约为每月一次,对于消费级磁盘,建议每周一次。否则,您可以使用以下命令开始手动擦洗来自 smartmontools 的脚本:
大多数时候,您只需将脚本放置在 /etc/smartmontools/run.d/ 中。每当 smartd 想要发送报告时,它就会执行 smart-runner,后者将运行您的脚本。
您的脚本有多个可用变量(再次参见 smartd 手册页)。这些来自测试运行:
SMARTD_MAILER=/usr/share/smartmontools/smartd-runner SMARTD_SUBJECT=SMART error (EmailTest) detected on host: XXXXX SMARTD_ADDRESS=root SMARTD_TFIRSTEPOCH=1267409738 SMARTD_FAILTYPE=EmailTest SMARTD_TFIRST=Sun Feb 28 21:45:38 2010 VET SMARTD_DEVICE=/dev/sda SMARTD_DEVICETYPE=sat SMARTD_DEVICESTRING=/dev/sda SMARTD_FULLMESSAGE=This email was generated by the smartd daemon running on: SMARTD_MESSAGE=TEST EMAIL from smartd for device: /dev/sda
您的脚本还有一份报告的临时副本,可作为“$1”使用。完成后它将被删除,但相同的内容会写入 /var/log/syslog。
然后,您只需从设备名称映射到您的池(您可以解析
zpool status
)。