纠删码池部分写流程
2017-02-22 08:12:22 0 举报
纠删码池部分写流程主要包括以下几个步骤:首先,客户端向主节点发送写请求。然后,主节点将数据和校验信息一起存储在纠删码池中。接着,主节点将数据块的哈希值发送给所有的备份节点。最后,所有的备份节点根据自己的哈希值和主节点的哈希值进行比较,如果相同则写入数据,否则丢弃。这个过程可以保证数据的可靠性和安全性,即使有部分节点出现故障,也可以通过其他节点的数据恢复出完整的数据。
作者其他创作
大纲/内容
分stripe编码
3、编码计算
7、写盘ACK
生成事务,计算读写的plan
data-chunk
PrimaryLogPG::calc_trim_to
创建执行事务
4、发送写请求
encode_and_write
ECBackend::handle_message
PrimaryLogPG::execute_ctx
ECUtil::encode
PrimaryLogPG::make_writeable处理快照
OSD-1
chunk
6、写盘消息
存储
PrimaryLogPG::finish_ctx后续处理快照
ECBackend::handle_message
ErasureCodeInterface::encode
client
5、提交ACK
code-chunk
PrimaryLogPG::do_osd_ops生成事务
PrimaryLogPG::do_request
ECBackend::start_rmw
3、计算
ECBackend::handle_sub_write
OSD-3
PG状态检查
ECBackend::submit_transaction
OSD-2
1,覆盖写
ECBackend::sub_write_committed
ECBackend::handle_sub_write_reply
2、读取数据
PrimaryLogPG::eval_repop等待从节点回复消息
ECTransaction::generate_transactions
对象
PrimaryLogPG::issue_repop发送同步操作到从节点
PrimaryLogPG::issue_repop
从从节点读取数据
PrimaryLogPG::do_op
PrimaryLogPG::find_object_context
检查磁盘满盘
处理快照信息
生成事务放入队列
检查权限
创建新事务
PrimaryLogPG::prepare_transaction
ECBackend::sub_write_applied
try_reads_to_commit
ECBackend::try_state_to_reads
ECBackend::check_ops
stripe=chunk*k
0 条评论
下一页