適用先 SUSE Linux Enterprise High Availability Extension 12

13 OCFS2

OCFS 2 (Oracle Cluster File System 2)は、Linux 2.6以降のカーネルに完全に統合されている汎用ジャーナリングファイルシステムです。Oracle Cluster File System 2を利用すれば、アプリケーションバイナリファイル、データファイル、およびデータベースを、共有ストレージ中のデバイスに保管することができます。このファイルシステムには、クラスタ中のすべてのノードが同時に読み書きすることができます。ユーザスペース管理デーモンは、クローンリソースを介して管理され、HAスタック(特に、CorosyncおよびDLM (Distributed Lock Manager))との統合を実現します。

13.1 特長と利点

OCFS2は、たとえば、次のストレージソリューションに使用できます。

  • 一般のアプリケーションとワークロード。

  • クラスタ中のXENイメージ。Xen仮想マシンと仮想サーバは、クラスタサーバによってマウントされたOCFS2ボリュームに保存できます。これによって、サーバ間でXen仮想マシンを素早く容易に移植できます。

  • LAMP (Linux、Apache、MySQL、およびPHP | Perl | Python)スタック。

OCF2は、高パフォーマンスでシンメトリックなパラレルクラスタファイルシステムとして、次の機能をサポートします。

  • アプリケーションのファイルを、クラスタ内のすべてのノードで使用できます。ユーザは、クラスタ中のOracle Cluster File System 2ボリュームに1回インストールするだけで構いません。

  • すべてのノードが、標準ファイルシステムインタフェースを介して、同時並行的に、ストレージに直接読み書きできるので、クラスタ全体に渡わたって実行されるアプリケーションの管理が容易になります。

  • ファイルアクセスがDLMを介して調整されます。ほとんどの場合、DLMによる制御は適切に機能しますが、アプリケーションの設計によっては、アプリケーションとDLMがファイルアクセスの調整で競合すると、スケーラビリティが制限されることがあります。

  • すべてのバックエンドストレージで、ストレージのバックアップ機能を利用することができます。共有アプリケーションファイルのイメージを簡単に作成することができるため、災害発生時でも素早くデータを復元することができます。

Oracle Cluster File System 2には、次の機能も用意されています。

  • メタデータのキャッシュ処理。

  • メタデータのジャーナル処理。

  • ノード間にまたがるファイルデータの整合性。

  • 最大4KBのマルチブロックサイズ、最大1MBのクラスタサイズ、4PB(ペタバイト)の最大ボリュームサイズをサポートします。

  • 32台までのクラスタノードをサポート。

  • データベースのパフォーマンスを向上する非同期、直接I/Oのサポート。

13.2 OCFS2のパッケージと管理ユーティリティ

SUSE® Linux Enterprise Server 12 上のHigh Availability Extensionには、OCFS2カーネルモジュール(ocfs2)が自動的にインストールされます。OCFS2を使用するには、ocfs2-toolsと、ご使用のカーネルに適合するocfs2-kmp-*パッケージが、クラスタの各ノードにインストールされていることを確認してください。

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

表 13.1 OCFS2ユーティリティ

OCFS2ユーティリティ

説明

debugfs.ocfs2

デバッグの目的で、Oracle Cluster File System 2のファイルシステムの状態を調査します。

fsck.ocfs2

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

mkfs.ocfs2

デバイス上にOCFS2ファイルシステムを作成します。通常は、共有物理/論理ディスク上のパーティションに作成します。

mounted.ocfs2

クラスタシステム上のすべてのOCFS2ボリュームを検出、表示します。OCFS2デバイスをマウントしているシステム上のすべてのノードを検出、表示するか、またはすべてのOCFS2デバイスを表示します。

tunefs.ocfs2

ボリュームラベル、ノードスロット数、すべてのノードスロットのジャーナルサイズ、およびボリュームサイズなど、OCFS2ファイルのシステムパラメータを変更します。

13.3 OCFS2サービスとSTONITHリソースの設定

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

次の手順では、crmシェルを使用してクラスタリソースを設定します。13.6項 「HawkでのOCFS2リソースの設定」で説明されているように、リソースの設定にはHawkを使用することもできます。

注記
注記: cLVMおよびOCFS2両方のためのDLMリソース

