push/rebalance/repush this ring

asked 2013-10-09 15:37:05 -0600

henry1987 gravatar image

updated 2014-03-18 12:35:37 -0600

torgomatic gravatar image

When I added a new zone to my existing swift cluster with

swift-ring-builder account.builder add r1z4- 100
swift-ring-builder container.builder add r1z4- 100
swift-ring-builder object.builder add r1z4- 100

then I did

swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance

I got the following messages:

Reassigned 1024 (100%) partitions. Balance is now 2193
Note: Balance of 2193 indicates you should push this ring, wait at least 1 hour, and rebalance/repush

what does the above mean?

Does mean I have to first copy the ring to the all the storage nodes including the new one first, and wait for one hour, and copy the new ring to all the nodes again? then rebalance and then copy the new ring files to

edit retag flag offensive close merge delete

3 answers

Sort by » oldest newest most voted

answered 2013-10-11 16:07:25 -0600

torgomatic gravatar image

Yes, copy the ring out to the nodes, wait an hour, rebalance, and copy the new ring out.

The reason for this is that only one replica of a given partition will move at a time, and this is done to ensure availability of your data even during a rebalance. To see why, imagine that there were no such protection; if all three replicas of a partition moved in a rebalance, then objects in that partition would be unavailable until the replicators moved the objects to their new homes.

edit flag offensive delete link more


How do you "push" the ring? I can't find that listed in man swift-ring-builder.

tudor gravatar imagetudor ( 2014-03-16 23:15:09 -0600 )edit

maybe copy /etc/swift/*.ring.gz to all nodes ?

José Ibañez gravatar imageJosé Ibañez ( 2014-04-22 03:49:14 -0600 )edit

answered 2014-07-03 01:22:12 -0600

blazesurfer gravatar image

on the node you have completed the swift-ring-builder (account/container/object).builder rebalance

run scp /etc/swift/*.ring.gz user@otherhosts:/etc/swift

this will copy the rings out to the other nodes.

bassicly all proxy and storage nodes require the rings to be copied to them so they know what is going on:)

you need to wait an hour between each time you do this minimum as that is what it appears(by default) your ring is set to. not this is the time it takes for a full replication of a partition to take so it might be that it takes less or more time on your deployment, so if you are in a position to wait over night between each time you run this you might be better to wait

edit flag offensive delete link more

answered 2014-03-17 03:30:51 -0600

elementak gravatar image

I have the same problem,how can i do with this?

edit flag offensive delete link more

Get to know Ask OpenStack

Resources for moderators

Question Tools


Asked: 2013-10-09 15:37:05 -0600

Seen: 757 times

Last updated: Jul 03 '14