mfs 挂載點 /mnt/mfs
一、模拟:用戶端誤删除源碼包
恢複流程:
a) ./reserved ./trash 出現這兩個目錄
b) ./trash下,有一個./undel的目錄,還有一些被删除的以8位16進制命名的目錄,并且以"|"作為目錄符号,再加上被删除檔案名字。(如果檔案名字大于系統支援的255最大長度時,将從左到右進行裁剪,直到滿足255)
規則:00000009|1,1代表删除的檔案。
0000002E|123|tst 代表123目錄下tst檔案,如果123目錄被一起删除,恢複的時候123這個目錄也會被一同恢複出來。
c) 如果想恢複檔案,把00000009|1該檔案移動到/mnt/mfsmeta/trash/undel下,檔案即可恢複。
d) ./reserved這個目錄的作用是針對那些已被徹底删除但目前正被打開着的檔案。
<code>[root@localhost mfs]</code><code># ll /mnt/mfs/hello/</code>
<code>total 16</code>
<code>-rw-r--r-- 1 root root 0 Nov 30 03:49 1.txt</code>
<code>-rw-r--r-- 1 root root 14540 Nov 30 07:12 epel-release-6-8.noarch.rpm</code>
<code>-rw-r--r-- 1 root root 931 Nov 30 03:49 passwdbak</code>
1.删除檔案
<code>cd</code> <code>/mnt/mfs/hello/</code>
<code>[root@localhost hello]</code><code># rm epel-release-6-8.noarch.rpm </code>
<code>rm</code><code>: remove regular </code><code>file</code> <code>`epel-release-6-8.noarch.rpm'? y</code>
2.建立檔案還原目錄
<code>mkdir</code> <code>/mnt/test</code>
<code>/usr/local/mfs/bin/mfsmount</code> <code>-m </code><code>/mnt/test/</code> <code>-H 192.168.50.119</code>
3.恢複檔案
<code>cd</code> <code>/mnt/test/trash/</code>
<code>[root@localhost trash]</code><code># ll</code>
<code>total 15</code>
<code>-rw-r--r-- 1 root root 14540 Nov 30 07:12 00000006|hello|epel-release-6-8.noarch.rpm</code>
<code>d-w------- 2 root root 0 Dec 1 22:02 undel</code>
<code>[root@localhost trash]</code><code># mv 00000006\|hello\|epel-release-6-8.noarch.rpm undel/</code>
4.到mfs用戶端挂載點檢視
二、模拟中繼資料伺服器程序被意外結束,執行恢複操作
1) 停止中繼資料伺服器
kill -9 殺掉mfsmaster程序
2)備份中繼資料伺服器資料
# cd /usr/local/mfs/var
# tar cvf mfs.tar mfs
3)啟動中繼資料伺服器
/usr/local/mfs/sbin/mfsmaster start
提示初始化資料失敗
4)執行恢複操作
# /usr/local/mfs/sbin/mfsmetarestore -a
5)啟動中繼資料伺服器
6)用戶端挂載驗證資料是否還存在
三、模拟程序被意外關閉,并且日志檔案被損毀。
2)備份中繼資料伺服器資料(該操作主要以防實驗失敗,叢集無法恢複而做的一個預防操作)
3)删除目錄,模拟故障
# rm -rf mfs/*
4)啟動中繼資料伺服器
5)從中繼資料日志伺服器把備份檔案恢複過來
# rsync -alvR 192.168.242.133:/usr/local/mfs/var/mfs /
把所有檔案名字去掉_ml
6)執行恢複操作
7)啟動中繼資料伺服器
8)用戶端挂載驗證資料是否還存在
mfs常用的一些操作
<code>/usr/local/mfs/bin/mfssetgoal</code> <code>-r 3 hello/ 設定備份次數</code>
<code>hello1/:</code>
<code> </code><code>inodes with goal changed: 1</code>
<code> </code><code>inodes with goal not changed: 0</code>
<code> </code><code>inodes with permission denied: 0</code>
<code>/usr/local/mfs/bin/mfsgetgoal</code> <code>hello/ 檢視檔案備份數</code>
<code>hello/: 3</code>
<code>cp</code> <code>/etc/passwd</code> <code>hello</code><code>/passwdbak</code> <code>拷貝檔案</code>
<code>[root@localhost mfs]</code><code># /usr/local/mfs/bin/mfsfileinfo hello/passwdbak 檢視檔案具體資訊</code>
<code>hello</code><code>/passwdbak</code><code>:</code>
<code> </code><code>chunk 0: 0000000000000001_00000001 / (</code><code>id</code><code>:1 ver:1)</code>
<code> </code><code>copy 1: 192.168.50.120:9422</code>
<code>[root@localhost mfs]</code><code># /usr/local/mfs/bin/mfscheckfile hello/passwdbak 檢視檔案的實際拷貝份數</code>
<code> </code><code>chunks with 1 copy: 1</code>
<code>設定資源回收筒清空時間</code>
<code>/usr/local/mfs/bin/mfssettrashtime</code> <code>600 </code><code>/mnt/mfs/</code>
<code>ps</code><code>:600的機關是秒,也就是資源回收筒檔案儲存的時間為10分鐘</code>
快照
MooseFS系統的另一個特征是利用mfsmakesnapshot工具給檔案或者是目錄樹做快照,例如:
<code>$ mfsmakesnapshot </code><code>source</code> <code>... destination</code>
<code>mfsmakesnapshot</code>
<code>/usr/local/mfs/bin/mfsmakesnapshot</code> <code>/mnt/mfs/123/tmp2</code> <code>/mnt/mfs/111/</code>
<code>此指令是一個CP的過程,會自動将tmp2這個檔案</code><code>cp</code><code>到111目錄下。也可以針對一個目錄來操作。</code>
<code>mfsappendchunks destination-</code><code>file</code> <code>source</code><code>-</code><code>file</code> <code>...</code>
<code>當有多個源檔案時,它們的快照被加入到同一個目标檔案中(每個chunk的最大量是chunk)。</code>
<code>/usr/local/mfs/bin/mfsappendchunks</code> <code>/mnt/mfs/111/shot</code> <code>/mnt/mfs/123/123</code> <code>/mnt/mfs/123/tmp2</code>
<code>将1個以上的源檔案做成一個包,這裡是将123和tmp2這兩個檔案的塊追加到shot的塊檔案中。</code>
<code>注:</code>
<code>源和目标必須都屬于mfs體系,即不能将mfs體系中的檔案快照到其他檔案系統。</code>
維護MFS
維護mfs最重要的是維護中繼資料伺服器的/usr/local/mfs/var/mfs/,MFS的存儲修改更新等操作變化都
會記錄在這個目錄中,是以隻要保證這個目錄的資料安全就能保證整個MFS的資料安全和可靠性。
啟動mfs叢集的順序。安全的啟動順序步驟為:
啟動mfsmaster->啟動所有的mfschunkserver->啟動mfsmetalogger程序
停止mfs叢集
在所有的用戶端解除安裝mfs檔案系統 -> mfschunkserver -s停止所有的資料存儲程序 -> mfsmetalogger -s 停止中繼資料日志服務程序 -> mfsmaster -s 停止管理伺服器程序
資料存儲伺服器的維護,如果每個檔案的goal目标都不小于2,并且沒有under-goal檔案,那麼一個資料存儲伺服器在任何時候都可以停止或重新啟動
mfs管理伺服器的恢複
如果元管理伺服器崩潰,需要最後一個中繼資料改變的日志changelog和主要中繼資料檔案metadat.mfs,這個
操作可以通過mfsmetarestore工具來完成
mfsmetarestore -a
執行此指令後會預設在/usr/local/mfs/var/mfs目錄自動尋找需要改變的日志檔案和主要的中繼資料,mfsmetarestore在指令恢複時自動查找的是metadata.mfs.back檔案。
從備份恢複MFS管理伺服器步驟如下
1)安裝一個元管理伺服器利用同樣的配置來配置這台伺服器
2)找回metadata.mfs.back檔案,也可以從啟動的中繼資料日志伺服器中找,放到資料目錄如/usr/local/mfs/var/mfs/
3)從元管理伺服器當機之前的任何運作中繼資料日志伺服器上複制最後一個changelog.*.mfs檔案放入元管理伺服器的資料目錄
4) 利用 mfsmetarestore -a 來恢複
本文轉自 shouhou2581314 51CTO部落格,原文連結:http://blog.51cto.com/thedream/1878475,如需轉載請自行聯系原作者