第4章 ボリュームの作成および管理

この章では、Glusterボリューム・タイプと、ボリュームを作成、管理およびモニターする方法について説明します。

4.1 ボリュームの作成

信頼できるストレージ・プール内の各ノードで、ストレージをボリュームに割り当てる必要があります。このガイドの例では、各ノードの/data/glusterfs/myvolume/mybrickに1つのファイル・システムがマウントされています。ノードでのストレージの設定の詳細は、2.4.1項「Oracle Linuxノードの準備」を参照してください。Glusterは、このブリックとして使用するファイル・システムに基づいてボリュームを作成します。

使用できるボリューム・タイプは数多くあります。

  • 分散: ボリュームのブリックに対してランダムにファイルを分散します。ストレージをスケーリングすることが要件で、かつ冗長性が必要ないか他のハードウェア/ソフトウェア・レイヤーによって提供される場合は、分散ボリュームを使用できます。ディスク/サーバーの障害によって、データがボリュームのブリックに対してランダムに分散するため、重大なデータの損失が発生する可能性があります。

  • 複製: ボリュームの複数のブリックにわたってファイルを複製します。高可用性が必要な場合は、複製ボリュームを使用できます。

  • 分散複製: ボリュームの複数の複製ブリックにわたってファイルを分散します。分散複製ボリュームを使用して、ストレージをスケーリングし、高可用性と高信頼性を実現できます。分散複製ボリュームにより、読取りパフォーマンスが向上します。

  • 分離: ディスクまたはサーバーの障害に対する容量効率に優れた保護を提供します(イレイジャ・コードに基づく)。このボリューム・タイプでは、ある程度の冗長性が追加され、ボリュームの複数のブリックにわたってファイルのエンコード・データがストライプ化されます。分離ボリュームは、容量の無駄を最小にして構成可能なレベルの信頼性を提供します。

  • 分散分離: ボリュームの分離ブリックに対してファイルを分散します。これには、分散複製ボリュームと同じメリットがありますが、データをブリックに格納するために、複製ではなく分離を使用します。

一般的に受け入れられている、ブリックとボリュームを作成するための命名規則は次のとおりです。

/data/glusterfs/volume_name/brick_name/brick

この例では、brick_nameはクライアントからマウントできるファイル・システムです。Glusterファイル・システムのマウントの詳細は、第5章ボリュームへのアクセスを参照してください。

この項では、これらの各ボリューム・タイプを設定する基本ステップについて説明します。ボリュームを作成するときは、ボリュームを作成するステップを実行するノードを含むすべてのノードを、信頼できるストレージ・プールに含める必要があります。

ボリュームの作成および管理の例で使用される表記法は、Bashのブレース展開表記法で指定できます。たとえば:

node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick

これは、ノード情報を、より長い次の形式で指定することと同じです。

node1:/data/glusterfs/myvolume/mybrick/brick node2:/data/glusterfs/myvolume/mybrick/brick node3:/data/glusterfs/myvolume/mybrick/brick

ボリュームが構成されている場合、ボリュームでTLSを有効にして、ボリュームのデータを提供するノード間の接続、およびボリュームにアクセスするためにプールに接続しているクライアント・システムに対する接続を認証および暗号化できます。詳細は、2.4.4項「トランスポート層セキュリティの設定」を参照してください。

詳細は、Glusterのアップストリームのドキュメントを参照してください。

4.1.1 分散ボリュームの作成

この項では、分散ボリュームを使用してプールを作成する例を示します。

例4.1 分散ボリュームの作成

この例では、3つのノードにわたる(各ノードに1つのブリック)分散ボリュームを作成します。

sudo gluster volume create myvolume node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distribute
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

4.1.2 複製ボリュームの作成

この項では、複製ボリュームを使用したプールの作成について説明します。replicaの数によって、ボリュームの複数のブリックにわたるファイルのコピー数が設定されます。通常は2つまたは3つのコピーが使用されます。サーバーおよびディスクの障害から保護するには、ボリュームのブリックを別のノードに配置する必要があります。

スプリット・ブレインとは、ファイルの複製された2つ以上のコピーが一致しなくなり、初期状態のコピーを選択して不正なコピーを自己修復するための十分な情報がない状況です。スプリット・ブレインの状況は、主にボリューム内のファイルに接続するクライアントでのネットワークの問題が原因で発生します。

