MooseFS使用問題分析總結(jié)
隨著數(shù)據(jù)量越來越大,MFS的使用中也出現(xiàn)過一些問題,這里做了一些分析和總結(jié),下面和大家分享一下:
先提一下MFS出問題時出現(xiàn)比較頻繁的兩個信息:
- 連接中斷
- 壞塊問題
連接中斷問題在Master端會出現(xiàn)如下錯誤:
- mfsmaster[15861]: connection with client(ip:10.11.18.175) has been closed by peer
- 表示客戶端和master的連接中斷
- mfsmaster[15861]: connection with ML(10.11.19.76) has been closed by peer
- 表示Metalogger和Master的連接中斷
- mfsmaster[15861]: connection with CS(10.11.18.199) has been closed by peer
- 表示ChunkServer和Master的連接中斷
原因分析可能如下:
- 網(wǎng)絡(luò)閃斷 - 正?,F(xiàn)象,MFS本身可自動重連,不會造成問題
- Clinet或ChunkServer主動斷開連接,如Kill進程,也會引起這種錯誤
- ChunkServer或Client到Master的連接超時,也會斷開連接,引起超時可能有兩個原因:
- Client請求過多,引起Master請求隊列已滿,導(dǎo)致的連接超時
- 網(wǎng)絡(luò)響應(yīng)慢引起的超時(和網(wǎng)絡(luò)閃斷區(qū)分)
解決辦法:
- 對于1、3出現(xiàn)引起的中斷可不加理會,重點需關(guān)注2引起的問題:
- 針對2-a:Client控制請求,如超高并發(fā)的讀寫刪除,另需注意的操作是ls,大家知道Linux系統(tǒng)本身對一個目錄下文件個數(shù)的顯示是有限制的(如10W,那么涉及到的需遍歷指令就會報錯,list too long),同樣,我們MFS中遍歷目錄下文件時也要注意,要遍歷的文件數(shù)過多會導(dǎo)致超時引起連接被中斷等問題。
- 針對2-b: 合理分配帶寬資源,優(yōu)化網(wǎng)絡(luò)環(huán)境解決。
備注:
Client或Chunk到Master的連接中斷之后,會由Client或Chunk自動發(fā)出重連(Reconnection)和注冊(Register)操作。
壞塊問題在Master端會出現(xiàn)如下錯誤:
- mfsmaster[3250]: chunkserver has nonexistent chunk (000000000002139F_00000001), so create it for future deletion
- mfsmaster[3250]: (10.11.18.199:9422) chunk: 000000000002139F creation status: 20
- mfsmaster[3250]: chunk 000000000002139F has only invalid copies (1) – please repair it manually
- mfsmaster[3250]: chunk 000000000002139F_00000001 – invalid copy on (10.11.18.199 – ver:00000000)
- mfsmaster[3250]: currently unavailable chunk 000000000002139F (inode: 135845 ; index: 23)
上述日志的意思是:有一個塊在Master中有元數(shù)據(jù)信息,但ChunkServer中沒有這個塊,系統(tǒng)會自動在ChunkServer上創(chuàng)建此塊為了后續(xù)刪除,因為沒有內(nèi)容,所以是非法的copy,我們也無法訪問到此塊。
出現(xiàn)的原因可能有很多,如:
- Client端大文件傳輸過程中,強制拔下master主機電源,造成master非法關(guān)閉,使用mfsmetarestore -a修復(fù)后,master日志報告有壞塊
- ChunkServer的csstats.mfs存放位置空間不足,導(dǎo)致文件塊無法寫入,也會引起塊錯誤
- 手動刪除ChunkServer上的塊文件
- 刪除文件后,Master非正常結(jié)束后重啟,但沒有結(jié)果changelog.mfs進行恢復(fù),也會引起壞塊
原因應(yīng)該還有很多,后續(xù)有遇到再補充。
解決辦法:
Client端使用mfsfilerepair對文件進行修復(fù)。
我理解壞塊分為兩種:
- 一種是沒有任何一個trunk節(jié)點有數(shù)據(jù)(修復(fù)工作其實就是生成chunk,在需要補充內(nèi)容的地方填充0,這種塊事后要刪除)
- 另一種是存在有數(shù)據(jù)塊的節(jié)點(從存在的數(shù)據(jù)塊copy,這里的塊不需要刪除)
修復(fù)之后可能出現(xiàn)如下日志信息:
- mfsmaster[3250]: chunk hasn’t been deleted since previous loop – retry
- mfsmaster[3250]: (10.11.18.199:9422) chunk: 000000000002139F deletion status: 13
Client端執(zhí)行一個mv或rm 操作,master將不會再顯示此信息,如:
- mv 80499644316259743_s.jpg 80499644316259743_s_1.jpg