1、frag(目录树关系)
ceph对目录树的管理,采用类似ip+掩码方式管理;
IP和子网掩码关系
ip地址被掩码分为网段和子网,同一个网段下的ip都属于该网段管理的ip,其可以相互通信。
一个网段,是由一个固定前缀的IP加网段偏移offset组成,表示为(ip/offset,如192.168.1.1/16,掩码为255.255.0.0),通过偏移位就可以确定该网段的掩码(偏移位表示从32位二进制高位开始有多少个1,其余补0,如16就是1111111111111111/000000000)。
如何确定一个ip是否属于某个网段?只需要拿某网段的掩码和某ip做与操作,结果是否等于某网段的值即可。
ceph目录树关系
通过掩码和ip值,就可以确定某ip归属于哪个网段。同理,ceph对父目录和子目录的管理,也采用类似方案。
每个目录都有其对应的frag_t结构体,包含有frag值(32bits),该值前8位表示bits(类似子网划分的offset),后24位表示目录value(类似ip)。
当一个目录的frag值确定时,其目录层级关系也确定了。从而实现目录树的关系描述。
当一个目录A,要确定是否属于B的子目录时,目录A只需要取其value,与B的掩码(由B的value+bites计算出来)做“与”操作,其结果如果等于B的value值,则表示是其子目录,否则就不是。