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