Global File System 2 (GFS2)は、Linuxコンピュータクラスタ用の共有ディスクファイルシステムです。GFS2により、すべてのノードが同じ共有ブロックストレージに直接同時にアクセスすることができます。GFS2には、非接続運用モードがなく、クライアント役割やサーバ役割もありません。GFS2クラスタのすべてのノードがピアとして機能します。GFS2は、クラスタノードを32台までサポートします。クラスタでGFS2を使用する場合は、ハードウェアが共有ストレージへのアクセスを許可し、ロックマネージャがストレージへのアクセスを制御する必要があります。
SUSEでは、パフォーマンスが主要な要件の1つである場合は、クラスタ環境でOCFS2 over GFS2を使用することを推奨しています。弊社のテストは、このような設定では、GFS2と比較してOCFS2の方がパフォーマンスに優れていることを示しています。
GFS2を使用するには、gfs2-utils
と、ご使用のカーネルに適合するgfs2-kmp-*
パッケージが、クラスタの各ノードにインストールされていることを確認してください。
gfs2-utils
パッケージには、次に示すGFS2ボリュームの管理ユーティリティがあります。構文については、各マニュアルページを参照してください。
GFS2ユーティリティ |
説明 |
---|---|
fsck.gfs2 |
ファイルシステムにエラーがないかをチェックし、必要に応じてエラーを修復します。 |
gfs2_jadd |
GFS2ファイルシステムにジャーナルを追加します。 |
gfs2_grow |
GFS2ファイルシステムを拡張します。 |
mkfs.gfs2 |
デバイス上にGFS2ファイルシステムを作成します。通常は、共有デバイスまたはパーティションになります。 |
tunegfs2 |
次のようなGFS2ファイルシステムパラメータを表示および操作できます( |
GFS2ボリュームを作成する前に、DLMおよびSTONITHリソースを設定する必要があります。
フェンシングデバイスを設定する必要があります。STONITHなしでは、設定内に配置されたメカニズム(external/sbd
など)は失敗します。
シェルを起動し、root
または同等のものとしてログインします。
手順11.3「SBDデバイスの初期化」で説明されるとおり、SBDパーティションを作成します。
crm
configure
を実行します。
external/sdb
をフェンシングデバイスとして設定し、/dev/sdb2
を共有ストレージ上のハートビートとフェンシング専用のパーティションにします。
crm(live)configure#
primitive
sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30 meta target-role="Started"
show
で変更内容をレビューします。
すべて正しければ、commit
で変更を送信し、exit
でcrmライブ設定を終了します。
DLMに対するリソースグループの設定の詳細については、手順17.1「DLMのベースグループの設定」を参照してください。
19.2項 「GFS2サービスとSTONITHリソースの設定」で説明されているように、DLMをクラスタリソースとして設定したら、システムがGFS2を使用できるように設定し、GFS2ボリュームを作成します。
一般に、アプリケーションファイルとデータファイルは、異なるGFS2ボリュームに保存することをお勧めします。アプリケーションボリュームとデータボリュームのマウント要件が異なる場合は、必ず、異なるボリュームに保存します。
作業を始める前に、GFS2ボリュームに使用するブロックデバイスを準備します。デバイスは空き領域のままにしてください。
次に、手順19.2「GFS2ボリュームの作成とフォーマット」で説明されているように、mkfs.gfs2
で、GFS2ボリュームを作成し、フォーマットします。そのコマンドの重要なパラメータは、表19.2「重要なGFS2パラメータ」に一覧されています。詳細情報とコマンド構文については、mkfs.gfs2
のマニュアルページを参照してください。
GFS2パラメータ |
説明と推奨設定 |
---|---|
ロ ック プロ トコル 名 ( |
使用するロッキングプロトコルの名前。使用可能なロッキングプロトコルはlock_dlm (共有ストレージ用)です。またはローカルファイルシステム(1ノードのみ)としてGFS2を使用している場合は、lock_nolockプロトコルを指定できます。このオプションを指定しない場合、lock_dlmプロトコルであるとみなされます。 |
ロックテーブル名( |
使用しているロックモジュールに適切はロックテーブルフィールド。clustername:fsnameです。clusternameは、クラスタ設定ファイル |
ジャーナル数( |
作成するgfs2_mkfs用のジャーナル数。ファイルシステムをマウントするマシンごとに少なくとも1つのジャーナルが必要です。このオプションを指定しない場合、1つのジャーナルが作成されます。 |
クラスタノードの1つだけで、次の手順を実行します。
端末ウィンドウを開いて、root
としてログインします。
クラスタがオンラインであることをコマンドcrm status
で確認します。
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
に関係します。
GFS2ボリュームは、手動でマウントするか、クラスタマネージャでマウントできます(手順19.4「クラスタマネージャによるGFS2ボリュームのマウント」を参照)。
端末ウィンドウを開いて、root
としてログインします。
クラスタがオンラインであることをコマンドcrm status
で確認します。
コマンドラインから、mount
コマンドを使ってボリュームをマウントします。
GFS2ファイルシステムをテスト目的で手動マウントした場合、そのファイルシステムは、いったんマウント解除してから、クラスタリソースで使用してください。
High AvailabilityソフトウェアでGFS2ボリュームをマウントするには、クラスタ内でOCFファイルシステムのリソースを設定します。次の手順では、crm
シェルを使用してクラスタリソースを設定します。リソースの設定には、Hawk2を使用することもできます。
シェルを起動し、root
または同等のものとしてログインします。
crm
configure
を実行します。
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" \ op start timeout="60" op stop timeout="60" \ meta target-role="Stopped"
手順17.1「DLMのベースグループの設定」で作成したdlm
プリミティブとgfs2-1
プリミティブから構成されるベースグループを作成します。グループをクローンします。
crm(live)configure#
group
g-storage dlm gfs2-1clone
cl-storage g-storage \ meta interleave="true"
ベースグループの内部コロケーションおよび順序付けによって、Pacemakerは、すでに実行しているdlm
リソースも持つノード上でgfs2-1
リソースのみ起動します。
show
で変更内容をレビューします。
すべて正しければ、commit
で変更を送信し、exit
でcrmライブ設定を終了します。