码迷,mamicode.com
首页 > 编程语言 > 详细

openstack-Swift中ring的通俗理解

时间:2016-05-10 11:07:59      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:openstack

先看拓扑图:

技术分享 

每个文件和虚拟节点之间是一对一的关系,每上传一个文件就会分配一个虚拟节点,虚拟节点数一般是2的n次幂。

每个虚拟节点和zone是一对多的关系,假设每个文件有两个副本的话,那么每个虚拟节点对应到两个zone,这里只讨论文件只有一个副本,所以一个虚拟节点只对应到一个zone。

而一个zone可以对应到多个虚拟节点,比如上图有6个虚拟节点3个zone,那么每个zone对应两个虚拟节点。如果2^n个虚拟节点怎么分配给zone,就要看每个zone的权重(weight)了。

如上图,file1对应的1号虚拟节点,1号虚拟节点对应的是zone1,所以file1是存储在zone1里的,file2对应的4号虚拟节点,4号虚拟节点对应的是z1,那么file2也是存储在zone1里的(这里假设file4对应的是4号虚拟节点)。

现在准备在环境里添加一个新的zone,如下图:

技术分享 

增加一个新的zone之后,那么虚拟节点和zone之间的对应关系就要重新分配(rebalance),如上图。

此时4号虚拟节点对应的是zone4,按照现在的分配,file2应该是存储在zone4里,但是根据前面的分析,file2已经存储在zone1里了,那么就要开始把file2从zone1复制到zone4里去。

下面开始测试:

当前swift就使用一个zone,所以这三个对象都是放在同一个zone里的:

技术分享 

现在添加一个新的zone:

技术分享 

现在把新的分区添加到build文件里:

技术分享 

 

技术分享 

此时原来分布在swiftloopbak里的数据会搬到新的zone里:

技术分享 上传一些新的文件测试:

技术分享


本文出自 “老段工作室” 博客,请务必保留此出处http://lduan.blog.51cto.com/5428084/1771680

openstack-Swift中ring的通俗理解

标签:openstack

原文地址:http://lduan.blog.51cto.com/5428084/1771680

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!