replicaを偶数(2など)に設定すると、両方のブリックで、最新の正しいバージョンがあるとみなされるため、スプリット・ブレインが発生することがあります。replicaの数に奇数(3など)を使用すると、スプリット・ブレインを回避できます。

arbiterブリックを使用することによってもスプリット・ブレインを回避でき、さらに、ファイルの3つのコピーを格納する必要があるreplica 3ボリュームに求められる追加のストレージは必要ありません。arbiterブリックには、ボリュームの他のブリックのファイルに関するメタデータ(ファイルではない)が含まれているため、サイズが大幅に小さくなる可能性があります。各レプリカ・サブボリュームの最後のブリックは、arbiterブリックとして使用されます。たとえば、replica 3 arbiter 1を使用する場合、3つ目のブリックはすべてarbiterブリックとして使用されます。

ノート

arbiterブリックを使用するボリュームは、replica 3 arbiter 1オプションを使用することでのみ作成できます。

例4.2 複製ボリュームの作成

この例では、1つのブリックを持つノードが3つある複製ボリュームを作成します。

sudo gluster volume create myvolume replica 3 node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

例4.3 arbiterを使用した複製ボリュームの作成

この例では、1つのブリックを持つノードが3つある複製ボリュームを作成し、1つのarbiterブリックを設定します。

sudo gluster volume create myvolume replica 3 arbiter 1 node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick (arbiter)
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

4.1.3 分散複製ボリュームの作成

この項では、分散複製ボリュームを使用したプールの作成について説明します。ブリックの数はreplicaの数の倍数である必要があります。たとえば、1つのブリックを持つノードが6つ、またはノードごとに2つのブリックを持つ3つのノードという場合です。

ブリックが指定される順序は、データ保護に影響します。それぞれのreplicaの数によってレプリカ・セットが形成されて、すべてのレプリカ・セットが結合されて、ボリューム全体の分散セットになります。各ノードの最初のブリックをリストし、各ノードの2つ目のブリックを同じ順序でリストすることで、レプリカ・セットが同じノードにないことを確認します。

例4.4 1つのブリックを持つノードが6つある、分散複製ボリュームの作成

この例では、1つのブリックを持つノードが6つある、分散複製ボリュームを作成します。

sudo gluster volume create myvolume replica 3 node{1..6}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick
Brick5: node5:/data/glusterfs/myvolume/mybrick/brick
Brick6: node6:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

例4.5 arbiterを使用した、1つのブリックを持つノードが6つある、分散複製ボリュームの作成

この例では、1つのブリックを持つノードが6つある、分散複製ボリュームを作成します。3つ目のブリックはそれぞれarbiterブリックとして使用されます。

sudo gluster volume create myvolume replica 3 arbiter 1 node{1..6}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x (2 + 1) = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick (arbiter)
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick
Brick5: node5:/data/glusterfs/myvolume/mybrick/brick
Brick6: node6:/data/glusterfs/myvolume/mybrick/brick (arbiter)
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

例4.6 2つのブリックを持つノードが3つある、分散複製ボリュームの作成

この例では、2つのブリックを持つノードが3つある、分散複製ボリュームを作成します。

sudo gluster volume create myvolume replica 3 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick2
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

例4.7 arbiterを使用した、2つのブリックを持つノードが3つある、分散複製ボリュームの作成

この例では、2つのブリックを持つノードが3つある、分散複製ボリュームを作成します。3つ目のブリックはそれぞれarbiterブリックとして使用されます。

sudo gluster volume create myvolume replica 3 arbiter 1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick2
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x (2 + 1) = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1 (arbiter)
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2 (arbiter)
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

4.1.4 分離ボリュームの作成

この項では、分離ボリュームを使用したプールの作成について説明します。

分離ボリュームを作成する場合は、ボリュームの冗長性レベルを設定します。redundancyの値によって、ボリュームの操作を中断することなく、失うことができるブリックの数が設定されます。redundancyの値は0より大きい必要があり、ブリックの合計数は2*redundancyより大きい必要があります。分離ボリュームには少なくとも3つのブリックが必要です。

1つの分離セットのすべてのブリックは容量が同じである必要があり、そうでない場合、最も小さいブリックがいっぱいになったときに、分離セットで追加のデータが許可されません。

例4.8 3つのノードに対する1つのブリックを持つ分離ボリュームの作成

