如何獲得有關 mdadm RAID 問題的通知?

如何獲得有關 mdadm RAID 問題的通知?

我正在運行 Ubuntu 12.04 LTS。昨天我發現我的郵箱裡有一條訊息說我的伺服器被關閉了。我繼續重新啟動系統,但幾分鐘後它沒有出現,而且我沒有硬體 KVM 系統來查看核心正在向終端列印什麼。因此,我將系統重新啟動到 Linux 救援映像,然後發現軟體 RAID 1 陣列不同步。救援系統也開始重建RAID陣列。

到目前為止,沒有證據表明任何磁碟存在硬體錯誤。到目前為止,SMART 狀態看起來不錯。

我從未收到 mdadm 的電子郵件通知,即使在 /etc/mdadm/mdadm.conf 中開啟了電子郵件通知。

伺服器也配置為將所有系統日誌訊息轉送到日誌主機,因此我檢查了我的日誌主機。相關部分是:

5 月 20 日 15:38:40 核心:[ 1.869825] md0:偵測到的容量從 0 改為 536858624
5 月 20 日 15:38:40 核心:[1.870687] md0:未知分區表
5 月 20 日 15:38:40 核心:[1.877412] md:綁定
5 月 20 日 15:38:40 核心:[1.878337] md/raid1:md1:不乾淨-開始後台重建
5 月 20 日 15:38:40 核心:[ 1.878376] md/raid1:md1:2 個鏡像中的 2 個處於活動狀態
5 月 20 日 15:38:40 核心:[ 1.878418] md1:偵測到的容量從 0 更改為 3000052808704
5 月 20 日 15:38:40 核心:[1.878575] md:重新同步 RAID 陣列 md1
[剪]
5 月 20 日 15:52:33 核心:核心日誌記錄 (proc) 已停止。
5 月20 日15:52:33 rsyslogd:[origin software="rsyslogd" swVersion="5.8.6" x-pid="845" x-info="http://www.rsyslog.com"] 在訊號15 上退出。

正如您所看到的,系統(正常系統,而不是救援系統)在系統啟動期間已經偵測到 RAID 陣列出現問題。然後,不久之後,某些東西(不是我)就停止了系統。

所以我的問題是:

  1. 什麼可能導致磁碟突然不同步?
  2. 為什麼我沒有收到電子郵件通知?
  3. 為什麼在停止系統之前錯誤沒有正確記錄到系統日誌中?系統是否嘗試記錄到 syslog,但在停止 syslog 守護程式後才這樣做?如果是這樣,我可以做什麼來防止這種情況發生?
  4. 我可以做什麼來找出發生了什麼?或者,如果我現在無法找出發生了什麼,我該如何改進日誌記錄和通知,以便下次我可以進行更好的事後分析?

我的問題是不是關於正確的備份實踐。我已經知道 RAID 不是備份等。

答案1

什麼可能導致磁碟突然不同步?

這可能是驅動器盤片和記憶體中資料之間的路徑中的任何硬體或軟體故障。這可能意味著但不限於:驅動器頭、驅動器控制器、電纜上的連接頭、電纜本身(內部斷線)、電纜插入驅動器上的連接埠、主機板或子卡上的連接埠、主機板或子卡上的控制器晶片,甚至軟體(某處)故障。

真實的故事:我曾經有一個 RAID 鏡像,它不穩定,無緣無故地掉落了一個驅動器。驅動器檢查良好,盤片乾淨(重複 SMART 通行證沒有任何結果),一切運行良好 - 直到它一次又一次地剝落。我更換了 3 美元的 SATA 電纜並解決了問題即刻離開了。這個故事的寓意是:有很多地方可能會出錯,如果你不檢查資料路徑中的每個元件,你就不能總是假設「一切都很好」。

為什麼我沒有收到電子郵件通知?

只有在 (a) 主動監控陣列或 (b) 詢問陣列時才會出現電子郵件通知。

我的建議是:您需要讓 mdadm 作為一個進程主動監控磁碟機陣列。這可以透過類似(但不完全相同)的方法來完成:

mdadm --monitor --scan --syslog

您需要根據您的特定安裝調整上述行。

為什麼在停止系統之前錯誤沒有正確記錄到系統日誌中?系統是否嘗試記錄到 syslog,但在停止 syslog 守護程式後才這樣做?如果是這樣,我可以做什麼來防止這種情況發生?

可能有多種問題導致日誌記錄被刪除。

首先,存在系統日誌一般如何運作的整個問題;儘管我們已經花了很多年的時間來使其穩健可靠,但在某些極端情況下,資料可能無法寫入磁碟。這是一個眾所周知的設計問題,並且已透過監督式服務管理(又稱守護程式工具及其同類)積極解決。解決方案是完全繞過系統日誌,並將輸出寫入始終具有開啟檔案描述符的記錄器,這樣就不會遺失任何內容,並且記錄器會盡快將輸出轉儲到磁碟;雖然它不是 100% 有效的解決方案,但它確實顯著提高了在核心崩潰或關閉之前將事件寫入磁碟機的可能性。

其次,內核可能發生徹底的恐慌,或發生其他一些事件,迫使機器陷入困境。即使故障的硬體也可能導致問題 - 我見過 PSU 功率不足的機器會導致 Windows 8 中自發性關機。明顯地,沒有什麼核心可以做的就是防止機器剛剛決定「我已經受夠了」並搖搖晃晃地重新啟動。

我可以做什麼來找出發生了什麼?或者,如果我現在無法找出發生了什麼,我該如何改進日誌記錄和通知,以便下次我可以進行更好的事後分析?

有幾種方法:

  • 將日誌記錄放在單獨的分割區上。雖然這並不能保證您將獲得完整的日誌,但它確實有助於隔離檔案系統問題,例如磁碟已滿無法寫入、導致重新掛載為唯讀的損壞等。具體案例。

  • 查看遠端記錄重要的系統資訊。同樣,這並不是保證,但如果最後一個資料包可以在重新啟動之前“走出大門”,並且該資料包具有有關重新啟動原因的關鍵線索,那麼它將有所幫助。

  • 對於特定的關鍵服務,請考慮用其他內容替換系統日誌的輸出,例如監督式日誌記錄,其中專用記錄器攔截輸出並將其盡快寫入磁碟。這提高了輸出儲存的可靠性。只需做一點工作,就可以使其與其他服務管理安排並存。

答案2

什麼可能導致磁碟突然不同步?

驅動器故障、控制器故障、其他一些硬體故障。一些晦澀的軟體問題。

為什麼我沒有收到電子郵件通知?

Ubuntu 有一個 cronjob /etc/cron.d/mdadm,它會導致每天 00:57 檢查一次 RAID 磁碟區。如果你的系統當時沒有問題,或者那時已經出現故障,那麼就無法發送訊息。

為什麼在停止系統之前錯誤沒有正確記錄到系統日誌中?

好吧,如果驅動器出現故障,嘗試寫入它們實際上沒有意義,因為任何進一步的寫入都可能會破壞剩餘的內容。由於不知道故障的確切性質,可能是您的磁碟區或檔案系統變為唯讀。預設情況下,Ubuntu 設定為在根磁碟區出現錯誤時切換到唯讀檔案系統。

如何改進日誌記錄和通知,以便下次可以進行更好的事後分析?

設定記錄到遠端系統日誌主機。這樣,儲存故障並不意味著無法記錄任何內容。

相關內容