第5章 クラスターでの GFS2 ファイルシステムの設定

以下に、GFS2 ファイルシステムを含む Pacemaker クラスターの設定に必要な手順の概要を示します。
すべてのノードでのクラスターソフトウェアのインストールと起動が完了した後でクラスターを作成します。クラスターのフェンシングを設定する必要があります。Pacemaker クラスターの作成とクラスターのフェンシングの設定は、『High Availability Add-On の管理』「Creating a Red Hat High-Availability Cluster with Pacemaker」を参照してください。その後は、以下の手順を実行します。
  1. クラスターのすべてのノードで、Resilient Storage チャンネルから lvm2-clustergfs2-utils パッケージをインストールします。
    # yum install lvm2-cluster gfs2-utils
  2. グローバル Pacemaker パラメーター no_quorum_policyfreeze に設定します。

    注記

    no-quorum-policy の値は、デフォルトでは stop に設定され、定足数を失うと、残りのパーティション上の全リソースが直ちに停止されます。一般的には、このデフォルト値が最も安全で最適なオプションですが、ほとんどのリソースとは異なり、GFS2 が正しく機能するには定足数が必要です。定足数を失うと、GFS2 マウントを使用しているアプリケーションと GFS2 マウント自体の両方が正しく停止できなくなります。定足数がないままこうしたリソースを停止しようとすると、停止に失敗し、最終的に定足数を失う度にクラスター全体がフェンシングされます。
    このような状況に対処するために、GFS2 を使用している場合は no-quorum-policy=freeze を設定できます。この場合は、定足数が失われると、定足数を取り戻すまで残りのパーティションで何の処理も行われなくなります。
    # pcs property set no-quorum-policy=freeze
  3. dlm リソースをセットアップします。これは、clvmd および GFS2 に必要な依存関係です。
    # pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
  4. クラスター化ロックを有効にするために、クラスターの各ノードで以下のコマンドを実行します。このコマンドを実行すると、/etc/lvm/lvm.conf ファイルの locking_type パラメーターが 3 に設定されます。
    # /sbin/lvmconf --enable-cluster
  5. clvmd をクラスターリソースとしてセットアップします。
    # pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    clvmdcmirrord は、ocf:heartbeat:clvm リソースエージェントを使用して Pacemaker で起動と管理を行うことに注意してください。また、systemd でブートしているときは、起動する必要はありません。さらに、開始手順の一環として ocf:heartbeat:clvm リソースエージェントは、/etc/lvm/lvm.conf ファイルの locking_type パラメーターを 3 に設定し、lvmetad デーモンを無効にします。
  6. clvmd および dlmの依存関係をセットアップし、順番に起動します。clvmddlm の後に起動し、dlm と同じノードで実行する必要があります。
    # pcs constraint order start dlm-clone then clvmd-clone
    # pcs constraint colocation add clvmd-clone with dlm-clone
  7. クラスター化論理ボリュームを作成します。
    # pvcreate /dev/vdb
    # vgcreate -Ay -cy cluster_vg /dev/vdb
    # lvcreate -L5G -n cluster_lv cluster_vg

    警告

    CLVM を使用して共有ストレージ上にボリュームグループを作成する際には、クラスター内のすべてのノードが、ボリュームグループを構成する物理ボリュームに確実にアクセスできるようにする必要があります。ストレージにアクセスできるノードとできないノードが混在する、非対称型のクラスター構成はサポートされていません。
    複数のノードにわたるボリュームを同時に有効にできるようにするために、CLVMD を使用してボリュームグループを管理する場合は、そのボリュームグループでクラスター化フラグを有効している必要があります。このフラグにより、CLVMD は管理する必要のあるボリュームを識別できるようになり、CLVMD が LVM メタデータの連続性を維持することができるようになります。この設定を行わないと、Red Hat サポート対象外の環境となり、ストレージが破損したり、データが失われたりすることがあります。
  8. GFS2 ファイルシステムで論理ボリュームをフォーマットします。クラスター内の各ノードには必ず十分なジャーナルを作成してください。
    # mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv

    警告

    GFS2 ファイルシステムを作成する場合は、-t LockTableName オプションに対して正しい値を指定することが重要です。適切な形式は、ClusterName:FSName です。正しい値を指定しないと、ファイルシステムのマウントができなくなり、破損することがあります。mkfs.gfs2 コマンドのオプションの説明は、「ファイルシステムの作成」 を参照してください。
  9. clusterfs リソースを設定します。
    このファイルシステムは Pacemaker のクラスターリソースとして管理されるため、 /etc/fstab ファイルには追加しないでください。マウントオプションは、options=options を使用してリソース設定の一部として指定できます。すべての設定オプションを確認する場合は、pcs resource describe Filesystem コマンドを実行します。
    以下のクラスターリソース作成コマンドでは、noatime マウントオプションが指定されています。
    # pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" options="noatime" op monitor interval=10s on-fail=fence clone interleave=true
  10. GFS2 と clvmd の依存関係をセットアップし、順番に起動します。GFS2 は clvmd の後に起動し、clvmd と同じノードで実行する必要があります。
    # pcs constraint order start clvmd-clone then clusterfs-clone
    # pcs constraint colocation add clusterfs-clone with clvmd-clone
  11. 予想どおり GFS2 がマウントされていることを確認します。
    # mount |grep /mnt/gfs2-demo
    /dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel)