注意

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

MDS 内部数据结构

CInode

CInode 包含文件的元数据,每个文件有一个 CInode。CInode 存储文件所有者、文件大小等信息。

CDentry

CDentry 通过将 inode 与文件/目录名称相关联来将 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 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入