弹性文件服务解密 -- 元数据管理设计,动态子树方式
弹性文件服务 SFS 支持超大目录,单目录可达百万数量级,大目录访问和普通目录访问无响应差别。
SFS的元数据管理架构采用业界先进的动态子树方式,如下图所示。元数据和数据一样都是使用节点间冗余方式,不同在于,元数据使用的是节点间mirror方式,每一份都是一个独立完整的拷贝。默认情况下,SFS的元数据比数据保护级别高一级。
SFS采用统一命名空间,整个文件系统的目录文件层次结构是一个树型结构,而系统集群是有很多平等的物理节点构成,所以,需要将整个文件系统这个大的树进行切割,使得每个物理节点上的MDS(元数据管理)模块分别管理不同的子树。
整系统目录树结构可以划分为若干子树,每个子树属于一个MDS,一个MDS可以包含若干个子树。
子树的分裂依赖文件夹的分裂,文件夹分裂的原则有2个:
原则1:按照热度进行分裂
每次元数据访问时,都会在内存中根据访问类型来增加文件夹的加权访问热度,并且热度会根据时间延长而进行衰减。当文件夹热度超过阈值时,文件夹进行分裂。
原则2:单文件夹下文件数过多时,文件夹分裂
满足任一条件时,文件夹会被分裂,记做dir_frag(目录分片)。 当如上原则不满足的时候,文件夹会合并,避免过多文件夹碎片。
当分裂的文件夹为子树的根时,文件夹分裂即为子树分裂。分裂后的子树仍存放在同一个MDS上,定期进行负载均衡检测。发现负载不均衡的情况,会在MDS之间进行子树的迁移。
根据上面原则,频繁访问超大目录时,大目录会分裂成多个dir_frag,对应分裂成多个子树,并会负载到多个MDS服务器上提供业务,不会产生元数据访问瓶颈。
命名空间子树划分示意图
- 点赞
- 收藏
- 关注作者
评论(0)