前提
完成線下CPFS環境部署,該CPFS至少包含2個存儲池storage pool,在本次驗證環境中,包含2個存儲池,1個是system pool,另一個是data01 pool(容量型)。system pool對應的是由NVME SSD盤組成的性能型存儲池,data01對應的是有NL-SAS盤組成的容量型存儲池。
實踐操作
1, 編寫規則檔案1,該規則實作了依據檔案路徑,對檔案存放位置進行設定;
首先建立兩個fileset,分别對應不同的storage pool,并建立關聯的目錄:
mmcrfileset cpfs ilm_systemfs1 --inode-space new --inode-limit 200000 -t 'test fileset on system pool'
mmcrfileset cpfs ilm_data01fs1 --inode-space new --inode-limit 200000 -t 'test fileset on data01 pool'
mmlinkfileset cpfs ilm_systemfs1 /cpfs/ilm_systemfs
mmlinkfileset cpfs ilm_data01fs1 /cpfs/ilm_data01fs
編寫policy檔案./t1.policy,該policy的功能說明如下:
将存儲在ilm_data01fs1 fileset(目錄)下的檔案預設存儲在data01 storage pool中,将存儲在ilm_systemfs1 fileset(目錄)下的檔案預設存儲在system storage pool;
Policy檔案内容如下:
cat ./t1.policy
RULE 'slowfile' SET POOL 'data01'
FOR fileset ('ilm_data01fs1')
RULE 'fastfile' SET POOL 'system'
FOR fileset ('ilm_systemfs1')
RULE 'Default' SET POOL 'data01'
安裝plicy:
mmchpolicy cpfs ./t1.policy
驗證Policy效果:
檢視在不同fileset下生成檔案的實體存放位置,如下圖,可以看到,在ilm_data01fs目錄下生成的檔案其存儲位置在data01 storage pool,在ilm_systemfs目錄下生成的檔案,其存儲位置在system storage pool。

2, 編寫規則檔案2,依據檔案名、大小、路徑、時間等屬性,對檔案執行遷移類操作;
編寫policy檔案./t2.policy,該policy的功能說明如下:
當system 存儲池的容量使用率超過12%後,觸發lowSpaceEvents,将system 存儲池上字尾名為.xml和.json檔案按時間順序遷移到data01存儲池,直到system存儲池容量使用率到8%。
cat ./t2.policy
/* Define low space migration rule
This threshold sets the low space trigger value for the system pool */
RULE 'r1' MIGRATE FROM POOL 'system'
THRESHOLD(12,8) /*12%是磁盤容量觸發遷移條件,一直遷移
到8%*/
WEIGHT(CURRENT_TIMESTAMP - ACCESS_TIME)
TO POOL 'data01'
WHERE lower(NAME) LIKE '%.xml' OR lower(NAME) LIKE
'%.json'
mmchpolicy cpfs ./t2.policy
添加callback,當lowDiskSpace 事件發生時觸發policy生效;
mmaddcallback MIGRATION --command /usr/lpp/mmfs/bin/mmstartpolicy --event lowDiskSpace,noDiskSpace --parms "%eventName %fsName --single-instance"
檢視storage pool在使用到一定空間後觸發lowSpace事件後的效果:
cd /cpfs/ilm_systemfs
在歸屬system pool的目錄下生成大檔案,確定system pool磁盤占用率達到12%以上。
for i in
seq 1 10
;do dd if=/dev/zero of=./test160G$i.xml bs=4M count=40960;done
seq 1 10
;do dd if=/dev/zero of=./test160G$i.json bs=4M count=40960;done
使用mmlsattr可以檢視檔案所在的storage pool,可以檢視到這些檔案都屬于system pool;
seq 1 10
;do mmlsattr -L ./test160G$i.json|grep “storage pool name”;done
seq 1 10
;do mmlsattr -L ./test160G$i.xml|grep “storage pool name”;done
執行mmdf cpfs -P system檢視system pool磁盤所占用空間,目前已占到14%,達到觸發policy條件。
等一段時間,確定system pool檔案已經根據policy被遷移到data01 pool
執行cd /cpfs/ilm_systemfs;mmlsattr -L *.xml|grep -i pool檢視生效情況,如下圖所示,檔案已被遷移到data01 pool,部分檔案未遷移是因為system pool空間占用率已降到8%
檢視system pool的空間使用率,目前已降到8%!,遷移完成。
結論
通過以上操作和結果,可以看到CPFS可以依據檔案的命名、大小和時間等中繼資料資訊,執行不同的檔案操作,如存放位置、遷移、備份恢複等,實作資料的生命周期管理。