弹性文件服务解密 -- 数据读写设计,数据条带化后并发读写性能最大化
SFS 底层采用分布式集群存储系统,系统内的每个节点之间都是平等的,每个文件读写操作都可能同集群中的多个节点进行交互,为了方便表述,我们可以将集群中任意一个节点涉及到业务IO的模块表述为以下的模型。
I/O模型
如上图所示,软件层面,分为两层,上层为文件系统服务,下层为存储资源池;上层文件系统服务层负责NAS协议的解析,文件操作语义的解析,文件系统元数据管理;下层存储资源池层负责节点上磁盘资源的分配管理和数据的持久化;
当一个客户端连接到一个物理节点上进行一个写文件操作。首先这个操作被文件系统服务层处理,文件系统服务层首先从文件路径+文件名查找到文件的元数据信息,从而得到文件的布局信息和保护级别。
SFS对于文件的数据保护是采用跨节点跨硬盘保护的,一个文件首先被切分为分条(Stripe),每个Stripe是由N个条带+M个冗余校验条带构成;一个分条中的不同条带是放置在不同节点不同硬盘上的。参考下图,文件系统服务层获得了文件的布局信息和保护级别后,就将收到的数据按照分条的粒度,计算出冗余数据条带来,然后并发通过后端网络写入不同节点的不同硬盘中,每个硬盘上只写入一个条带的数据。
写数据流程
从上面的写流程中,我们可以看到:
1:SFS具备很好的并发性,每个物理节点都可以同时接入很多的客户端;这些客户端可以并发的进行文件访问操作;
2:高带宽特征,SFS将一个文件切分为分条,每个分条交给不同的节点,不同的硬盘来存储,并通过高效的布局,使得即使同一个文件的不同分条也分布在不同的硬盘上,可以充分的发挥集群中多节点多硬盘的能力,大大增强文件访问的性能。
- 点赞
- 收藏
- 关注作者
评论(0)