雲計算

CPFS與OSS數據同步實踐

1,說明
CPFS同步到OSS是使用其AFM(Active File Management)機制,AFM可以實現2個數據源之間的數據共享,其數據共享有如下四種模式:

image.png
CPFS與AliOSS默認使用的是Single Writer模式,其中OSS作為Home端,CPFS作為Cache端,在Single Writer模式下,Cache端數據會自動同步給Home,但是不會從Home上檢查更新。
2,實踐環境
為驗證該功能實現,本次實踐基於一套支持OSS數據同步功能的CPFS線下環境,其中2臺存儲節點能訪問公網,公網總帶寬為20Mbps,目前在公共雲上的CPFS暫時還不支持同OSS的數據同步,具體發佈時間依賴負責公共雲CPFS產品團隊官宣。
3,實踐命令&結果
3.1 配置
在配置CPFS與OSS之間的數據同步之前,首先需要完成本節操作,具體如下:
設置CPFS gateway節點,用於CPFS同OSS的數據傳輸,可設置多個用於並行傳輸:
mmchnode –gateway -N cnode1,cnode2
設置OSS的AK:
mmafmcoskeys $oss_bucketname set $oss_accesskey_id $oss_accesskey_secret
驗證AK正確性:
mmafmcoskeys $oss_bucketname get
設置CPFS同OSS的連接配置:
mmafmcosconfig $cpfs-devicename $oss_bucketname --map-endpoints http://oss-cn-beijing.aliyuncs.com --cleanup --vhb
該操作包括了在CPFS上建立一個對應OSS bucketname的fileset及配置AFM參數等過程,--map-endpoints參數後接OSS的外網endpoint。
3.2 從OSS上下載數據
在默認SW模式下,OSS作為Home端,CPFS作為Cache端,CPFS端數據會自動同步給OSS,但是不會從OSS上檢查更新,如果需要從OSS上拉取數據,需要執行如下命令:
下載對應bucket的所有數據到cpfs目錄:
mmafmcosctl $cpfs-devicename $oss_bucketname $cpfs_path download --all
如果需要限定下載的object,可以通過--object-list來指定object下載,操作如下:
mmafmcosctl $cpfs-devicename $oss_bucketname $cpfs_path download --object-list $object_filename
指定要拉的object,採用如下方式:
cat ./file2
test2
test2/node.cfg
mmafmcosctl cpfs hpttest1 /cpfs/hptest1/ download --object-list ./file2
注意:對已經download過,但是在文件系統上刪除的,再執行download操作時,這些文件不會被二次拉取。
3.3 從CPFS往OSS同步數據
默認情況下,在執行mmafmconsconfig命令後,在設置的fileset目錄下創建和修改的數據會自動同步到OSS對應bucket中。如果需要控制同步到OSS的文件,可以通過設置policy來限定,具體操作如下:
編寫policy文件,如下示例policy文件的規則功能更描述:hpt-rule1:將後綴為.txt的文件留在cpfs本地,不上傳到OSS中;hpt-rule2:將目錄test1下的文件留在本地,不上傳到OSS中;
cat /home/test.policy
RULE 'hpt-rule1' set pool 'system' FOR fileset
('hpttest1') OPTS('local') where name like '%.txt'
RULE 'hpt-rule2' set pool 'system' FOR fileset
('hpttest1') OPTS('local') where name like 'test1'
RULE default set pool ‘system’
如下命令實現應用policy規則到CPFS文件系統:
mmchpolicy cpfs /home/test.policy
驗證CPFS到OSS的同步效果:
驗證文件的結果:
.txt後綴的文件沒有被上傳到OSS,.json後綴的可以被上傳到OSS上。
image.png
驗證目錄的結果:
test1目錄下新建的文件沒有被上傳到OSS,test3目錄由於沒有規則約束,可以被上傳到OSS上。
image.png
驗證並行傳輸的效果:
dd if=/dev/zero of=/home/test1G bs=1M count=1024;
拷貝1G數據到cpfs對應目錄,查看文件上傳到OSS花費時間407s,平均帶寬2.516MB/s,基本可以佔滿20Mbps的公網帶寬:
image.png
3.4 CPFS 與OSS數據互通
部分情況下,需要實現CPFS與OSS之間的數據自動互通,這時可以在執行mmafmcosconfig時配置mode為iw,這時,OSS作為Home端,CPFS作為Cache端,兩端都支持讀寫,Cache端既可推數據給Home端,也可以從Home上獲取更新,在Cache上獲取的是Home端的元數據。
配置方式如下:
mmafmcosconfig cpfs hwodpstest --map-endpoints http://oss-cn-beijing.aliyuncs.com --cleanup –vhb --object-fs --mode iw
在CPFS上對應bucket的fileset目錄下ls時即觸發download metadata動作,執行du可查看到文件實際大小為0,只有在做類似cat操作時,才顯示實際大小。
示例如下:
OSS上數據其元數據自動同步到CPFS,在cat後顯示實際內容,CPFS數據也能自動同步到OSS;
image.png
4,結論
通過以上實踐,我們驗證了本地高性能文件系統CPFS與公共雲對象存儲OSS的線下線上數據互通,結合CPFS的policy實現數據的定製同步和安全特性,我們可以實現一套兼顧本地集群文件系統的高性能和公共雲對象存儲的低成本的高性價比混合雲存儲解決方案。

Leave a Reply

Your email address will not be published. Required fields are marked *