在上一篇《HPC存储趋势简析:文件系统 & Linux选择》中,我简单写的并行文件系统技术特征不够准确,其实也是自己一知半解。有位专家朋友热情地给予我帮助和指正,在感激的同时,我也想把这些高见分享出来。
专家观点
并行文件系统并不是说可以支持单个文件更细粒度的锁;而是说客户端访问数据不需要forwarding(转发)。
比如分布式NAS,客户端挂载点挂在一个分布式存储的某一个节点,当这个客户端访问数据的时候,数据不在这个节点,这个节点得转发请求到正确节点,取回来数据,再通过挂载的那个点返回结果,这叫做请求forwarding。
并行文件系统,是客户端知道数据在哪一个节点上直接去对应节点获取数据,没有forwarding这个过程。
通常并行系统都是携带私有客户端。
唐僧解读:并行文件系统,以Lustre为例,数据请求者通过私有客户端先访问存储系统的MDS元数据节点,获取数据布局等信息(包括数据分布于哪个OSS存储节点上的什么位置)。
而像Isilon OneFS,使用NFS标准协议时,如果通过域名访问应该是DNS负载均衡到不同存储节点,通过每个节点都可以经后端专用网络(以前是IB,现在应该也有RoCE)在所有节点上做数据读写操作(写入时计算EC纠删码跨节点分布,读取时重组)。Isilon也是分布式文件系统或者说集群NAS,但都是对等节点没有专用的元数据服务器,每个节点上都有元数据并通过SSD/NVRAM加速。
这里面还有个问题,如果我没记错,BeeGFS并不能支持多客户端同时修改一个文件的不同区域,保证缓存一致。如要支持针对多客户端同时修改和访问文件的不同区域,要求缓存强一致的文件系统,BeeGFS不是这样的。
支持缓存强一致是MPI的应用要求,因为MPI有要求多客户端同时操作(读写一个文件的不同或者相同区域),这需要“机会锁”技术或者“delegation(委托授权)”技术保证。但是支持MPI/缓存强一致的文件系统,实现机会锁的粒度有可能是byte range级别,有可能是文件级别,这种都能够保证缓存强一致。但是其实这不是“并行文件系统”的定义。针对这个定义,BeeGFS和Cephfs/Ceph-fuse都算并行文件系统,但不是缓存强一致的文件系统。
唐僧解读:玩HPC高性能计算集群的朋友肯定对MPI(Message Passing Interface,消息传递接口)很熟悉了。
可见,不是所有的并行文件系统都支持缓存强一致。所以只搞明白“分布式文件系统”和“并行文件系统”的区别还不够,还要看具体行业的应用需求特点(数据集/IO特征)。这也是为什么Lustre和GPFS在HPC领域占有率较高,而Isilon在有些行业应用更广泛的原因吧。
顺便在这里点赞一位深入生命科学等行业文件存储需求的大神,以及他的公司。如下扩展阅读
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。
作者:唐僧 整理
原文:企业存储技术
推荐阅读
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。