5.7.5. 判別ボリュームへの変換
複製されたボリュームを、複製された各サブボリュームに対して新しい arbiter ブリックを追加するか、レプリカブリックを arbiter ブリックに置き換えることで、複製されたボリュームに変換できます。
手順5.1 レプリカ 2 ボリュームの判別ボリュームへの変換
警告
geo レプリケーションが設定されている場合には、このプロセスを実行しないでください。Bug 1683893 で追跡されている競合状態があります。これは、geo レプリケーションが有効な場合にボリュームを変換する際にデータが失われます。
修復中ではないことを確認します。
# gluster volume heal VOLNAME info保留中の修復エントリーが0になるまで待ってから続行します。自己修復の無効化と停止
以下のコマンドを実行して、データ、メタデータ、エントリー自己修復デーモン、および自己修復デーモンを無効にします。# gluster volume set VOLNAME cluster.data-self-heal off # gluster volume set VOLNAME cluster.metadata-self-heal off # gluster volume set VOLNAME cluster.entry-self-heal off # gluster volume set VOLNAME self-heal-daemon offボリュームへの arbiter ブックの追加
各複製サブボリュームに arbiter ブックを追加して、ボリュームを変換します。# gluster volume add-brick VOLNAME replica 3 arbiter 1 HOST:arbiter-brick-pathたとえば、testvol と呼ばれる双方向で複製されたボリュームがあり、arbiter が使用する新しいブリックがある場合は、次のコマンドを使用して、ブリックを arbiter として追加できます。# gluster volume add-brick testvol replica 3 arbiter 1 server:/bricks/arbiter_brick既存の双方向分散型ボリュームがある場合、判別分散複製ボリュームに変換するには、各サブボリュームに新たなブリックが必要になります。以下に例を示します。# gluster volume add-brick testvol replica 3 arbiter 1 server1:/bricks/arbiter_brick1 server2:/bricks/arbiter_brick2クライアントの volfiles が更新するまで待ちます。
これには約 5 分かかります。ブリックが正常に追加されたことを確認します。
# gluster volume info VOLNAME # gluster volume status VOLNAME自己修復を再度有効化
以下のコマンドを実行して、サーバーで自己修復を再度有効にします。# gluster volume set VOLNAME cluster.data-self-heal on # gluster volume set VOLNAME cluster.metadata-self-heal on # gluster volume set VOLNAME cluster.entry-self-heal on # gluster volume set VOLNAME self-heal-daemon onすべてのエントリーが修復されていることを確認
# gluster volume heal VOLNAME info保留中の秀句エントリーが0になるまで待機して、すべての修復が正常に実行されるようにします。
手順5.2 レプリカ 3 ボリュームの判別ボリュームへの変換
警告
geo レプリケーションが設定されている場合には、このプロセスを実行しないでください。Bug 1683893 で追跡されている競合状態があります。これは、geo レプリケーションが有効な場合にボリュームを変換する際にデータが失われます。
修復中ではないことを確認します。
# gluster volume heal VOLNAME info保留中の修復エントリーが0になるまで待ってから続行します。ボリュームのレプリカ数を 2 に減らす
レプリカ数が 2 に削減されるように、ボリュームのすべてのサブボリュームからブリックを削除します。たとえば、2 つのサブボリュームにデータを分散するレプリカ 3 ボリュームでは、以下のコマンドを実行します。# gluster volume remove-brick VOLNAME replica 2 HOST:subvol1-brick-path HOST:subvol2-brick-path force注記分散複製ボリュームでは、データはサブボリューム全体に分散され、サブボリュームのブリック全体に複製されます。つまり、ボリュームのレプリカ数を減らすには、すべてのサブボリュームからブリックを削除する必要があります。ブリックは、gluster volume info 出力で サブボリュームでグループ化されます。レプリカ数が 3 の場合は、最初の 3 つのブリックが最初のサブボリュームを形成し、次の 3 つのブリックは 2 番目のサブボリュームなどを形成します。# gluster volume info VOLNAME [...] Number of Bricks: 2 x 3 = 6 Transport-type: tcp Bricks: Brick1: node1:/test1/brick Brick2: node2:/test2/brick Brick3: node3:/test3/brick Brick4: node1:/test4/brick Brick5: node2:/test5/brick Brick6: node3:/test6/brick [...]このボリュームでは、データは 2 つのサブボリュームに分散され、それぞれ 3 つのブリックで構成されます。最初のサブボリュームは、ブリック 1、2、および 3 で構成されます。2 つ目のサブボリュームは、ブリック 4、5、および 6 で構成されます。以下のコマンドを使用して各サブボリュームから 1 つのブリックを削除すると、必要に応じてレプリカ数を 2 に減らします。# gluster volume remove-brick VOLNAME replica 2 HOST:subvol1-brick-path HOST:subvol2-brick-path force自己修復の無効化と停止
以下のコマンドを実行して、データ、メタデータ、エントリー自己修復デーモン、および自己修復デーモンを無効にします。# gluster volume set VOLNAME cluster.data-self-heal off # gluster volume set VOLNAME cluster.metadata-self-heal off # gluster volume set VOLNAME cluster.entry-self-heal off # gluster volume set VOLNAME self-heal-daemon offボリュームへの arbiter ブックの追加
各複製サブボリュームに arbiter ブックを追加して、ボリュームを変換します。# gluster volume add-brick VOLNAME replica 3 arbiter 1 HOST:arbiter-brick-pathたとえば、複製されたボリュームがある場合には、以下のコマンドを実行します。# gluster volume add-brick testvol replica 3 arbiter 1 server:/bricks/brick既存の分散複製のボリュームがある場合:# gluster volume add-brick testvol replica 3 arbiter 1 server1:/bricks/arbiter_brick1 server2:/bricks/arbiter_brick2クライアントの volfiles が更新するまで待ちます。
これには約 5 分かかります。各クライアントで以下のコマンドを実行して、これが完了したことを確認します。# grep -ir connected mount-path/.meta/graphs/active/volname-client-*/private出力でconnected=1に表示される回数は、クライアントに接続されたブリックの数になります。ブリックが正常に追加されたことを確認します。
# gluster volume info VOLNAME # gluster volume status VOLNAME自己修復を再度有効化
以下のコマンドを実行して、サーバーで自己修復を再度有効にします。# gluster volume set VOLNAME cluster.data-self-heal on # gluster volume set VOLNAME cluster.metadata-self-heal on # gluster volume set VOLNAME cluster.entry-self-heal on # gluster volume set VOLNAME self-heal-daemon onすべてのエントリーが修復されていることを確認
# gluster volume heal VOLNAME info保留中の秀句エントリーが0になるまで待機して、すべての修復が正常に実行されるようにします。