ceph
源码分析之读写操作流程(
2
)
上一篇介绍了
ceph
存储在上两层的消息逻辑,
这一篇主
要介绍一下读写操作在底两层的流程。下图是上一篇消息流
程的一个总结。
上在
ceph
中,
读写操作由于分布式存储的原
因,故走了不同流程。
对于读操作而言:
1.
客户端直接计算出存储数据所属于的主
osd
,直接给主
osd
上发送消息。
2.
主
osd
收到消息后,可以调用
Filestore
直接读取处在底层
文件系统中的主
pg
里面的内容然后返回给客户端。具体调
用函数在
ReplicatedPG::do_osd_ops
中实现。
读操作代码流程
如图:如我们之前说的,当确定读操作为主
osd
的消息时
(
CEPH_MSG_OSD_OP
类型)
,会调用到
ReplicatePG::do_osd_op
函数,该函数对类型做进一步判断,
当发现为读类型(
CEPH_OSD_OP_READ
)时
,
会调用
FileStore
中的函数对磁盘上数据进行读。
[cpp] view plain copy int ReplicatedPG::do_osd_ops(OpContext
*ctx, vector<OSDOp>& ops)
{
……
switch (op.op) {
……
case
CEPH_OSD_OP_READ:
++ctx->num_read;
{
// read into a buffer
bufferlist
9331

被折叠的 条评论
为什么被折叠?



