Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6267604
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: 云计算

2015-03-14 04:33:47

众所周知:swift存储时要初期化3个ring,这个容易理解。对rebalance理解起来有困难。现分析如下:
先看这张图:

(因为一般1个region中的1个zone中要做3个对象复制)
利用上图指示的关系,假如我们要存入一个对象,首先通过对象的account/container/object的md5值的前四个字节(32位)右移动part_shift位,得到具体对象对应的分区号,然后通过replica2part2dev_id(备份到分区到设备的映射), 找到当前分区对应的三个备份设备的Id,获得id后从devs里面得到具体的dev,因dev里面存有设备的ip,port,以及存储数据的磁盘,分别创建请求这三个设备,将数据存入设备上。
待续。。。

阅读(1343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~