Gluster Geo-replication是什麼?
Gluster Geo-replication(下稱geo-replication)是一種異地備份技術,它主要應用在於把Cluster中的一個volume,近乎即時地(near real-time)透過wan備份到遠端。本文主旨不在如何使用geo-replication,而是深入探討它內部之運作方式,若有未儘或錯誤之處再請各位讀者隨時指正。設定geo-replication時,須指定一個master volume及一個slave volume,slave也可以是路徑不一定得是gluster volume。master代表的是將被備份的資料來源,而slave代表的則是備份的目的地。
Gluster Geo-replication的運作主要依靠三個元件:
- Marker translator
- Crawler
- Syncer
Marker translator
在啟動geo-replication後,gluster會啟動marker這個translator。在第一次啟動時,marker會對master volume內的所有檔案賦予一個叫做xtime的extended attribute,這也是為什麼geo-replication要求cluster的時間要一致的原因。並同時透過syncer將檔案連同xtime做rsync送至slave。而之後這個marker會做什麼事呢?marker會攔截master volume的檔案操作,並在每個檔案(或資料夾)被操作時,去更新該檔案的xtime,以及該檔案的所有祖先的xtime。圖解如下。(為簡化說明,筆者假設master和slave皆為gluster volume)
Step 1:
啟動marker後,marker會為所有檔案建立xtime,並將檔案連同xtime送至slave端。
Step 2:
當有使用者透過任何一個節點操作檔案時,marker會更新該檔案的xtime。
Step 3:
接著更新所有該檔案的祖先的xtime。
marker的工作到此結束,剩下就是crawler和syncer的工作。
Step 3:
接著更新所有該檔案的祖先的xtime。
marker的工作到此結束,剩下就是crawler和syncer的工作。
Crawler
而crawler做什麼事呢?crawler會不斷地監視master及slave兩端root的xtime。而root的xtime有更新時,便掃描在它的子檔案及子資料夾的xtime,若沒更新則不做任何事,若是檔案且xtime有更新,便把該檔案加入syncer的list中;若是資料夾xtime有更新便進去裡頭重覆上述的動作。遞迴式地爬完所有有更新xtime的地方。對刪除的處理而是若slave有該檔案或資料夾,而master沒有的話便刪除。如圖所示。
crawler只要不斷監視兩端root的xtime,並透過marker的幫忙,能有目地的搜尋並找到被變更的檔案。接著把檔案加入syncer的list中。
Syncer
最後是syncer,syncer的工作是負責將crawler收到的file list連同xtime透過rsync送至slave端,這樣便不會在下次的monitor中被重送。
整個來說,筆者給geo-replication技術下的註解是:「有目的地的rsync。」
希望這篇文章對希望了解geo-replication技術的人有幫助。