四个大的流程
1. 负载分析与统计 主要包括心跳包的交换与mds负载值、目录热度值的计算 2. 划分MDS的角色:Exporter 与 Importer 通过比较自身负载与集群的平均负载,决定自己成为exporter还是importer 3. 选择被迁出的目录 根据期望减少的热度值挑选目录:首先寻求完美匹配,再在小热度目录中选较大热度的,再次选择大热度目录,否则递归 4. 执行export 主要发送信息有 发送discover message --> 收到并返ack 发送prep message --> 收到并返ack 执行export_go 并发送export的目录 --> 收到并进行import,返回ack finish export并发送message --> finish import 详细流程请参看PPT
分析迁移过程中的bottleneck (如果是网络可以考虑使用ipc,但是先不急实现ipc)
子树的优点在于能够在较大多数的workload下都有较好表现,但hash能在不同负载甚至切换时有较好的balance,能否有较好trade off的设计?
比如node间subtree,node内部hash;或者只hash目录的前面一部分。
以及,实际的workload中,目录操作的性能是必要的,如范斌所举的例子:spark启动时第一步就是进行一次遍历
友旭:量化subtree方式(ceph)迁移开销
一多:量化hash方式(lustre)负载情况