前言
近年来CPU与低速的机械磁盘性能差异越来越大,高速存储设备(如SSD,NVMe,SCM等)对减缓这种差距有一定帮助。但根据最新的HPC调查,出于存储容量和价格因素,很少有HPC数据中心将所有的生产数据全部保存于高速存储设备中,大量数据仍然存储在低速HDD类型磁盘中。
大多数HPC中心一般通过并行文件系统(如Lustre或GPFS)来提供一个全局的存储服务。计算节点一般作为并行文件系统客户端形式存在,并通常配置有内置的高速存储设备如SSDs/NVMe。研究者对如何将计算节点内置的快速存储设备整合到HPC存储层次栈有着浓厚的兴趣。Lustre的LOD(Lustre on Demand)提供了一种基于客户端内置存储设备构建的按需(on-demand)文件系统服务。这种解决方案的缺点是它作为一个独立的文件系统存在,与HPC数据中心全局并行文件系统没有关联,没有提供一个单一的命名空间,与共享并行文件系统相比,缺乏灵活性。
Lustre客户端持久高速缓存(PCC, Persistent Client Cache)技术整合了计算节点本地存储,在Lustre客户端提供了一个读写缓冲层,并保持维护了一个统一的全局命名空间。PCC在客户端节点为用户提供缓存服务,它有两种工作模式:
RW-PCC读写模式:利用客户端本地存储设备,为单一客户端节点提供读写缓冲服务;
RO-PCC只读模式:利用客户端本地存储设备,为多个客户端节点提供只读缓冲服务;
Lustre客户端持久高速缓存技术有如下优点:
对作为PCC后端存储的客户端内置设备无特殊要求。从高速的存储设备NVMe/SSD到低速HDD都可以使用。一般只需要将客户端内置设备格式化为一个本地文件系统(如Ext4或者xfs),即可作为PCC后端使用。
简化了客户端I/O堆栈。在客户端就可以直接访问缓存在PCC中的数据,避免了从客户端到服务器冗长的数据IO路径。
不同客户端IO之间没有相互影响,更容易进行优化。
减轻了OST IO负载的压力。小的I/O和随机I/O可以规整为大的顺序I/O;零时文件可以直接在客户端删除,不需要刷新到OSTs。
降低了应用的I/O开销,大大减少了网络延迟和锁冲突。
Lustre 布局锁和分级存储机制
Lustre客户端一般不使用任何的本地存储,而PCC使得Lustre可以充分利用客户端本地存储,提供优化的IO缓存服务。PCC的核心实现依赖于Lustre客户端IO模型。它过滤Lustre数据I/O操作,将I/O重定向到客户单本地的PCC后端文件系