適用先 SUSE Linux Enterprise High Availability Extension 12

14 GFS2

Global File System 2 (GFS2)は、Linuxコンピュータクラスタ用の共有ディスクファイルシステムです。GFS2により、すべてのノードが同じ共有ブロックストレージに直接同時にアクセスすることができます。GFS2には、非接続運用モードがなく、クライアント役割やサーバ役割もありません。GFS2クラスタのすべてのノードがピアとして機能します。GFS2は、クラスタノードを32台までサポートします。クラスタでGFS2を使用する場合は、ハードウェアが共有ストレージへのアクセスを許可し、ロックマネージャがストレージへのアクセスを制御する必要があります。

SUSEでは、パフォーマンスが主要な要件の1つである場合は、クラスタ環境でOCFS2 over GFS2を使用することを推奨しています。弊社のテストは、このような設定では、GFS2と比較してOCFS2の方がパフォーマンスに優れていることを示しています。

14.1 GFS2パッケージおよび管理ユーティリティ

GFS2を使用するには、gfs2-utilsと、ご使用のカーネルに適合するgfs2-kmp-*パッケージが、クラスタの各ノードにインストールされていることを確認してください。

gfs2-utilsパッケージには、次に示すGFS2ボリュームの管理ユーティリティがあります。構文については、各マニュアルページを参照してください。

表 14.1 GFS2ユーティリティ

GFS2ユーティリティ

説明

fsck.gfs2

ファイルシステムにエラーがないかをチェックし、必要に応じてエラーを修復します。

gfs2_jadd

GFS2ファイルシステムにジャーナルを追加します。

gfs2_grow

GFS2ファイルシステムを拡張します。

mkfs.gfs2

デバイス上にGFS2ファイルシステムを作成します。通常は、共有デバイスまたはパーティションになります。

tunegfs2

次のようなGFS2ファイルシステムパラメータを表示および操作できます( UUIDlabellockproto および locktable)。

14.2 GFS2サービスとSTONITHリソースの設定

GFS2ボリュームを作成する前に、DLMおよびSTONITHリソースを設定する必要があります。GFS2はCorosyncからのクラスタメンバーシップサービスを使用し、それらのサービスはユーザスペースで実行されます。したがって、DLMは、クラスタ内の各ノードに存在するクローンリソースとして設定する必要があります。

手順 14.1 STONITHリソースの設定
注記
注記: 必要なSTONITHデバイス

フェンシングデバイスを設定する必要があります。STONITHなしでは、設定内に配置されたメカニズム(external/sbdなど)は失敗します。

  1. シェルを起動し、rootまたは同等のものとしてログインします。

  2. 17.1.3.1項 「SBDパーティションの作成」で説明されるとおり、SBDパーティションを作成します。

  3. crm configureを実行します。

  4. external/sdbをフェンシングデバイスとして設定し、/dev/sdb2を共有ストレージ上のハートビートとフェンシング専用のパーティションにします。

    crm(live)configure# primitive sbd_stonith stonith:external/sbd \
         meta target-role="Started"
  5. showで変更内容をレビューします。

  6. すべて正しければ、commitで変更を送信し、exitでcrmライブ設定を終了します。

手順 14.2 DLMリソースの設定

設定は複数のプリミティブおよび1つのベースクローンを含むベースグループで設定されます。ベースグループとベースクローンはどちらも、後でさまざまなシナリオで使用できます(例: GFS2およびcLVM)。必要に応じてそれぞれのプリミティブを持つベースグループを拡張する必要があるだけです。ベースグループは内部コロケーションおよび順序付けを持つため、個々のグループ、クローン、その依存性をいくつも指定する必要がなく、セットアップ全体を容易にします。

クラスタ内の1つのノードについて、次の手順を実行してください。

  1. シェルを起動し、rootまたは同等のものとしてログインします。

  2. 次のコマンドを入力して、DLMのプリミティブリソースを作成します。

    root # crm configure primitive dlm ocf:pacemaker:controld \
         op monitor interval="60" timeout="60"

    dlmクローンリソースが、分散ロックマネージャサービスを制御し、クラスタ内のすべてのノード上でこのサービスが開始するようにします。すべて正しければ、yと回答して、変更を送信します。

  3. showで変更内容をレビューします。

    root # crm show

14.3 GFS2ボリュームの作成

14.2項 「GFS2サービスとSTONITHリソースの設定」で説明されているように、DLMをクラスタリソースとして設定したら、システムがGFS2を使用できるように設定し、GFS2ボリュームを作成します。

注記
注記: アプリケーションファイルとデータファイル用のGFS2ボリューム

一般に、アプリケーションファイルとデータファイルは、異なるGFS2ボリュームに保存することをお勧めします。アプリケーションボリュームとデータボリュームのマウント要件が異なる場合は、必ず、異なるボリュームに保存します。

