Disk
為什麼 ZFS 不報告磁碟已降級?
SMART 在我的一個磁碟上發現了不可恢復的讀取錯誤,但
zpool status
將所有磁碟列為 ONLINE(IE 未降級)。
- 你知道為什麼會這樣嗎?我雖然 ZFS 會盡快知道任何錯誤…
- 我是否需要執行清理才能重新檢查所有磁碟的狀態?
- 我可以讓 SMART 以某種方式自動向 ZFS 報告嗎?
- 你知道為什麼會這樣嗎?我雖然 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
)。