文档章节

SwiftStack-Swift容量管理-平滑添加/删除存储

icheer
 icheer
发布于 2014/01/24 16:00
字数 787
阅读 1234
收藏 1


SwiftStack在OpenStack Swift基础上开发的一种产品,当然公司的名称也同样为SwiftStack。

博客:http://swiftstack.com/blog/

 

SwiftStack里面有篇文章比较好的是Swift Capacity Management  即Swift的容量管理,当在Swift服务器集群中

删除或者添加存储的时候,应该怎么做使得系统可以平滑过渡,而不会使得在执行删除或添加存储操作后服务

器的出现占用大量的I/O以及带宽,CPU资源的问题。

添加存储

一次性添加存储--傻瓜做法:

如果在运行Swift的时候添加3TB的硬盘存储,名称为d16,节点为192.168.12.104

那么需要在ring中添加存储

$ swift-ring-builder account.builder add z1-192.168.12.104:6002/d16 3000

$ swift-ring-builder container.builder add z1-192.168.12.104:6001/d16 3000

$ swift-ring-builder object.builder add z1-192.168.12.104:6000/d16 3000

3000为该存储在ring中的权重(weight),用存储的容量(GB作为单位)作为权重是比较方便的做法。

Rebalance ring,并且把所有新的ring.gz重新传送到其他的存储服务器上

$ swift-ring-builder account.builder rebalance

$ swift-ring-builder container.builder rebalance

$ swift-ring-builder object.builder rebalance

Swift执行了ring的修改,但是真的可以皆大欢喜了?

错!这样做集群的性能将会急剧下降。即时添加3TB的存储,将会造成大量的数据在集群中传输。

Rebalance ring意味着每个存储设备有相等的负载(根据权重)。如果集群中有1.5T的数据将会传送到新的设备中,

那么将导致10GB的以太网卡在接下的20分钟内达到100%使用率。整个系统的性能在数个小时内将惨不忍睹。

平滑添加存储--聪明的做法:

添加存储的时候把权重从小开始:3000-》25

$ swift-ring-builder account.builder add z1-192.168.12.104:6002/d16 25

$ swift-ring-builder container.builder add z1-192.168.12.104:6001/d16 25

$ swift-ring-builder object.builder add z1-192.168.12.104:6000/d16 25

$ scp account.ring.gz swift-node-1:/etc/swift/account.ring.gz

$ scp container.ring.gz swift-node-1:/etc/swift/container.ring.gz

$ scp account.ring.gz swift-node-1:/etc/swift/account.ring.gz

$ scp account.ring.gz swift-node-2:/etc/swift/account.ring.gz

$ scp container.ring.gz swift-node-2:/etc/swift/container.ring.gz

$ scp account.ring.gz swift-node-2:/etc/swift/account.ring.gz ...

Rebalance ring,并传送ring.gz文件到集群中的所有存储服务器

$ swift-ring-builder account.builder rebalance

$ swift-ring-builder container.builder rebalance

$ swift-ring-builder object.builder rebalance

$ scp account.ring.gz swift-node-1:/etc/swift/account.ring.gz

$ scp container.ring.gz swift-node-1:/etc/swift/container.ring.gz

$ scp account.ring.gz swift-node-1:/etc/swift/account.ring.gz

$ scp account.ring.gz swift-node-2:/etc/swift/account.ring.gz

$ scp container.ring.gz swift-node-2:/etc/swift/container.ring.gz

$ scp account.ring.gz swift-node-2:/etc/swift/account.ring.gz ...

等待一段时间后(比如说一个小时)重新设置该存储的权重(25->50),再reblance ring,再传送ring.gz到集群中的所有存储服务器

$ swift-ring-builder account.builder set_weight z1-192.168.12.104:6002/d16 50

$ swift-ring-builder container.builder set_weight z1-192.168.12.104:6001/d16 50

$ swift-ring-builder object.builder set_weight z1-192.168.12.104:6000/d16 50

$ swift-ring-builder account.builder rebalance

$ swift-ring-builder container.builder rebalance

$ swift-ring-builder object.builder rebalance

$ scp account.ring.gz ...

不断重复,直到120个小时之后,权重变为3000了,设备添加就算是成功了。

当然,可以写通过脚本的方式省略大量的重复步骤!

删除存储

      方式和添加存储是一样的,把存储的权重逐步减少,每个小时或者固定的时间内重复步骤,直到权重变为0。

这个时候要删除的存储就可以从服务器下架了。


本文转载自:

icheer
粉丝 36
博文 206
码字总数 30712
作品 0
深圳
程序员
私信 提问
对象存储失败:它只是文件系统的……另一个部分!

对象存储技术并没有大获成功,只是成为存储文件的另一种方式和公共云的入口通道。 大概十多年前,许多对象存储初创公司表示,文件存储及其文件/文件夹访问方案无法处理大量的非结构化数据。它...

智, 多趣
2017/12/11
0
0
【译】Swift算法俱乐部-哈希表

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下...

Andy_Ron
2018/11/15
0
0
【译】Swift算法俱乐部-双端队列

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下...

Andy_Ron
01/01
0
0
OpenDigg iOS开源项目月报201704

由OpenDigg 出品的iOS开源项目月报第一期来啦。我们的iOS开源月报集合了OpenDigg一个月来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等。 Transition 构建iOS...

OpenDigg
2017/04/13
0
0
Linux 基金会宣布新项目 KOSP

Linux 基金会宣布了一个新的项目 Kinetic Open Storage Project(KOSP),以推进云对象存储技术的开源软件和标准。这个项目联合多个工业巨头,包括Cisco, Cleversafe, Dell, Digital Sense,...

oschina
2015/08/23
4.6K
2

没有更多内容

加载失败,请刷新页面

加载更多

浅谈prototype原型模式

一、原型模式简介 原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。 原型模式的特点: 1、由原型对...

青衣霓裳
29分钟前
8
0
shell mysql 备份

#!/bin/bash time2=$(date "+%Y-%m-%d-%H:%M:%S") /usr/local/mysql/bin/mysqldump -uroot -p ad > /usr/local/mysql/backup/"$time2".sql 变量引用原来是这么用的。......

奋斗的小牛
37分钟前
4
0
Jmeter监控Linux服务器操作

系统:Win7 64位 工具:Jmeter 4.0 要准备好的插件:JMeterPlugins-Standard-1.4.0,ServerAgent-2.2.1 解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins-Standard.jar......

魔鬼妹子
37分钟前
5
0
系列文章:云原生Kubernetes日志落地方案

在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经...

Mr_zebra
38分钟前
5
0
入门必备!快速学会用Aspose.Words在表格中插入和删除列!

Aspose.Words For .Net(点击下载)是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft W...

mnrssj
43分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部