您好,登錄后才能下訂單哦!
這篇文章主要介紹“GlusterFS的brick文件丟失怎么辦”,在日常操作中,相信很多人在GlusterFS的brick文件丟失怎么辦問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”GlusterFS的brick文件丟失怎么辦”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
0、測試環境
GlusterFS 3.6.4/3.6.7/3.6.9
CentOS 6.7/7.1
1、測試用例及結果一
假設A、B副本主機,C客戶機,C掛載到A。
先通過C在卷中創建1到99文件。
測試一:
A上刪除 rm -f 2*,A執行heal full,看是否恢復,如果不行,再在B上執行heal full,A上看文件是否恢復。操作期間不要在C上ls。
A上刪除 rm -f 3*,只在C上ls,C上看是否有3*,A上看是否恢復。
測試二:
A上刪除 rm -f 4*,同時刪除對應gfid文件。A執行heal full,看是否恢復,如果不行,再在B上執行heal full,A上看文件是否恢復。操作期間不要在C上ls。
A上刪除 rm -f 5*,同時刪除對應gfid文件。只在C上ls,C上看是否有5*,A上看是否恢復。
測試三:
B上刪除 rm -f 6*,A執行heal full,看是否恢復,如果不行,再在B上執行heal full,B上看文件是否恢復。操作期間不要在C上ls。
B上刪除 rm -f 7*,只在C上ls,C上看是否有7*,B上看是否恢復。
測試四:
B上刪除 rm -f 8*,同時刪除對應gfid文件。A執行heal full,看是否恢復,如果不行,再在B上執行heal full,B上看文件是否恢復。操作期間不要在C上ls。
B上刪除 rm -f 9*,同時刪除對應gfid文件。只在C上ls,C上看是否有9*,B上看是否恢復。
測試結果:
實驗一
可以C 上可以看到3* 其它都不行
實驗二
可以C 上可以看到5* 其它都不行
實驗三
1. 可以恢復6*
2. B上沒有恢復 且C看不到7*
實驗四
1. 可以恢復8*
2. B上9*沒有恢復 且C看不到9*
2、測試用例及結果二
再補充兩個測試用例,這兩個需要恢復快照,保證環境純凈可靠后再分別執行。
假設A、B副本主機,C客戶機,C掛載到A。
先通過C在卷中創建1到99文件。
場景一:
A上刪除 rm *,A執行heal full,看是否恢復,如果不行,再在B上執行heal full,A上看文件是否恢復。如果不行再在C上ls,看C上是否能看到文件。
如果還不行,重啟A上glusterd服務,然后再執行上述操作看結果。
假設A、B副本主機,C客戶機,C掛載到A。
先通過C在卷中創建1到99文件。
場景二:
B上刪除 rm *,同時刪除對應gfid文件。A執行heal full,看是否恢復,如果不行,再在B上執行heal full,B上看文件是否恢復。如果不行再在C上ls,看C上是否能看到文件。
如果還不行,重啟B上glusterd服務,然后再執行上述操作看結果。
測試結果:
場景一
C上看到文件,其它都不行
場景二
都不行
3、測試總結-副本文件丟失修復
當復制卷中的副本文件被不小心刪除(同時刪除對應的gfid文件)后,可以通過
gluster volume heal VOLNAME full
命令來修復,如果不加full參數,則不會檢測到丟失的副本,不進行副本修復操作。
當一個副本丟失后,客戶端可能看到丟失的文件,也可能看不到丟失的文件,取決于掛載的主機位置。
當仍能看到丟失的文件時:
雖然能看到丟失的文件,但此時的ls或ls -l并不能恢復副本,當再次對丟失的文件進行修改操作時,副本文件才會被修復。
當不能看到丟失的文件時:
1)重新掛載會修復丟失的副本,修復后,客戶端可以看到全部文件。顯然線上系統通常不能這樣操作。
2)后臺執行gluster volume heal VOLNAME full命令可以修復丟失副本文件,同時讓客戶端再次看到丟失的文件。
在復制卷情況下,假設有兩個brick做成的volume,當在其中一個brick上刪除一個文件file(不刪除對應的gfid文件)時,有可能導致(兩個副本,刪除其中一個副本會導致,但具體哪個副本暫不確定,也有可能是非掛載點的副本)客戶端看不到該文件,此時的情況是:
客戶端看不到file;其中一個brick上有file;另外一臺上無file。
此時,執行gluster volume heal full自我修復操作,效果和上面描述一樣,客戶端無法看到該文件,此時的file稱之為暗文件。
客戶端重新掛載法修復(有時重新掛載可以修復,需要考慮最壞情況)。
服務器端heal full無法修復。
如何恢復暗文件?
在客戶端執行ls file操作。此時服務器端的file也會自動恢復。
這樣做的前提是,必須知道丟失的文件名,否則無法恢復。
未恢復前,客戶端對file進行touch、寫等操作都能正常進行,當執行一次后,服務端文件會自動恢復,前提還是必須知道文件名。
服務器端之利用用cp機制恢復。
客戶端重新掛載法修復(有時重新掛載可以修復,需要考慮最壞情況)。
出現暗文件是非常糟糕的事情,在線上很難確定哪些副本丟失,重新掛載基本也是不予許的,所以要盡量避免此類情況出現。
到此,關于“GlusterFS的brick文件丟失怎么辦”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。