作業を始める前に、GFS2ボリュームに使用するブロックデバイスを準備します。デバイスは空き領域のままにしてください。

次に、手順14.3「GFS2ボリュームの作成とフォーマット」で説明されているように、mkfs.gfs2で、GFS2ボリュームを作成し、フォーマットします。そのコマンドの重要なパラメータは、表14.2「重要なGFS2パラメータ」に一覧されています。詳細情報とコマンド構文については、mkfs.gfs2のマニュアルページを参照してください。

表 14.2 重要なGFS2パラメータ

GFS2パラメータ

説明と推奨設定

ロックプロトコル名(-p)

使用するロッキングプロトコルの名前。使用可能なロッキングプロトコルはlock_dlm (共有ストレージ用)です。またはローカルファイルシステム(1ノードのみ)としてGFS2を使用している場合は、lock_nolockプロトコルを指定できます。このオプションを指定しない場合、lock_dlmプロトコルであるとみなされます。

ロックテーブル名(-t)

使用しているロックモジュールに適切はロックテーブルフィールド。clustername:fsnameです。clusternameは、クラスタ設定ファイル/etc/corosync/corosync.confのクラスタ名と一致している必要があります。このクラスタのメンバーだけが、このファイルシステムの使用を許可されます。fsnameは、このGFS2ファイルシステムと作成された他のファイルシステムを区別するために使用される固有のファイルシステム名です(1~16文字)。

ジャーナル数(-j)

作成するgfs2_mkfs用のジャーナル数。ファイルシステムをマウントするマシンごとに少なくとも1つのジャーナルが必要です。このオプションを指定しない場合、1つのジャーナルが作成されます。

手順 14.3 GFS2ボリュームの作成とフォーマット

クラスタノードの1つだけで、次の手順を実行します。

  1. 端末ウィンドウを開いて、rootとしてログインします。

  2. クラスタがオンラインであることをコマンドcrm statusで確認します。

  3. mkfs.gfs2ユーティリティを使用して、ボリュームを作成およびフォーマットします。このコマンドの構文については、mkfs.gfs2マニュアルページを参照してください。

    たとえば、最大32台のクラスタノードをサポートする新しいGFS2ファイルシステムを/dev/sdb1上に作成するには、次のコマンドを使用します。

    root # mkfs.gfs2 -t hacluster:mygfs2 -p lock_dlm -j 32 /dev/sdb1

    hacluster名は、ファイル/etc/corosync/corosync.conf (これはデフォルトです)のエントリcluster_nameに関係します。

14.4 GFS2ボリュームのマウント

GFS2ボリュームは、手動でマウントするか、クラスタマネージャでマウントできます(手順14.5「クラスタマネージャによるGFS2ボリュームのマウント」を参照)。

手順 14.4 GFS2ボリュームの手動によるマウント
  1. 端末ウィンドウを開いて、rootとしてログインします。

  2. クラスタがオンラインであることをコマンドcrm statusで確認します。

  3. コマンドラインから、mountコマンドを使ってボリュームをマウントします。

警告
警告: 手動マウントによるGFS2デバイス

GFS2ファイルシステムをテスト目的で手動マウントした場合、そのファイルシステムは、いったんマウント解除してから、クラスタリソースで使用してください。

手順 14.5 クラスタマネージャによるGFS2ボリュームのマウント

High AvailabilityソフトウェアでGFS2ボリュームをマウントするには、クラスタ内でocfファイルシステムのリソースを設定します。次の手順では、crmシェルを使用してクラスタリソースを設定します。リソースの設定には、Hawkを使用することもできます。

  1. シェルを起動し、rootまたは同等のものとしてログインします。

  2. crm configureを実行します。

  3. GFS2ファイルシステムをクラスタ内のすべてのノードにマウントするように、Pacemakerを設定します。

    crm(live)configure# primitive gfs2-1 ocf:heartbeat:Filesystem \
         params device="/dev/sdb1" directory="/mnt/shared" fstype="gfs2" \
         op monitor interval="20" timeout="40"
  4. 手順14.2「DLMリソースの設定」で作成したdlmプリミティブとgfs2-1プリミティブから構成されるベースグループを作成します。グループをクローンします。

    crm(live)configure# group base-group dlm  gfs2-1
         clone base-clone base-group \
         meta interleave="true"

    ベースグループの内部コロケーションおよび順序付けによって、Pacemakerは、すでに実行しているdlmリソースも持つノード上でgfs2-1リソースのみ起動します。

  5. showで変更内容をレビューします。

  6. すべて正しければ、commitで変更を送信し、exitでcrmライブ設定を終了します。

このページを印刷