Swift/Rings

Ringは、Swiftで使用するデバイスのリストで、他のサーバのアドレスなどを参照するのに使用します。
例えばプロクシサーバが、オブジェクトサーバのアドレスを調べるの使用します。

swift-ring-builderの使い方

Ringはファイルとして置かれ、swift-ring-builderコマンドを介して作成・変更が行なえます。

Ringの作成

作成は以下のように実行します。

# swift-ring-builder <builder_file> create <part_power> <replicas> <min_part_hours>

builder_fileは、これから作成するファイルの名前が入ります。
part_powerはパーティションの数を決めるのに使用され、2のpart_power乗の数のパーティション数になります。
※パーティションについては調査中です。パーティションの数を超えるデバイスは追加できないようです。

replicasは、ここで指定した数だけデータが冗長化されます。
例えば3が指定されていた場合は、オブジェクトを保存する際に、3つのデバイスに保存されるようになります。

min_part_hoursは特定のパーティションを連続して移動させられる時間らしいです。(調査中)

Ringへのデバイスの追加

作成したbuilder_fileにデバイスを追加します。
ここでいうデバイスは、objectサーバやcontainerサーバ、accountサーバになります。

# swift-ring-builder <builder_file> add z<zone>-<ip>:<port>/<device_name>_<meta> <weight>

zoneはゾーンを設定し、数字を入力します。
ゾーンが同じデバイスでは、冗長化されないようです。
device_nameは、サーバ上のパスを指定します。
metaはメタデータですが、省略可能なようです。

Ringのrebalance

# swift-ring-builder <builder_file> rebalance

パーティションの再割当てを行ないます。
主にデバイスの追加や削除を反映させるのに使用します。
実行後、ringファイルがtar.gzに圧縮されます。
名前の規則としては file.builder であれば file.tar.gz のようになります。

Ringの内容の表示

builder_fileだけを指定して実行すると、そのbuilder_fileの情報が表示されます。

# swift-ring-builder <builder_file>
 test.ring, build version 3
2 partitions, 1 replicas, 2 zones, 2 devices, 100.00 balance
The minimum number of hours before a partition can be reassigned is 1
Devices:    id  zone      ip address  port      name weight partitions   balance meta
             0     1       127.0.0.1  6010      sdb1   1.00          1   50.00
             1     2       127.0.0.1  6020      sdb2   1.00          1   50.00

ヘルプの表示

引数なしで実行すると、ヘルプが表示されます。

# swift-ring-builder

リンク


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS