CephFS用户IO流程




基于L版本代码(v12.2.12)分析。本人还在CephFs学习入门阶段,分析过程仅供参考,如有错误请谅解!

用户IO发送客户端

当前有3种方式可以与cephfs集群进行数据交互:
– libcephfs:提供与cephfs集群交互的C语言API,需要自己开发客户端,与ceph-fuse使用的下层接口相同
– ceph-fuse:sudo ceph-fuse -m 192.168.0.1:6789 /mnt/mycephfs
– kernel client:sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs

ceph-fuse客户端启动流程

ceph-fuse依赖libfuse项目,很多都是调用的libfuse提供的接口,所以要对libfuse的API比较熟悉才能更好的理解启动过程。

ceph-fuse用户IO流程

按数据类型可以分为两种IO,一种是操作metadata的,一种是操作文件内容的。

元数据IO流程

以mkdir操作为例进行说明。

client端

server端

文件数据IO流程

以write操作为例进行说明。

client端

server端

与rbd场景下osd端处理IO写请求的流程相同,不再分析。