この例では、3つのノードに対する1つのブリックを持つ分離ボリュームを作成します。

sudo gluster volume create myvolume disperse 3 redundancy 1 node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Disperse
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

4.1.5 分散分離ボリュームの作成

この項では、分散分離ボリュームを使用したプールの作成について説明します。分散分離ボリュームは、分離した2つのサブボリュームで構成されます(これらは結果的に分散します)。ブリックの数は、disperseの数の倍数であり、0より大きい必要があります。分離ボリュームには少なくとも3つのブリックが必要であるため、分散分離ボリュームには少なくとも6つのブリックが必要です。たとえば、1つのブリックを持つノードが6つ、またはノードごとに2つのブリックを持つ3つのノードが、このボリューム・タイプには必要です。

ブリックが指定される順序は、データ保護に影響します。それぞれのdisperseの数によって分離セットが形成されて、すべての分離セットが結合されて、ボリューム全体の分散セットになります。各ノードの最初のブリックをリストし、各ノードの2つ目のブリックを同じ順序でリストすることで、分離セットが同じノードにないことを確認します。

redundancyの値は、分離ボリュームの場合と同じ方法で使用されます。

例4.9 1つのブリックを持つノードが6つある分散分離ボリュームの作成

この例では、1つのブリックを持つノードが6つある分散分離ボリュームを作成します。

sudo gluster volume create myvolume disperse 3 redundancy 1 node{1..6}:/data/glusterfs/myvolume/mybrick/brick
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Disperse
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x (2 + 1) = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick
Brick5: node5:/data/glusterfs/myvolume/mybrick/brick
Brick6: node6:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

例4.10 2つのブリックを持つノードが3つある分散分離ボリュームの作成

この例では、2つのブリックを持つノードが3つある分散分離ボリュームを作成します。

sudo gluster volume create myvolume disperse 3 redundancy 1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick2
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info

Volume Name: myvolume
Type: Distributed-Disperse
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x (2 + 1) = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

4.2 ボリュームの管理

この項では、いくつかの基本的なボリューム管理操作について説明します。ボリューム管理の詳細は、アップストリームのドキュメントを参照してください。

4.2.1 ボリューム・オプションの設定

ボリュームを構成およびチューニングするために設定できるオプションがいくつかあります。これらのオプションは、次を使用して設定されます。

gluster volume set volume_name option

たとえば、ボリュームのマウントへのアクセスをネットワーク上のIPアドレスに制限するには、次のようにします。

sudo gluster volume set myvolume auth.allow 192.168.10.*

同様に、ボリュームのサブディレクトリへのアクセスを設定するには、次のように入力します。

sudo gluster volume set myvolume auth.allow "/(192.168.10.*),/mysubdir1(192.168.1.*),/mysubdir2(192.168.2.*)"

4.2.2 ボリュームの起動

ボリュームを起動するには、次のコマンドを使用します。

gluster volume start volume_name

4.2.3 ボリュームの停止

ボリュームを停止するには、次のコマンドを使用します。

gluster volume stop volume_name

操作を確認するよう要求されます。yと入力して、ボリュームを停止することを確認します。

4.2.4 複製ボリュームの自己修復

自己修復デーモンがバックグラウンドで実行されて、これによってブリックに関する問題が診断され、修復を必要とするファイルに対して10分ごとに自己修復プロセスが自動的に開始されます。修復が必要なファイルを表示するには、次を使用します。

sudo gluster volume heal myvolume info

次を使用して、自己修復を手動で起動できます。

sudo gluster volume heal myvolume

ボリュームのスプリット・ブレイン状態のファイルをリストするには、次を使用します。

sudo gluster volume heal myvolume info split-brain

スプリット・ブレインの問題の回避と回復に使用できる方法については、アップストリームのドキュメントを参照してください。

4.2.5 ボリュームの拡張

ボリュームのブリックの数を増やして、使用可能なストレージを拡張できます。分散複製ボリュームと分散分離ボリュームを拡張する場合は、replicaまたはdisperseの数の倍数のいくつかのブリックを追加する必要があります。たとえば、replicaの数が2の分散複製ボリュームを拡張するには、4、6、8などの2の倍数単位でブリックを追加する必要があります。

