第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 分散ボリュームの作成
この項では、分散ボリュームを使用してプールを作成する例を示します。
この例では、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
オプションを使用することでのみ作成できます。
この例では、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
この例では、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つ目のブリックを同じ順序でリストすることで、レプリカ・セットが同じノードにないことを確認します。
この例では、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
この例では、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
この例では、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
この例では、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*
より大きい必要があります。分離ボリュームには少なくとも3つのブリックが必要です。
redundancy
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
の値は、分離ボリュームの場合と同じ方法で使用されます。
この例では、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
この例では、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 setmyvolume
auth.allow192.168.10.*
同様に、ボリュームのサブディレクトリへのアクセスを設定するには、次のように入力します。
sudo gluster volume setmyvolume
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の倍数単位でブリックを追加する必要があります。
-
信頼できるストレージ・プール内のすべての既存のノードと同じ構成およびストレージで、新しいノードを準備します。
-
プールにノードを追加します。
gluster peer probe
node4
-
ブリックを追加します。
gluster volume add-brick
myvolume
node4:/data/glusterfs/myvolume/mybrick/brick
-
ボリュームをリバランスして、新しいブリックに対してファイルを分散します。
sudo gluster volume rebalance
myvolume
startボリュームのリバランスのステータスを確認するには、次のように入力します。
sudo gluster volume rebalance
myvolume
status
この例では、各ノードに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
この例では、既存の分散複製ボリュームに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など)でブリックを削除する必要があります。削除するブリックは、同じレプリカ・セットまたは分離セットのものである必要があります。
-
ブリックを削除します。
sudo gluster volume remove-brick
myvolume
node4:/data/glusterfs/myvolume/mybrick/brick
startstart
オプションにより、ボリュームのリバランス操作が自動的にトリガーされて、削除されるブリックからボリューム内の他のブリックにデータが移行されます。 -
ブリックの削除のステータスを確認するには、次のように入力します。
sudo gluster volume remove-brick
myvolume
status -
brick-removal
ステータスがcompleted
の場合に、remove-brick操作をコミットします。sudo gluster volume remove-brick
myvolume
commit操作を確認するよう要求されます。
y
と入力して、ブリックを削除することを確認します。ブリックのデータは、プール内の他のブリックに移行されます。削除されたブリックのデータには、Glusterマウント・ポイントからアクセスできなくなります。ブリックを削除すると、データではなく、構成情報が削除されます。必要に応じて、引き続きブリックからデータに直接アクセスできます。
この例では、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)
この例では、分散複製ボリュームから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 -
ボリュームの保留中のコールをリストします。
出力を含む、より詳細ないくつかの例を次に示します。
この例では、ボリュームのブリックに関するステータス情報を表示します。
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
この例では、ボリュームのブリックに関する、より詳細なステータス情報を表示します。
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
この例では、ボリュームのブリックのメモリー使用率に関する情報を表示します。
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 -
ボリュームのプロファイリング・サービスを停止します。
ボリューム・プロファイリングのより詳細な使用例を次に示します。
この例では、ボリュームのプロファイリングをオンにして、ボリュームのプロファイリング情報を表示し、プロファイリングをオフにします。ボリュームのプロファイリングが開始されたときに、ボリューム情報(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 -
ボリュームの各ブリックのディレクトリ読取りコール数が最も多いファイルをリストします。
出力を含む、より詳細ないくつかの例を次に示します。
この例は、ボリュームのすべてのブリックに対する読取りおよび書込みのパフォーマンスを表示する方法を示しています。
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
この例は、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