mfs叢集故障報告

故障描述:

    從2017年3月8日04:20–2017年3月8日06:20期間,排程系統mfs叢集出現故障,導致無法正常使用。造成承載的虛擬機器業務出現大批量的ping告警,同時影響到凌晨排程系統正常執行。造成4點-6點間排程任務失敗和虛擬機器無法正常使用。

 

故障原因分析:

    對故障期間的系統日誌記錄進行檢視和分析,發現以下異常資訊:

1、所有的mfschunkserver互連時候出現大量超時的情況。

2、mfs掛載點只能讀,不能寫。

3、4點左右mfschunkserver出現cpu wio過高的情況

 

4、mfsmaster機器硬體故障———-檢視dmesg資訊,未發現有異常。

5、mfsmaster日誌資訊 ———– 檢視/var/log/message,未見異常報錯

 

故障排除:

    1、由於出現mfs叢集讀寫異常的情況,初步判斷可能是mfsmaster異常造成。故計劃重啟mfsmaster,由於排程系統mfs叢集使用的hearbeat和drbd構建的master雙機。在確認備用master伺服器正常後,進行了切換操作。

    mfsmaster未能正常啟動,通過日誌發現是由於metadata檔案異常導致無法讀寫。隨後切回主節點時,主節點也無法正常啟動,報錯原因同上。

    metadata是mfs叢集中儲存chunk塊的元資訊,損壞後會導致master無法正常讀取到chunk塊資訊,從而無法正常啟動。

   

    2、mfs官方提供了metadata的修復工具mfsmetarestore工具,使用此工具能進行metadata資料異常的修復。在完成相關檔案備份後,使用mfsmetarestore –a 進行了metadata的自動修復。修復完成後,master恢復正常啟動。與6點28分,開始mfs叢集恢復正常使用。

 

    3、通過監控發現,在4點20分左右,10.39.3.87mfschunkserver出現swap跑滿的情況,導致該chunkserver無法正常使用,影響了部分chunkserver與其進行塊複製和讀寫。造成到mfs叢集正常使用。10.39.3.87無法正常登陸,重啟後恢復正常。(由於mfsmaster重啟,對mfs叢集造成影響的10.39.3.87連線斷開,mfs叢集暫時恢復正常。)

   

 

    如上所述,影響到mfs叢集正常執行的主要原因是由於10.39.3.87導致了大量讀寫超時的情況,對排程系統、虛擬機器業務造成很大影響。3.87上承載部分虛擬機器業務,前期出現過由於虛擬機器負載過高導致宿主機swap被耗盡,導致無法正常使用的情況。

 

 

 

   

整改措施:

1、升級mfs版本,進行優化

2、升級作業系統版本

3、升級kvm,控制虛擬機器的過度使用

4、增加宿主機記憶體,降低單個虛擬機器記憶體

 

 

 

後續故障:

    經過1天時間後,發現mfs元資訊儲存目錄出現空間不夠告警。檢查發現changelog檔案不輪轉。一直都寫在changlog.0.mfs中。導致檔案都達到60G 。

   

檢視元資訊目錄發現:

***@***.***mfs]# ll -h

-rw-r—–1 mfs mfs 177M Mar 9 15:20 bak.changelog.0.mfs

 -rw-r—– 1 mfs mfs 673M Mar 8 05:27bak.metadata.mfs.back

 -rw-r—– 1 mfs mfs 4.0G Mar 9 20:18changelog.0.mfs

-rw-r–r–1 mfs mfs 845M Mar 9 15:27 metadata.mfs.back

-rw-r—–1 mfs mfs 854M Mar 8 05:24 metadata.mfs.back.tmp

 -rw-r—– 1 mfs mfs 530M Mar 9 15:21metadata.mfs.emergency

 -rw-r—– 1 mfs mfs 22K Mar 9 19:59sessions.mfs

 -rw-r—– 1 mfs mfs 745K Mar 9 20:00stats.mfs

 

      預設changelog是1小時輪轉一次,並將log資訊合併到metadata中。檢視master的日誌資訊/var/log/message發現:

Mar 9 20:00:00 yz381 mfsmaster[9276]:previous metadata save process hasn`t finished yet – do not start another one

    每小時均是如此,所以一直沒辦法成功輪轉。

    此時沒有metadata.mfs.back檔案(mfs執行時的元資訊檔案),也沒有metadata.mfs 檔案(mfs停止時的元資訊檔案)。檔案變成了metadata.mfs.back.tmp,  經過與mfs社群聯絡,確認此檔案為1.6版本bug,由於mfsmaster主備切換過程中產生了異常,導致了metadata.mfs.back.tmp檔案產生。changelog輪轉時候發現此檔案存在,所以覺得有異常,不進行輪轉。將此檔案改名後,到整點的時候,changelog 正常開始輪轉。一切恢復正常。


    經與社群溝通,此bug在新版本2.x之後已經修復。



    教訓:  

      mfs叢集出現故障,先檢查mfsmaster、chunkserver、client日誌,定位好故障的主要原因後再去處理,此次故障是由於單臺的chunkserver的swap用完,導致chunkserver之間的塊複製出現大量超時的情況,影響在mfs上執行的業務。並不是mfsmaster異常導致。最主要的還是看日誌,根據日誌來排查,不要盲目推測。


      另外主備切換過程需要非常謹慎小心。出問題會很嚴重。



      歡迎mfs使用者一起交流溝通:

         QQ  249016681