cLVMおよびOCFS2は両方とも、クラスタ内のすべてのノード上で実行するDLMリソースを必要とするため、通常はクローンとして設定されます。OCFS2およびcLVMの両方を含むセットアップがある場合、OCFS2およびcLVMの両方に1つのDLMリソースを設定することで十分です。

手順 13.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ライブ設定を終了します。

手順 13.2 DLMリソースの設定

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

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

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

  2. crm configureを実行します。

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

    crm(live)configure# primitive dlm ocf:pacemaker:controld \
          op monitor interval="60" timeout="60"
  4. DLMリソースのベースグループを作成します。クローン化されたプリミティブが作成されるにつれ、このグループにそのプリミティブが追加されていきます。

    crm(live)configure# group base-group dlm
  5. ベースグループのクローンを作成して、すべてのノードで実行できるようにします。

    crm(live)configure#  clone base-clone base-group \
    	    	meta interleave=true target-role=Started
  6. showで変更内容をレビューします。

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

13.4 OCFS2ボリュームの作成

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

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

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

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

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

表 13.2 重要なOCFS2パラメータ

OCFS2パラメータ

説明と推奨設定

ボリュームラベル(-L)

異なるノードへのマウント時に、正しく識別できるように、一意のわかりやすいボリューム名を指定します。ラベルを変更するには、tunefs.ocfs2ユーティリティを使用します。

クラスタサイズ(-C)

クラスタサイズは、ファイルに割り当てられる、データ保管領域の最小単位です。使用できるオプションと推奨事項については、mkfs.ocfs2のマニュアルページを参照してください。

ノードスロット数(-N)

同時にボリュームをマウントできる最大ノード数を指定します。各ノードについて、OCFS2はジャーナルなどの個別のシステムファイルを作成します。ボリュームにアクセスするノードに、リトルエンディアン形式のノード(x86_64など)とビッグエンディアン形式のノード(s390xなど)が混在しても構いません。

ノード固有のファイルは、ローカルファイルとして参照されます。ローカルファイルには、ノードスロット番号が付加されます。たとえば、journal:0000は、スロット番号0に割り当てられたノードに属します。

各ボリュームを同時にマウントすると予期されるノード数に従って、各ボリュームの作成時に、そのボリュームの最大ノードスロット数を設定します。tunefs.ocfs2ユーティリティを使用して、必要に応じてノードスロットの数を増やします。ただし、この値は減らすことはできません。

-Nパラメータを指定しない場合、スロット数はファイルシステムのサイズに基づいて決定されます。

ブロックサイズ(-b)

ファイルシステムがアドレス可能な領域の最小単位を指定します。ブロックサイズは、ボリュームの作成時に指定します。使用できるオプションと推奨事項については、mkfs.ocfs2のマニュアルページを参照してください。

特定機能のオン/オフ(--fs-features)

カンマで区切った機能フラグリストを指定できます。mkfs.ocfs2は、そのリストに従って、それらの機能セットを含むファイルシステムを作成しようとします。機能をオンにするには、その機能をリストに入れます。機能をオフにするには、その名前の前にnoを付けます。

使用できるすべてのフラグの概要については、mkfs.ocfs2のマニュアルページを参照してください。

事前定義機能(--fs-feature-level)

事前定義されたファイルシステム機能セットから選択できます。使用できるオプションについては、mkfs.ocfs2のマニュアルページを参照してください。

mkfs.ocfs2によるボリュームの作成およびフォーマット時に特定の機能を指定しない場合は、次の機能がデフォルトで有効になります。backup-supersparseinline-dataunwrittenmetaeccindexed-dirs、およびxattr

手順 13.3 OCFS2ボリュームを作成し、フォーマットする

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

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

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

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

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

    root #  mkfs.ocfs2 -N 32 /dev/sdb1

13.5 OCFS2ボリュームのマウント

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

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

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

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

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

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

手順 13.5 クラスタリソースマネージャでOCFS2ボリュームをマウントする

