Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6945761
  • 博文数量: 701
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12021
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(701)

分类: 云计算

2015-02-27 10:58:21

众所周知: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,以及存储数据的磁盘,分别创建请求这三个设备,将数据存入设备上。
待续。。。

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