ChunksMgr::WorkOnChunk 流程
2017-03-30 14:11:58 0 举报
ChunksMgr::WorkOnChunk 是一个处理数据块的函数,它的主要流程如下: 1. 首先,函数会检查输入的数据块是否有效。如果无效,则直接返回错误信息。 2. 然后,函数会根据数据块的类型和大小,选择合适的算法进行处理。例如,对于大型数据块,可能会使用多线程并行处理;对于小型数据块,则可能直接在主线程中处理。 3. 在处理过程中,函数会不断更新数据块的状态信息,并将处理结果保存到指定的输出位置。 4. 最后,当所有数据处理完成后,函数会释放相关资源,并返回成功信息。
作者其他创作
大纲/内容
结束
是
该chunk的目标副本数是否不小于该 chunk 的有效副本数目
已经删除的副本数是否大于0
根据得到的这些chunk 属性信息重新设置该chunk的信息
为该chunk 再做几个副本
更新该chunk优先级
否
删除该chunk的想要被删除的副本
删除该chunk 多余的副本
检查该 chunk 当前是否为 BUSY 状态
检查处于 BUSY 状态的 chunk 数目是否大于 0
遍历该chunk 所在的 OSS 列表,得到该 chunk的所有副本数目信息:无效副本数、要删除的副本数、有效副本数、要删除的处于BUSY的副本数、BUSY副本数、正在删除的副本数、正在移动的副本数
该chunk的有效副本数与要删除的副本数之和大于1
该 chunk的有效副本数、要移动的副本数、要删除的副本数三者之和是否大于0
此时chunk id 为0意味着得不到chunk的信息,删除当前 chunk的信息,释放当前 chunk所占用的内存
该chunk 要删除的副本数大于0
获得在线的 StorageServers 数目
对 OSS做负载均衡
把需要移动的副本删除
根据 chunk的 inode id、chunk index 得到 chunk id、chunk version 等信息,以及chunk 的属性信息
该 chunk 需要移动的副本数目是否大于0
开始
更新 chunk 的目标副本数
该chunk的有效副本数与要删除的副本数之和大于在线的 StorageServers 数目
检查 chunk id 是否为0
给该 chunk配置的副本数是否大于该chunk的有效副本数
删除无效的副本,并更新删除后无效副本数目和已删除副本数目
该 chunk的有效副本数与要删除的副本数之和是否大于0
给该chunk配置的副本数目是否不超过该chunk的有效副本数
给chunk 加锁的时间早于当前时间,并且一个OSS也没有登录
增加的副本数是否大于0
检查该 chunk各种副本的数目,是否只有无效副本数不为0
计算该chunk的最小磁盘使用率、最大磁盘使用率、可用设备数目、设备总数
检查所有的OSS 是否都在线
检查当前 chunk 的chunk id 是否为0
该chunk的有效副本数小于配置的副本数目
最大磁盘使用率与最小磁盘使用率之差是否大于可接受的门限
该chunk 的有效副本数目是否大于该chunk的目标副本数目(goal)
0 条评论
回复 删除
下一页