High AvailabilityソフトウェアでOCFS2ボリュームをマウントするには、クラスタ内でocfs2ファイルシステムのリソースを設定します。次の手順では、crmシェルを使用してクラスタリソースを設定します。13.6項 「HawkでのOCFS2リソースの設定」で説明されているように、リソースの設定にはHawkを使用することもできます。

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

  2. crm configureを実行します。

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

    crm(live)configure# primitive ocfs2-1 ocf:heartbeat:Filesystem \
          params device="/dev/sdb1" directory="/mnt/shared" fstype="ocfs2" options="acl" \
          op monitor interval="20" timeout="40"
  4. ocfs2-1およびdlmプリミティブを手順13.2「DLMリソースの設定」で作成したbase-groupに追加します。

    crm(live)configure# group base-group dlm ocfs2-1
         

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

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

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

13.6 HawkでのOCFS2リソースの設定

crmシェルを使用して、DLM、およびOCFS2のファイルシステムリソースを手動で設定する代わりに、HawkのセットアップウィザードのOCFS2テンプレートを使用することもできます。

重要
重要: 手動設定とHawkとの相違点

セットアップウィザードのOCFS2テンプレートには、STONITHリソースの設定が含まれません。ウィザードを使用する場合でも、手順13.1「STONITHリソースの設定」で説明されているように、共有ストレージ上でSBDパーティションを作成し、STONITHリソースを設定する必要があります。

また、HawkセットアップウィザードのOCFS2テンプレートを使用すると、手順13.2「DLMリソースの設定」および手順13.5「クラスタリソースマネージャでOCFS2ボリュームをマウントする」で説明されている手動設定とは若干異なるリソース設定になります。

手順 13.6 HawkのセットアップウィザードでOCFS2リソースを設定する
  1. 5.1.1項 「Hawkの起動とログイン」で説明したように、Webブラウザを起動してクラスタにログインします。

  2. 左のナビゲーションバーで、セットアップウィザードを選択します。

  3. OCFS2 Filesystemテンプレートを選択し、次へをクリックします。

    Hawkは、次のパラメータの値を提案します。

    • リソースID

    • ブロックデバイス

    • ファイルシステムのタイプ

    オプションについての情報が必要な場合には、オプションをクリックすると、Hawkは簡単なヘルプテキストを表示します。

  4. ファイルシステムのブロックデバイスへのパスを入力し、必要に応じて追加のマウントオプションを入力することで情報を完了します。

    Hawkセットアップウィザード - OCFS2テンプレート
    図 13.1 Hawkセットアップウィザード - OCFS2テンプレート
  5. 次へをクリックします。

    ウィザードに、CIBに適用される設定スニペットが表示されます。

  6. 適用するには、次へをクリックします。

    画面上のメッセージが、アクションに成功したかどうかを示します。すべてが希望どおりの場合は、ウィザードを閉じます。

13.7 OCFS2ファイルシステム上でクォータを使用する

OCFS2ファイルシステム上でクォータを使用するには、適切なクォータ機能またはオプションを使用して、ファイルシステムを作成し、マウントします。オプションはursquota (個々のユーザのためのクォータ)またはgrpquota (グループのためのクォータ)です。これらの機能は後ほど、tunefs.ocfs2を使用して、マウントされていないファイルシステムで有効にすることもできます。

ファイルシステムで適切なクォータ機能が有効にされている場合、ファイルシステムは、そのメタデータで、各ユーザ(または)グループが使用しているスペースの量とファイルの数を追跡します。OCFS2はクォータ情報をファイルシステムの内部メタデータとして扱うので、quotacheck(8)プログラムを実行する必要はありません。すべての機能はfsck.ocf2、およびファイルシステムドライバ自体に組み込まれています。

各ユーザまたはグループに課せられている制限の強制を有効にするには、他のファイルシステムでの場合と同様に、quotaon(8)を実行します。

パフォーマンス上の理由で、各クラスタノードはクォータの計算をローカルに行い、この情報を、10秒ごとに共通の中央ストレージに同期するようになっています。この間隔は、tunefs.ocfs2と、usrquota-sync-intervalおよびgrpquota-sync-intervalオプションで調整することができます。クォータ情報は必ずしも常に正確というわけではないので、複数のクラスタノードを並列に運用している場合、ユーザまたはグループがクォータ制限をいくらか超えることもあります。

13.8 詳細情報

OCFS2の詳細については、次のリンクを参照してください。

http://oss.oracle.com/projects/ocfs2/

OracleサイトにあるOCFS2プロジェクトのホームページ

http://oss.oracle.com/projects/ocfs2/documentation

プロジェクトのドキュメントホームページ。

このページを印刷