ボリュームを拡張するには:
  1. 信頼できるストレージ・プール内のすべての既存のノードと同じ構成およびストレージで、新しいノードを準備します。

  2. プールにノードを追加します。

    gluster peer probe node4
  3. ブリックを追加します。

    gluster volume add-brick myvolume node4:/data/glusterfs/myvolume/mybrick/brick
  4. ボリュームをリバランスして、新しいブリックに対してファイルを分散します。

    sudo gluster volume rebalance myvolume start

    ボリュームのリバランスのステータスを確認するには、次のように入力します。

    sudo gluster volume rebalance myvolume status
例4.11 分散複製ボリュームの作成とノードの追加

この例では、各ノードに2つのブリックがある、3つのノードを持つ分散複製ボリュームを作成します。その後、ボリュームが拡張され、2つのブリックを持つ新しいノードが追加されます。複製ボリュームに新しいノードを追加する場合は、replicaの数を、プール内の新しいノードの数に増やす必要があります。

sudo gluster volume create myvolume replica 3 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick1 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick2
volume create: myvolume: success: please start the volume to access data
sudo gluster volume start myvolume
volume start: myvolume: success
sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

sudo gluster peer status
Number of Peers: 2

Hostname: node2
Uuid: ...
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: ...
State: Peer in Cluster (Connected)

sudo gluster peer probe node4
peer probe: success. 
sudo gluster peer status
Number of Peers: 3

Hostname: node2
Uuid: ...
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: ...
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: ...
State: Peer in Cluster (Connected)

sudo gluster volume add-brick myvolume replica 4 \
node4:/data/glusterfs/myvolume/mybrick/brick1 \
node4:/data/glusterfs/myvolume/mybrick/brick2
volume add-brick: success
sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 4 = 8
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick1
Brick5: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick7: node3:/data/glusterfs/myvolume/mybrick/brick2
Brick8: node4:/data/glusterfs/myvolume/mybrick/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
sudo gluster volume rebalance myvolume start
volume rebalance: myvolume: success: Rebalance on myvolume has been started successfully. 
Use rebalance status command to check status of the rebalance process.
ID: ...
sudo gluster volume rebalance myvolume status
...
volume rebalance: myvolume: success

例4.12 分散複製ボリュームのノードへのブリックの追加

この例では、既存の分散複製ボリュームに2つのブリックを追加します。このボリュームを作成するステップは、例4.11「分散複製ボリュームの作成とノードの追加」に示されています。

sudo gluster volume add-brick myvolume \
node{1,2,3,4}:/data/glusterfs/myvolume/mybrick/brick3 \
node{1,2,3,4}:/data/glusterfs/myvolume/mybrick/brick4
volume add-brick: success
sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x 4 = 16
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick1
Brick5: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick7: node3:/data/glusterfs/myvolume/mybrick/brick2
Brick8: node4:/data/glusterfs/myvolume/mybrick/brick2
Brick9: node1:/data/glusterfs/myvolume/mybrick/brick3
Brick10: node2:/data/glusterfs/myvolume/mybrick/brick3
Brick11: node3:/data/glusterfs/myvolume/mybrick/brick3
Brick12: node4:/data/glusterfs/myvolume/mybrick/brick3
Brick13: node1:/data/glusterfs/myvolume/mybrick/brick4
Brick14: node2:/data/glusterfs/myvolume/mybrick/brick4
Brick15: node3:/data/glusterfs/myvolume/mybrick/brick4
Brick16: node4:/data/glusterfs/myvolume/mybrick/brick4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off.
sudo gluster volume rebalance myvolume start
volume rebalance: myvolume: success: Rebalance on myvolume has been started successfully. 
Use rebalance status command to check status of the rebalance process.
ID: ...
sudo gluster volume rebalance myvolume status
...
volume rebalance: myvolume: success

4.2.6 ボリュームの縮小

ボリュームのブリックの数を減らすことができます。これは、Glusterプール内のノードでハードウェアまたはネットワークの障害が発生した場合に役立つことがあります。

分散複製ボリュームと分散分離ボリュームを縮小する場合は、replicaまたはstripeの数の倍数のいくつかのブリックを削除する必要があります。たとえば、replicaの数が2の分散複製ボリュームを縮小するには、2の倍数単位(4、6、8など)でブリックを削除する必要があります。削除するブリックは、同じレプリカ・セットまたは分離セットのものである必要があります。

