您好,登錄后才能下訂單哦!
本篇文章為大家展示了GlusterFS下如何修復裂腦文件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
恢復GlusterFS文件裂腦步驟
1. 執行如下命令,獲取裂腦文件的路徑。
# gluster volume heal VOLNAME info split-brain
客戶端訪問裂腦文件會報I/O錯誤。
2. 關閉在mount客戶端訪問裂腦文件的進程。如果有虛擬機正在使用裂腦文件,必須將虛擬機關閉。
3. 通過getfattr命令獲取和驗證擴展屬性的變更記錄,然后通過擴展屬性來確定哪些brick包含可信的文件。
# getfattr -d -m . -e hex <file-path-on-brick>
[root@lab21:/letv/disk4]$getfattr -d -m . -e hex file1
# file: file1
trusted.afr.plane-client-0=0x000000000000000000000000
trusted.afr.plane-client-1=0x000000000000000000000000
trusted.gfid=0x4e028c9b64234502ba304eba44e16da4
文件變更記錄屬性說明,如下示例:
0x 000003d7 00000001 000000110
| | |
| | \_ changelog of directory entries
| \_ changelog of metadata
\ _ changelog of data
首8位***背景字段記錄數據變更記錄
中間8位藍色背景字段記錄元數據變更記錄
末8位粉紅色背景字段記錄索引gfid變更記錄
對于目錄而言,元數據和索引gfid變更對應字段是有效的。
對于普通文件,數據和元數據對應字段是有效的。
對于特殊文件,如設備文件,元數據對應字段是有效的。
一個文件發生裂腦,可是數據裂腦,也可以是元數據裂腦,也有可以是數據和元數據同時裂腦。
一個元數據、數據同時裂腦例子如下:
# getfattr -d -m . -e hex /gfs/brick-?/a
getfattr: Removing leading '/' from absolute path names
\#file: gfs/brick-a/a
trusted.afr.vol-client-0=0x000000000000000000000000
trusted.afr.vol-client-1=0x000003d70000000100000000
trusted.gfid=0x80acdbd886524f6fbefa21fc356fed57
\#file: gfs/brick-b/a
trusted.afr.vol-client-0=0x000003b00000000100000000
trusted.afr.vol-client-1=0x000000000000000000000000
trusted.gfid=0x80acdbd886524f6fbefa21fc356fed57
4. 選擇正確的拷貝。
5. 通過重置相關字段解決裂腦問題
1)解決數據裂腦:重置數據字段對應屬性值
2)解決元數據裂腦:重置元數據字段對應屬性值
3)解決索引裂腦:刪除一個無效的副本,同時必須刪除對應的gfid-link文件,在.glusterfs目錄下
在刪除gfid-link文件之前,確保當前brick上要刪除的文件沒有硬鏈接,如果有也必須刪除。
6. 觸發自動修復
# ls -l <file-path-on-gluster-mount>
or
# gluster volume heal VOLNAME
注意:
對于屬性正常,文件內容不同引起的裂腦,heal命令無法修復,需要執行heal full命令,當然ls也可以。
修復方法,刪除錯誤副本及對應的gfid文件。
上述內容就是GlusterFS下如何修復裂腦文件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。