注意

本文档适用于 Ceph 开发版本。

MDS内部数据结构

CInode

CInode包含文件的元数据,每个文件都有一个CInode。

CDentry

CDentry是连接inode和文件/目录名称的粘合剂。一个CDentry最多链接到一个CInode(它可能不链接到任何CInode)。一个CInode可以被多个CDentry链接。

CDir

CDir仅存在于目录inode中,用于链接目录下的CDentry。当目录碎片化时,一个CInode可以有多个CDir。

这些数据结构相互链接如下:

CInode
CDir
 |   \
 |      \
 |         \
CDentry   CDentry
CInode    CInode
CDir      CDir
 |         |  \
 |         |     \
 |         |        \
CDentry   CDentry  CDentry
CInode    CInode   CInode

在编写本文档时,CInode的大小约为1400字节,CDentry的大小约为400字节,CDir的大小约为700字节。这些数据结构相当大。如果你想在它们中添加新字段,请小心。

OpenFileTable

打开文件表跟踪打开的文件及其祖先目录。恢复MDS可以轻松获取打开文件的路径,显著减少打开文件加载inode的时间。表中的每个条目对应一个inode,它记录了inode的链接信息(父inode和dentry名称)。MDS可以通过递归查找父inode的链接来构建inode的路径。打开文件表存储在RADOS对象的omap中,表条目对应于omap中的KV对。

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.