ボリュームを縮小するには:
  1. ブリックを削除します。

    sudo gluster volume remove-brick myvolume node4:/data/glusterfs/myvolume/mybrick/brick start

    startオプションにより、ボリュームのリバランス操作が自動的にトリガーされて、削除されるブリックからボリューム内の他のブリックにデータが移行されます。

  2. ブリックの削除のステータスを確認するには、次のように入力します。

    sudo gluster volume remove-brick myvolume status
  3. brick-removalステータスがcompletedの場合に、remove-brick操作をコミットします。

    sudo gluster volume remove-brick myvolume commit

    操作を確認するよう要求されます。yと入力して、ブリックを削除することを確認します。

    ブリックのデータは、プール内の他のブリックに移行されます。削除されたブリックのデータには、Glusterマウント・ポイントからアクセスできなくなります。ブリックを削除すると、データではなく、構成情報が削除されます。必要に応じて、引き続きブリックからデータに直接アクセスできます。

例4.13 分散複製ボリュームからのノードの削除

この例では、4つのノードを持つプールから1つのノードを削除します。このボリュームのreplicaの数は4です。ノードが削除されたら、replicaの数を3に減らす必要があります。複製ボリュームでは、startオプションは必要ありませんが、かわりに、forceオプションを使用する必要があります。forceオプションは、remove-brickプロセスのステータスを確認したり、remove-brickコミット・ステップを実行する必要がないことを意味します。

sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x 4 = 16
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick1
Brick5: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick7: node3:/data/glusterfs/myvolume/mybrick/brick2
Brick8: node4:/data/glusterfs/myvolume/mybrick/brick2
Brick9: node1:/data/glusterfs/myvolume/mybrick/brick3
Brick10: node2:/data/glusterfs/myvolume/mybrick/brick3
Brick11: node3:/data/glusterfs/myvolume/mybrick/brick3
Brick12: node4:/data/glusterfs/myvolume/mybrick/brick3
Brick13: node1:/data/glusterfs/myvolume/mybrick/brick4
Brick14: node2:/data/glusterfs/myvolume/mybrick/brick4
Brick15: node3:/data/glusterfs/myvolume/mybrick/brick4
Brick16: node4:/data/glusterfs/myvolume/mybrick/brick4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
sudo gluster volume remove-brick myvolume replica 3 \
node4:/data/glusterfs/myvolume/mybrick/brick1 \
node4:/data/glusterfs/myvolume/mybrick/brick2 \
node4:/data/glusterfs/myvolume/mybrick/brick3 \
node4:/data/glusterfs/myvolume/mybrick/brick4 \
force 
sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x 3 = 12
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Brick7: node1:/data/glusterfs/myvolume/mybrick/brick3
Brick8: node2:/data/glusterfs/myvolume/mybrick/brick3
Brick9: node3:/data/glusterfs/myvolume/mybrick/brick3
Brick10: node1:/data/glusterfs/myvolume/mybrick/brick4
Brick11: node2:/data/glusterfs/myvolume/mybrick/brick4
Brick12: node3:/data/glusterfs/myvolume/mybrick/brick4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
sudo gluster peer detach node4
peer detach: success
sudo gluster peer status
Number of Peers: 2

Hostname: node2
Uuid: ...
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: ...
State: Peer in Cluster (Connected)

例4.14 分散複製ボリュームからのブリックの削除

この例では、分散複製ボリュームから2つのブリックを削除します。

sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x 3 = 12
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Brick7: node1:/data/glusterfs/myvolume/mybrick/brick3
Brick8: node2:/data/glusterfs/myvolume/mybrick/brick3
Brick9: node3:/data/glusterfs/myvolume/mybrick/brick3
Brick10: node1:/data/glusterfs/myvolume/mybrick/brick4
Brick11: node2:/data/glusterfs/myvolume/mybrick/brick4
Brick12: node3:/data/glusterfs/myvolume/mybrick/brick4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
sudo gluster volume remove-brick myvolume \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick3 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick4 \
start
volume remove-brick start: success
ID: ...
sudo gluster volume remove-brick myvolume \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick3 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick4 \
status
     Node ...        status  run time in h:m:s
--------- ...  ------------     --------------
localhost ...  completed        0:00:00
node2     ...  completed        0:00:00
node3     ...  completed        0:00:01

