前提
完成线下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%。
Policy文件内容如下:
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'
安装plicy:
mmchpolicy cpfs ./t2.policy
添加callback,当lowDiskSpace 事件发生时触发policy生效;
mmaddcallback MIGRATION --command /usr/lpp/mmfs/bin/mmstartpolicy --event lowDiskSpace,noDiskSpace --parms "%eventName %fsName --single-instance"
验证Policy效果:
查看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
for i in seq 1 10
;do dd if=/dev/zero of=./test160G$i.json bs=4M count=40960;done
使用mmlsattr可以查看文件所在的storage pool,可以查看到这些文件都属于system pool;
for i in seq 1 10
;do mmlsattr -L ./test160G$i.json|grep “storage pool name”;done
for i in 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可以依据文件的命名、大小和时间等元数据信息,执行不同的文件操作,如存放位置、迁移、备份恢复等,实现数据的生命周期管理。