業(yè)務(wù)在使用cephfs共享存儲(chǔ)的時(shí)候遇到一個(gè)詭異的問題,容器內(nèi)執(zhí)行了cp操作之后狼忱,在其他掛載目錄能看到新的文件,但是數(shù)據(jù)內(nèi)容為空一睁,大小為0钻弄。但是在容器里觀察和宿主機(jī)上觀察一切正常。
A者吁、B均掛載了同一個(gè)cephfs
宿主機(jī)A容器里執(zhí)行cp aaa bbb
容器里:
B機(jī)器:
由于ceph是一個(gè)網(wǎng)絡(luò)存儲(chǔ)窘俺,拿到這個(gè)問題我的第一想法就是在A機(jī)器上抓包,看下cephfs的返回是否一樣复凳。于是用wireshark解析了抓到的包
好像對(duì)ceph協(xié)議的支持不怎么完善瘤泪,此路不通。
于是選擇根據(jù)日志去排查問題育八。
首先打開mds的日志:
ceph tell mds.* injectargs --debug-ms 5/5
確實(shí)有創(chuàng)建新文件的請(qǐng)求:
但是沒有具體文件內(nèi)容和大小的日志
然后打開osd的日志:
ceph tell osd.* injectargs --debug-osd 10/10
但是沒有發(fā)現(xiàn)關(guān)聯(lián)到新文件的日志对途,所以沒法確認(rèn)文件的內(nèi)容是否被寫入了
正當(dāng)一籌莫展的時(shí)候,同事有了重大發(fā)現(xiàn)髓棋,當(dāng)替換成其他鏡像進(jìn)行同樣的操作時(shí)問題消失实檀,查看了有問題的鏡像系統(tǒng)為alpine惶洲,換成centos和ubuntu均沒有該問題。我們又做了另一個(gè)試驗(yàn)膳犹,升級(jí)的client的內(nèi)核恬吕,ceph官方推薦在4.*的內(nèi)核下使用cephfs client的kernel模式,但是我們是用centos的默認(rèn)3.10內(nèi)核须床。我們把client的內(nèi)核升級(jí)到4.14.15币呵,再進(jìn)行一樣的操作問題也消失了!!!
到這里問題似乎付出了水面,初步判斷是alpine的cp命令在3.10內(nèi)核下面會(huì)觸發(fā)cephfs的bug導(dǎo)致寫入內(nèi)容失敗侨颈,我們方案是升級(jí)到4.*的內(nèi)核余赢。ceph的日志著實(shí)難懂,后續(xù)搞清楚了之后再補(bǔ)上結(jié)論 : )