MooseFS使用問(wèn)題分析總結(jié)
隨著數(shù)據(jù)量越來(lái)越大,MFS的使用中也出現(xiàn)過(guò)一些問(wèn)題,這里做了一些分析和總結(jié),下面和大家分享一下:
先提一下MFS出問(wèn)題時(shí)出現(xiàn)比較頻繁的兩個(gè)信息:
- 連接中斷
- 壞塊問(wèn)題
連接中斷問(wèn)題在Master端會(huì)出現(xiàn)如下錯(cuò)誤:
- 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本身可自動(dòng)重連,不會(huì)造成問(wèn)題
- Clinet或ChunkServer主動(dòng)斷開(kāi)連接,如Kill進(jìn)程,也會(huì)引起這種錯(cuò)誤
- ChunkServer或Client到Master的連接超時(shí),也會(huì)斷開(kāi)連接,引起超時(shí)可能有兩個(gè)原因:
- Client請(qǐng)求過(guò)多,引起Master請(qǐng)求隊(duì)列已滿,導(dǎo)致的連接超時(shí)
- 網(wǎng)絡(luò)響應(yīng)慢引起的超時(shí)(和網(wǎng)絡(luò)閃斷區(qū)分)
解決辦法:
- 對(duì)于1、3出現(xiàn)引起的中斷可不加理會(huì),重點(diǎn)需關(guān)注2引起的問(wèn)題:
- 針對(duì)2-a:Client控制請(qǐng)求,如超高并發(fā)的讀寫(xiě)刪除,另需注意的操作是ls,大家知道Linux系統(tǒng)本身對(duì)一個(gè)目錄下文件個(gè)數(shù)的顯示是有限制的(如10W,那么涉及到的需遍歷指令就會(huì)報(bào)錯(cuò),list too long),同樣,我們MFS中遍歷目錄下文件時(shí)也要注意,要遍歷的文件數(shù)過(guò)多會(huì)導(dǎo)致超時(shí)引起連接被中斷等問(wèn)題。
- 針對(duì)2-b: 合理分配帶寬資源,優(yōu)化網(wǎng)絡(luò)環(huán)境解決。
備注:
Client或Chunk到Master的連接中斷之后,會(huì)由Client或Chunk自動(dòng)發(fā)出重連(Reconnection)和注冊(cè)(Register)操作。
壞塊問(wèn)題在Master端會(huì)出現(xiàn)如下錯(cuò)誤:
- 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)
上述日志的意思是:有一個(gè)塊在Master中有元數(shù)據(jù)信息,但ChunkServer中沒(méi)有這個(gè)塊,系統(tǒng)會(huì)自動(dòng)在ChunkServer上創(chuàng)建此塊為了后續(xù)刪除,因?yàn)闆](méi)有內(nèi)容,所以是非法的copy,我們也無(wú)法訪問(wèn)到此塊。
出現(xiàn)的原因可能有很多,如:
- Client端大文件傳輸過(guò)程中,強(qiáng)制拔下master主機(jī)電源,造成master非法關(guān)閉,使用mfsmetarestore -a修復(fù)后,master日志報(bào)告有壞塊
- ChunkServer的csstats.mfs存放位置空間不足,導(dǎo)致文件塊無(wú)法寫(xiě)入,也會(huì)引起塊錯(cuò)誤
- 手動(dòng)刪除ChunkServer上的塊文件
- 刪除文件后,Master非正常結(jié)束后重啟,但沒(méi)有結(jié)果changelog.mfs進(jìn)行恢復(fù),也會(huì)引起壞塊
原因應(yīng)該還有很多,后續(xù)有遇到再補(bǔ)充。
解決辦法:
Client端使用mfsfilerepair對(duì)文件進(jìn)行修復(fù)。
我理解壞塊分為兩種:
- 一種是沒(méi)有任何一個(gè)trunk節(jié)點(diǎn)有數(shù)據(jù)(修復(fù)工作其實(shí)就是生成chunk,在需要補(bǔ)充內(nèi)容的地方填充0,這種塊事后要?jiǎng)h除)
- 另一種是存在有數(shù)據(jù)塊的節(jié)點(diǎn)(從存在的數(shù)據(jù)塊copy,這里的塊不需要?jiǎng)h除)
修復(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í)行一個(gè)mv或rm 操作,master將不會(huì)再顯示此信息,如:
- mv 80499644316259743_s.jpg 80499644316259743_s_1.jpg