Disk

為什麼 ZFS 不報告磁碟已降級?

  • December 1, 2017

SMART 在我的一個磁碟上發現了不可恢復的讀取錯誤,但zpool status將所有磁碟列為 ONLINE(IE 未降級)。

  1. 你知道為什麼會這樣嗎?我雖然 ZFS 會盡快知道任何錯誤…
  2. 我是否需要執行清理才能重新檢查所有磁碟的狀態?
  3. 我可以讓 SMART 以某種方式自動向 ZFS 報告嗎?
  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)。

引用自:https://unix.stackexchange.com/questions/407510