付録F High Availability LVM (HA-LVM)

Red Hat High Availability アドオンはフェイルオーバー設定の LVM ボリューム (HA-LVM) に対応しています。これは、Clustered Logical Volume Manager (CLVM) により有効になるアクティブ/アクティブ構成とは異なります。CLVM とは、コンピューターのクラスターが共有ストレージを管理できるようにする LVM のクラスタリング拡張機能セットです。
CLVM 又は HA-LVM は、デプロイされるアプリケーションやサービスの必要性に基づき使用することをお勧めします。
  • アプリケーションがクラスター対応で、かつ一度に複数のマシンで同時に実行するようチューニングされている場合は、CLVM の使用をお勧めします。具体的には、使用しているクラスターの複数のノードにストレージへのアクセスが必要で、そのストレージがアクティブなノード間で共有される場合は、CLVM を使用する必要があります。論理ボリュームが設定されている間に物理ストレージへのアクセスをロックすることにより、ユーザーは CLVM を使用して共有ストレージ上で論理ボリュームを設定できます。また、CLVM はクラスター化されたロッキングサービスを使用して共有ストレージを管理します。CLVM 及び LVM 設定の全般情報は、『論理ボリュームマネージャ管理』 を参照してください。
  • ストレージにアクセスする単一ノードのみがいつでもアクティブなアクティブ/パッシブ (フェイルオーバー) 構成でアプリケーションが最適に実行する場合は、High Availability Logical Volume Management (HA-LVM) エージェントの使用をお勧めします。
大半のアプリケーションは、他のインスタンスと同時に実行するよう設計/最適化されていないためアクティブ/パッシブ構成で適切に実行します。クラスター化された論理ボリュームでクラスター対応していないアプリケーションを実行することを選択した場合、論理ボリュームがミラーされるとパフォーマンスは低下します。こうしたインスタンスでは、論理ボリュームにクラスター通信オーバーヘッドがあるためです。クラスター対応のアプリケーションは、クラスターファイルシステム及びクラスター対応論理ボリュームにより生じるパフォーマンス低下を超えた高いパフォーマンスを実現できるはずです。これは、一部のアプリケーションとワークロードにとっては、他より簡単に実現できます。クラスターの要件、及びアクティブ/アクティブクラスターを最適化するための別途作業が役立つかどうかは、2 つの LVM バリアント間で選択する方法によって決まります。大半のユーザーは、HA-LVM を使用することで最適な HA 結果を得ることができます。
HA-LVM と CLVM が類似しているのは、両方とも LVM メタデータとその論理ボリュームの破損を防ぐ点です。複数のマシンが重複する変更を実行できるようになっていると、この破損が発生します。HA-LVM は、論理ボリュームは排他的にのみアクティベートできる、という制限を課します。つまり、一度に 1 つのマシン上でのみアクティブであるということです。これは、ローカルで (非クラスター化) 実装されたストレージドライバーのみが使用されることを意味します。この方法で調整されたクラスターのオーバーヘッドを回避することで、パフォーマンスが向上します。CLVM はこうした制限を課しません。つまり、ユーザーはクラスター内の全マシンの論理ボリュームを自由にアクティベートできます。これにより、クラスター対応のストレージドライバーを強制的に使用することになるため、クラスター対応のファイルシステムおよびアプリケーションが上部に置かれます。
HA-LVM を設定するには、単独の論理ボリュームをアクティブ化する命令を行う 2 つのメソッドのうち 1 つを使用します。
  • 推奨されるメソッドは CLVM の使用ですが、これは論理ボリュームを単独でアクティブ化するだけです。これによるメリットは、簡単に設定できること、管理上のミス (使用中の論理ボリュームの削除など) の回避が向上することです。CLVM を使用するには、clvmd デーモンを含む High Availability アドオン及び Resilient Storage アドオンソフトウェアが実行されている必要があります。
    このメソッドを使用して HA-LVM を設定する手順は、「CLVM を使用した HA-LVM フェイルオーバーの設定 (推奨)」 に記載されています。
  • 2 番目のメソッドは、ローカルマシンのロックと LVM 「タグ」の使用です。このメソッドのメリットは、LVM クラスターパッケージが必要でない点です。一方で、設定する際に必要な手順は他にもあり、管理者がアクティブでないクラスター内のノードから論理ボリュームを誤って削除することを防ぐことはできません。このメソッドを使用して HA-LVM を設定する手順は、「タグ付けによる HA-LVM フェイルオーバーの設定」 に記載されています。

F.1. CLVM を使用した HA-LVM フェイルオーバーの設定 (推奨)

(推奨される CLVM バリアントを使用して) HA-LVM フェイルオーバーを設定するには、以下の手順を実行します。
  1. ご使用のシステムが CLVM に対応するよう設定されていることを確認してください。以下が要件です。
    • CLVM 論理ボリュームがミラーされる場合は cmirror パッケージも含め、High Availability アドオン及び Resilient Storage アドオンがインストールされている。
    • /etc/lvm/lvm.conf ファイル内のグローバルセクションの locking_type パラメーターが「3」の値に設定されている。
    • clvmd デーモンを含め、High Availability アドオン及び Resilient Storage アドオンソフトウェアが実行している必要がある。CLVM ミラーリングの場合は、cmirrord サービスも起動している必要があります。
  2. 以下の例のとおり、標準 LVM 及びファイルシステムのコマンドを使用して論理ボリュームとファイルシステムを作成します。
    # pvcreate /dev/sd[cde]1
    
    # vgcreate -cy shared_vg /dev/sd[cde]1
    
    # lvcreate -L 10G -n ha_lv shared_vg
    
    # mkfs.ext4 /dev/shared_vg/ha_lv
    
    # lvchange -an shared_vg/ha_lv
    LVM 論理ボリュームの作成についての詳細は、『論理ボリュームマネージャの管理』 を参照してください。
  3. /etc/cluster/cluster.conf ファイルを編集して、新規作成された論理ボリュームを使用しているサービスの 1 つにリソースとして含めます。別の方法として、Conga 又は ccs コマンドを使用して、LVM 及びファイルシステムリソースをクラスター用に設定することも可能です。以下の例は、クラスターリソースとして CLVM 論理ボリュームを設定する /etc/cluster/cluster.conf ファイルのリソースマネージャーのセクションです。
    
    <rm>  
       <failoverdomains>
           <failoverdomain name="FD" ordered="1" restricted="0">
              <failoverdomainnode name="neo-01" priority="1"/>
              <failoverdomainnode name="neo-02" priority="2"/>
           </failoverdomain>
       </failoverdomains>
       <resources>
           <lvm name="lvm" vg_name="shared_vg" lv_name="ha-lv"/>
           <fs name="FS" device="/dev/shared_vg/ha-lv" force_fsck="0" force_unmount="1" fsid="64050" fstype="ext4" mountpoint="/mnt" options="" self_fence="0"/>
       </resources>
       <service autostart="1" domain="FD" name="serv" recovery="relocate">
           <lvm ref="lvm"/>
           <fs ref="FS"/>
       </service>
    </rm>