From Fedora Project Wiki

Description

Swift allows storage devices to be added to a running swift environment. In this test we will add a storage device to the ring file. And verfiy it is being utilized

Setup

So its more likely we'll see the effects of adding a device we upload more data to swift

$> cd
$> . /path/to/keystonerc
$> for x in {1..10} ; do swift upload c$x test.data ; done

Create a new loopback storage device (use a physical device if you have access to one)

$> truncate /var/tmp/swift-storage-newdevice --size 5G
$> DEVICE=$(sudo losetup --show -f  /var/tmp/swift-storage-newdevice)
$> sudo mkfs.ext4 -I 1024 $DEVICE
$> sudo mkdir -p /srv/node/newdevice
$> sudo mount -o noatime,nodiratime,nobarrier,user_xattr $DEVICE /srv/node/newdevice
$> sudo chown -R swift:swift /srv/node/newdevice 

How to test

Add the new device to the ring

$> sudo swift-ring-builder /etc/swift/account.builder add z1-127.0.0.1:6002/newdevice 100
$> sudo swift-ring-builder /etc/swift/container.builder add z1-127.0.0.1:6001/newdevice 100
$> sudo swift-ring-builder /etc/swift/object.builder add z1-127.0.0.1:6000/newdevice 100
$> sudo swift-ring-builder /etc/swift/object.builder pretend_min_part_hours_passed
$> sudo swift-ring-builder /etc/swift/account.builder pretend_min_part_hours_passed
$> sudo swift-ring-builder /etc/swift/container.builder pretend_min_part_hours_passed

test for files on the new device (there should be none

$> sudo find /srv/node/newdevice -type f

re-balance the ring file

$> sudo swift-ring-builder /etc/swift/account.builder rebalance
$> sudo swift-ring-builder /etc/swift/container.builder rebalance
$> sudo swift-ring-builder /etc/swift/object.builder rebalance

Expected Results

After a sort wait some files should be moved from the other devices to the new storage device

$> sudo find /srv/node/newdevice -type f