ZFS がディスクの劣化を報告しないのはなぜですか?

ZFS がディスクの劣化を報告しないのはなぜですか?

SMART はディスクの 1 つに回復不可能な読み取りエラーを検出しましたが、zpool statusすべてのディスクが ONLINE (つまり、DEGRADED ではない) としてリストされています。

  1. なぜそうなるのかご存知ですか? ZFS はエラーがあればすぐにわかると思っていましたが...
  2. すべてのディスクのステータスを再確認するには、スクラブを実行する必要がありますか?
  3. 何らかの方法で SMART を ZFS に自動的にレポートさせることはできますか?

答え1

  1. なぜそうなるのかご存知ですか? ZFS はエラーがあればすぐにわかると思っていましたが...
  2. すべてのディスクのステータスを再確認するには、スクラブを実行する必要がありますか?
  3. 何らかの方法で SMART を ZFS に自動的にレポートさせることはできますか?
  1. いいえ、常にすべてのブロックをチェックするわけではありません。書き込まれた各ブロックが、必要になったときやアクセスされたときにすぐに記録される (冗長性が利用できる場合は復元される) ようにするだけです。空き領域はまったくチェックされません (そこに貴重なデータはないので、時間の無駄になるからです)。また、通常のデータは読み取り時にのみチェックされます (書き込みは追加のみ)。mmusante が正しく述べたように、エラーが重大で自動的に回復できない場合のみ、エラー メッセージを受け取ります (それ以外の場合は、通知が表示され、エラーがカウントされますzpool status)。
  2. はい。
  3. 定期的に(cronjob経由で)プールをスクラブする方が簡単かもしれません。一般的に推奨される頻度は、エンタープライズ品質のディスクの場合は月に1回、コンシューマーレベルのディスクの場合は週に1回です。それ以外の場合は、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)。

関連情報