為什麼 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)。

相關內容