searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

CephFS MDS元数据请求处理流程分析

2023-06-25 08:01:29
150
0

MDS元数据服务

    MDS在CephFS中负责管理元数据,其本质上只是一个守护进程。MDS进程本身并不具备持久化存储的功能,而只能依靠内存临时记录部分元数据。CephFS的元数据持久化保存在OSD上,用所谓的元数据池进行统一管理。同时MDS还使用Journal日志来保证元数据操作的一致性。

    为了防止单个MDS故障引起服务不可用,MDS配备了冷备和热备两种备份策略。

  • 冷备

备份的mds只起到一个进程备份的作用,并不备份元数据。主备进程保持心跳关系,一旦主的mds挂了,备份mds replay元数据到缓存,需要消耗一点时间。

  • 热备

    除了进程备份,元数据缓存还时刻与主mds保持同步,当active mds挂掉后,热备的mds直接变成主mds,并且没有replay的操作,元数据缓存大小和主mds保持一致。

    另外,当元数据默认的单个活跃 MDS 成为瓶颈时,CephFS还支持配置多个活跃的 MDS 守护进程,提升集群性能。它能够将文件系统树分割成子树。每个子树可以交给特定的 MDS 进行权威管理,从而将元数据压力分摊到多个活跃的MDS上。

MDS元数据处理流程

下图1是MDS整体消息分发处理流程:

 

图1 MDS 整体消息分发流程

 

下图2是Server模块负责处理的,来自Client的消息请求流程:

 

图2 Server模块消息分发处理

其中,Server::handle_client_request主要分发处理Client的元数据相关的请求,如创建文件,创建目录,查询文件属性等,消息分发处理流程如下:

 

图3 MDS Client元数据请求处理

在Ceph 14.2.16 N版本中一共有28种来自客户端的元数据请求:

CEPH_MDS_OP_LOOKUPHASH:
CEPH_MDS_OP_LOOKUPINO:
CEPH_MDS_OP_LOOKUPPARENT:
CEPH_MDS_OP_LOOKUPNAME:
CEPH_MDS_OP_LOOKUP:
CEPH_MDS_OP_LOOKUPSNAP:
CEPH_MDS_OP_GETATTR:
CEPH_MDS_OP_SETATTR:
CEPH_MDS_OP_SETLAYOUT:
CEPH_MDS_OP_SETDIRLAYOUT:
CEPH_MDS_OP_SETXATTR:
CEPH_MDS_OP_RMXATTR:
CEPH_MDS_OP_READDIR:
CEPH_MDS_OP_SETFILELOCK:
CEPH_MDS_OP_GETFILELOCK:
CEPH_MDS_OP_CREATE:
CEPH_MDS_OP_OPEN:
CEPH_MDS_OP_MKNOD:
CEPH_MDS_OP_LINK:
CEPH_MDS_OP_UNLINK:
CEPH_MDS_OP_RMDIR:
CEPH_MDS_OP_RENAME:
CEPH_MDS_OP_MKDIR:
CEPH_MDS_OP_SYMLINK:
CEPH_MDS_OP_LSSNAP:
CEPH_MDS_OP_MKSNAP:
CEPH_MDS_OP_RMSNAP:
CEPH_MDS_OP_RENAMESNAP:

MDS根据不同元数据请求CEPH_MDS_OP_*作不同处理,需要修改元数据的请求会生成日志,没有修改的元数据请求不需生成日志。

0条评论
作者已关闭评论
sky
4文章数
0粉丝数
sky
4 文章 | 0 粉丝
原创

CephFS MDS元数据请求处理流程分析

2023-06-25 08:01:29
150
0

MDS元数据服务

    MDS在CephFS中负责管理元数据,其本质上只是一个守护进程。MDS进程本身并不具备持久化存储的功能,而只能依靠内存临时记录部分元数据。CephFS的元数据持久化保存在OSD上,用所谓的元数据池进行统一管理。同时MDS还使用Journal日志来保证元数据操作的一致性。

    为了防止单个MDS故障引起服务不可用,MDS配备了冷备和热备两种备份策略。

  • 冷备

备份的mds只起到一个进程备份的作用,并不备份元数据。主备进程保持心跳关系,一旦主的mds挂了,备份mds replay元数据到缓存,需要消耗一点时间。

  • 热备

    除了进程备份,元数据缓存还时刻与主mds保持同步,当active mds挂掉后,热备的mds直接变成主mds,并且没有replay的操作,元数据缓存大小和主mds保持一致。

    另外,当元数据默认的单个活跃 MDS 成为瓶颈时,CephFS还支持配置多个活跃的 MDS 守护进程,提升集群性能。它能够将文件系统树分割成子树。每个子树可以交给特定的 MDS 进行权威管理,从而将元数据压力分摊到多个活跃的MDS上。

MDS元数据处理流程

下图1是MDS整体消息分发处理流程:

 

图1 MDS 整体消息分发流程

 

下图2是Server模块负责处理的,来自Client的消息请求流程:

 

图2 Server模块消息分发处理

其中,Server::handle_client_request主要分发处理Client的元数据相关的请求,如创建文件,创建目录,查询文件属性等,消息分发处理流程如下:

 

图3 MDS Client元数据请求处理

在Ceph 14.2.16 N版本中一共有28种来自客户端的元数据请求:

CEPH_MDS_OP_LOOKUPHASH:
CEPH_MDS_OP_LOOKUPINO:
CEPH_MDS_OP_LOOKUPPARENT:
CEPH_MDS_OP_LOOKUPNAME:
CEPH_MDS_OP_LOOKUP:
CEPH_MDS_OP_LOOKUPSNAP:
CEPH_MDS_OP_GETATTR:
CEPH_MDS_OP_SETATTR:
CEPH_MDS_OP_SETLAYOUT:
CEPH_MDS_OP_SETDIRLAYOUT:
CEPH_MDS_OP_SETXATTR:
CEPH_MDS_OP_RMXATTR:
CEPH_MDS_OP_READDIR:
CEPH_MDS_OP_SETFILELOCK:
CEPH_MDS_OP_GETFILELOCK:
CEPH_MDS_OP_CREATE:
CEPH_MDS_OP_OPEN:
CEPH_MDS_OP_MKNOD:
CEPH_MDS_OP_LINK:
CEPH_MDS_OP_UNLINK:
CEPH_MDS_OP_RMDIR:
CEPH_MDS_OP_RENAME:
CEPH_MDS_OP_MKDIR:
CEPH_MDS_OP_SYMLINK:
CEPH_MDS_OP_LSSNAP:
CEPH_MDS_OP_MKSNAP:
CEPH_MDS_OP_RMSNAP:
CEPH_MDS_OP_RENAMESNAP:

MDS根据不同元数据请求CEPH_MDS_OP_*作不同处理,需要修改元数据的请求会生成日志,没有修改的元数据请求不需生成日志。

文章来自个人专栏
音视频录制
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0