sudo gluster volume remove-brick myvolume \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick3 \
node{1,2,3}:/data/glusterfs/myvolume/mybrick/brick4 \
commit
Removing brick(s) can result in data loss. Do you want to Continue? (y/n) y
volume remove-brick commit: success
Check the removed bricks to ensure all files are migrated.
If files with data are found on the brick path, copy them via a gluster mount 
point before re-purposing the removed brick. 
sudo gluster volume info
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick1
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick1
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick1
Brick4: node1:/data/glusterfs/myvolume/mybrick/brick2
Brick5: node2:/data/glusterfs/myvolume/mybrick/brick2
Brick6: node3:/data/glusterfs/myvolume/mybrick/brick2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

4.2.7 ボリュームの削除

ボリュームを削除すると、ボリュームのすべてのデータが消去されます。ボリュームを削除するには、まずボリュームを停止してから、次のコマンドを使用します。

gluster volume delete volume_name

操作を確認するよう要求されます。yと入力して、ボリュームを削除してすべてのデータを消去することを確認します。

ストレージを再利用する場合は、各ノードのすべてのディレクトリを削除する必要があります。たとえば:

sudo rm -rf /data/glusterfs/myvolume/mybrick/*

4.3 ボリュームのモニター

パフォーマンスの調整、ストレージ容量の計画およびトラブルシューティングに役立つように、ボリュームをモニターできます。

ボリュームのモニターに使用する主なコマンドは、次のとおりです。

  • gluster volume status

  • gluster volume profile

  • gluster volume top

これらのコマンドにより、ブリックおよびボリュームのステータスとパフォーマンスに関する情報が表示されます。

この項では、これらのモニタリング・コマンドの使用について説明します。

4.3.1 volume statusコマンドの使用方法

gluster volume statusコマンドは、ブリックとボリュームのステータスに関する情報を表示します。次の構文を使用します。

gluster volume status volume_name options

次の例は、一般的なタスクのパフォーマンスに使用できるgluster volume statusコマンドの基本的な使用方法を示しています。詳細は、アップストリームのドキュメントを参照してください。

gluster volume status volume_name

ボリュームの各ブリックのステータス情報をリストします。

gluster volume status volume_name detail

ボリュームの各ブリックのより詳細なステータス情報をリストします。

gluster volume status volume_name clients

ボリュームに接続されているクライアントをリストします。

gluster volume status volume_name mem

ボリュームの各ブリックのメモリー使用率とメモリー・プールの詳細をリストします。

gluster volume status volume_name inode

ボリュームのiノード表をリストします。

gluster volume status volume_name fd

ボリュームのオープン・ファイル記述子表をリストします。

gluster volume status volume_name callpool

ボリュームの保留中のコールをリストします。

出力を含む、より詳細ないくつかの例を次に示します。

例4.15 ボリュームのブリックに関するステータス情報の表示

この例では、ボリュームのブリックに関するステータス情報を表示します。

sudo gluster volume status myvolume 
Status of volume: myvolume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/data/glusterfs/myvolume/mybric
k/brick                                     49154     0          Y       13553
Brick node2:/data/glusterfs/myvolume/mybric
k/brick                                     49154     0          Y       10212
Brick node3:/data/glusterfs/myvolume/mybric
k/brick                                     49152     0          Y       27358
Brick node4:/data/glusterfs/myvolume/mybric
k/brick                                     49152     0          Y       30502
Brick node5:/data/glusterfs/myvolume/mybric
k/brick                                     49152     0          Y       16282
Brick node6:/data/glusterfs/myvolume/mybric
k/brick                                     49152     0          Y       8913 
Self-heal Daemon on localhost               N/A       N/A        Y       13574
Self-heal Daemon on node3                   N/A       N/A        Y       27379
Self-heal Daemon on node5                   N/A       N/A        Y       16303
Self-heal Daemon on node2                   N/A       N/A        Y       10233
Self-heal Daemon on node6                   N/A       N/A        Y       8934 
Self-heal Daemon on node4                   N/A       N/A        Y       30523
 
Task Status of Volume myvolume
------------------------------------------------------------------------------
There are no active volume tasks

例4.16 ボリュームのブリックに関する詳細なステータス情報の表示

この例では、ボリュームのブリックに関する、より詳細なステータス情報を表示します。

sudo gluster volume status myvolume detail
Status of volume: myvolume
------------------------------------------------------------------------------
Brick                : Brick node1:/data/glusterfs/myvolume/mybrick/brick
TCP Port             : 49154               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 13553               
File System          : xfs                 
Device               : /dev/vdb            
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : N/A                 
Disk Space Free      : 98.9GB              
Total Disk Space     : 100.0GB             
Inode Count          : 104857600           
Free Inodes          : 104857526           
------------------------------------------------------------------------------
...       
Brick                : Brick node6:/data/glusterfs/myvolume/mybrick/brick
TCP Port             : 49152               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 8913                
File System          : xfs                 
Device               : /dev/vdb            
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : N/A                 
Disk Space Free      : 99.9GB              
Total Disk Space     : 100.0GB             
Inode Count          : 104857600           
Free Inodes          : 104857574           

例4.17 ボリュームのブリックのメモリー使用率に関する情報の表示

この例では、ボリュームのブリックのメモリー使用率に関する情報を表示します。

sudo gluster volume status myvolume mem
Memory status for volume : myvolume
----------------------------------------------
Brick : node1:/data/glusterfs/myvolume/mybrick/brick
Mallinfo
--------
Arena    : 9252864
Ordblks  : 150
Smblks   : 11
Hblks    : 9
Hblkhd   : 16203776
Usmblks  : 0
Fsmblks  : 976
Uordblks : 3563856
Fordblks : 5689008
Keepcost : 30848
 
----------------------------------------------
...
Brick : node6:/data/glusterfs/myvolume/mybrick/brick
Mallinfo
--------
Arena    : 9232384
Ordblks  : 184
Smblks   : 43
Hblks    : 9
Hblkhd   : 16203776
Usmblks  : 0
Fsmblks  : 4128
Uordblks : 3547696
Fordblks : 5684688
Keepcost : 30848
 
----------------------------------------------

4.3.2 volume profileコマンドの使用方法

gluster volume profileコマンドは、ボリュームの各ファイル操作(FOP)に関するブリックのI/O情報を表示します。このコマンドで示される情報は、ボリュームのボトルネックが存在する可能性がある場所を特定するのに役立ちます。

ノート

ボリューム・プロファイリングをオンにするとシステムのパフォーマンスに影響を与える可能性があるため、トラブルシューティングおよびパフォーマンス・モニタリングにのみ使用する必要があります。

次の構文を使用します。

gluster volume profile volume_name options

完全な構文を表示するには、gluster volume profile -helpコマンドを使用します。

次の例は、gluster volume profileコマンドの基本的な使用方法を示しており、一般的なタスクのパフォーマンスに役立ちます。詳細は、アップストリームのドキュメントを参照してください。

gluster volume profile volume_name start

ボリュームのプロファイリング・サービスを起動します。

gluster volume profile volume_name info

ボリュームの各ブリックのプロファイリングのI/O情報を表示します。

gluster volume profile volume_name stop

ボリュームのプロファイリング・サービスを停止します。

ボリューム・プロファイリングのより詳細な使用例を次に示します。

例4.18 ボリュームをモニターするためのプロファイリングの使用方法

この例では、ボリュームのプロファイリングをオンにして、ボリュームのプロファイリング情報を表示し、プロファイリングをオフにします。ボリュームのプロファイリングが開始されたときに、ボリューム情報(diagnostics.count-fop-hitsおよびdiagnostics.latency-measurement)を表示すると、2つの新しい診断プロパティが有効になり、表示されます。

sudo gluster volume profile myvolume start
Starting volume profile on myvolume has been successful 
sudo gluster volume info myvolume
 
Volume Name: myvolume
Type: Distributed-Replicate
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: node1:/data/glusterfs/myvolume/mybrick/brick
Brick2: node2:/data/glusterfs/myvolume/mybrick/brick
Brick3: node3:/data/glusterfs/myvolume/mybrick/brick
Brick4: node4:/data/glusterfs/myvolume/mybrick/brick
Brick5: node5:/data/glusterfs/myvolume/mybrick/brick
Brick6: node6:/data/glusterfs/myvolume/mybrick/brick
Options Reconfigured:
diagnostics.count-fop-hits: on
diagnostics.latency-measurement: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
sudo gluster volume profile myvolume info
Brick: node1:/data/glusterfs/myvolume/mybrick/brick
---------------------------------------------------
Cumulative Stats:
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            871  RELEASEDIR
      0.17       2.00 us       2.00 us       2.00 us              3     OPENDIR
      3.07      36.67 us      31.00 us      48.00 us              3      LOOKUP
     10.68      95.75 us      15.00 us     141.00 us              4    GETXATTR
     86.08     514.33 us     246.00 us     908.00 us              6     READDIR
 
    Duration: 173875 seconds
   Data Read: 0 bytes
Data Written: 0 bytes
 
Interval 5 Stats:
 
    Duration: 45 seconds
   Data Read: 0 bytes
Data Written: 0 bytes
...
sudo gluster volume profile myvolume stop
Stopping volume profile on myvolume has been successful 

4.3.3 volume topコマンドの使用方法

gluster volume topコマンドは、ブリックのパフォーマンス・メトリック(読取り、書込み、ファイル・オープン・コール、ファイル読取りコールなど)を表示します。次の構文を使用します。

gluster volume top volume_name options

コマンドの完全な構文を表示するには、gluster volume top -helpと入力します。

次の例は、gluster volume topコマンドの基本的な使用方法を示しており、一般的なタスクのパフォーマンスに役立ちます。詳細は、アップストリームのドキュメントを参照してください。

gluster volume top volume_name read

ボリュームの各ブリックのオープン・コール数が最も多いファイルをリストします。

gluster volume top volume_name write

ボリュームの各ブリックの書込みコール数が最も多いファイルをリストします。

gluster volume top volume_name open

ボリュームの各ブリックのオープン・コール数が最も多いファイルをリストします。

gluster volume top volume_name opendir

ボリュームの各ブリックのディレクトリ読取りコール数が最も多いファイルをリストします。

出力を含む、より詳細ないくつかの例を次に示します。

例4.19 ボリュームのすべてのブリックのパフォーマンスの表示

この例は、ボリュームのすべてのブリックに対する読取りおよび書込みのパフォーマンスを表示する方法を示しています。

sudo gluster volume top myvolume read-perf  bs 2014 count 1024
Brick: node1:/data/glusterfs/myvolume/mybrick/brick
Throughput 1776.34 MBps time 0.0012 secs
Brick: node2:/data/glusterfs/myvolume/mybrick/brick
Throughput 1694.61 MBps time 0.0012 secs
Brick: node6:/data/glusterfs/myvolume/mybrick/brick
Throughput 1640.68 MBps time 0.0013 secs
Brick: node5:/data/glusterfs/myvolume/mybrick/brick
Throughput 1809.07 MBps time 0.0011 secs
Brick: node4:/data/glusterfs/myvolume/mybrick/brick
Throughput 1438.17 MBps time 0.0014 secs
Brick: node3:/data/glusterfs/myvolume/mybrick/brick
Throughput 1464.73 MBps time 0.0014 secs
sudo gluster volume top myvolume write-perf bs 2014 count 1024
Brick: node1:/data/glusterfs/myvolume/mybrick/brick
Throughput 779.42 MBps time 0.0026 secs
Brick: node4:/data/glusterfs/myvolume/mybrick/brick
Throughput 759.61 MBps time 0.0027 secs
Brick: node5:/data/glusterfs/myvolume/mybrick/brick
Throughput 763.26 MBps time 0.0027 secs
Brick: node6:/data/glusterfs/myvolume/mybrick/brick
Throughput 736.02 MBps time 0.0028 secs
Brick: node2:/data/glusterfs/myvolume/mybrick/brick
Throughput 751.85 MBps time 0.0027 secs
Brick: node3:/data/glusterfs/myvolume/mybrick/brick
Throughput 713.61 MBps time 0.0029 secs


例4.20 ブリックのパフォーマンスの表示

この例は、1つのブリックに対する読取りおよび書込みのパフォーマンスを表示する方法を示しています。

sudo gluster volume top myvolume read-perf bs 2014 count 1024 brick node1:/data/glusterfs/myvolume/mybrick/brick
Brick: node1:/data/glusterfs/myvolume/mybrick/brick
Throughput 1844.67 MBps time 0.0011 secs
sudo gluster volume top myvolume write-perf bs 2014 count 1024 brick \
node1:/data/glusterfs/myvolume/mybrick/brick
Brick: node1:/data/glusterfs/myvolume/mybrick/brick
Throughput 612.88 MBps time 0.0034 secs