为什么 ZFS 不报告磁盘已降级?

为什么 ZFS 不报告磁盘已降级?

SMART 在我的其中一个磁盘上发现了不可恢复的读取错误,但zpool status将所有磁盘列为“在线”(IE 未降级)。

  1. 你知道为什么会这样吗?我认为 ZFS 会尽快知道任何错误...
  2. 我是否需要运行清理才能重新检查所有磁盘的状态?
  3. 我可以让 SMART 自动向 ZFS 报告吗?

答案1

  1. 你知道为什么会这样吗?我认为 ZFS 会尽快知道任何错误...
  2. 我是否需要运行清理才能重新检查所有磁盘的状态?
  3. 我可以让 SMART 自动向 ZFS 报告吗?
  1. 不,它不会一直检查所有块,它只是确保每个写入块在需要/访问时都可以被考虑(如果冗余可用,则可以恢复)。根本不检查空白空间(因为那里没有有价值的数据,所以这会浪费时间),并且仅在读取时检查普通数据(因为写入是仅追加的)。正如 mmusante 所说,只有当错误严重并且无法自动恢复时,您才会收到错误消息(否则,您只会看到一条通知,并且错误计数zpool status)。
  2. 是的。
  3. 定期(通过 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)。

相关内容