简单概念
作用:将大型或繁忙的目录分解为较小的部分。
为啥要目录分片,有两个方面原因:
- 解决单个目录负载不平衡问题:如果单个目录进行了大量的update,这个目录的权威MDS负载会很高;分割目录后,将分片分别委托给不同的MDS,这样就可以将单个目录的负载均衡到多个MDS上。
- 解决大型目录的存储问题:目录下的子目录/文件的dentries和inodes会写入单个目录对象中,如果没有分片,这种目录元数据存储的方法无法扩展到大型目录,因为单个对象最大是4M。分割目录后,每个目录分片的元数据可以存储在一个单独的对象中。
frag_t
目录分片是用frag_t类描述的。
class
_frag_t是uint32_t类型
typedef
据官方描述,分片由bit和mask描述,类似IP子网。frag_t中的_enc有32位,将它分为两部分:bits和value。高8位为bits,低24位为value,如下。
![058efc336eac31fc7eef14a8b7ebf3ab.png](https://i-blog.csdnimg.cn/blog_migrate/052bdce029d66816bc6ab775365db54d.png)
bits的值,指定value哪些位是有效的&