13.1 Oracle Cluster File System 2(OCFS2)の概要

Oracle Cluster File System 2は、Linux 2.6以降のカーネルと完全に統合された、汎用のジャーナルファイルシステムです。Oracle Cluster File System 2を利用すれば、アプリケーションバイナリファイル、データファイル、およびデータベースを、SAN中のデバイスに保管することができます。このファイルシステムには、クラスタ中のすべてのノードが同時に読み書きすることができます。また、分散ロックマネージャにより、アクセスの競合を回避することができます。Oracle Cluster File System 2は、最高32,000個までのサブディレクトリ、および数百万個のファイルをサポートしています。各ノード上ではO2CBクラスタサービス(ドライバ)が動作して、クラスタを管理しています。

13.1.1 特長と利点

Oracle Real Application Cluster(RAC)データベースとOracle Home(そのアプリケーションファイル)をサポートするため、2005年8月にOracle Cluster File System 2がSUSE Linux Enterprise Serverに追加されました。SUSE Linux Enterprise Server 10以降では、以下のストレージソリューションでOracle Cluster File System 2を使用することができます。

  • Oracle RACおよび他のデータベース

  • 一般アプリケーションと負荷

  • クラスタ中のXENイメージ

    サーバ間でXEN仮想マシンの素早く簡単な移植性を活用するために、XEN仮想マシンおよび仮想サーバを、クラスタサーバによりマウントされたOracle Cluster File System 2ボリュームに保管することができます。

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

また、Heartbeat 2と完全に統合されています。

Oracle Cluster File System 2は、高性能なパラレルクラスタファイルシステムで、以下の機能をサポートしています。

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

  • 標準のファイルシステムインタフェースを通じて、すべてのノードが並行してストレージに読み書きできるため、クラスタにまたがって稼働するアプリケーションの管理が容易になります。

  • ファイルアクセスは、分散ロックマネージャ(DLM:Distributed Lock Manager)により、管理、調整されます。

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

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

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

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

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

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

  • ocfs2consoleユーティリティを介したGTK GUIベースの管理機能

  • 共有ルートファイルシステムとしての運用

  • 最大16TBまでのボリュームで、最高4KBまでの複数ブロックサイズをサポート(各ボリュームで異なるブロックサイズを使用可能)

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

  • ノード固有のローカルファイルに対するCDSL(Context-dependent symbolic link)のサポート

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

13.1.2 Oracle Cluster File System 2クラスタサービス

Oracle Cluster File System 2クラスタサービスは、OCFS2サービス/ボリュームを管理するために必要な、一連のモジュールとメモリ内ファイルシステムです。これらのモジュールは、システムブート時にロード、マウントすることができます。方法については、OCFS2サービスの設定を参照してください。

表 13-1 Oracle Cluster File System 2クラスタサービススタック

サービス

説明

Node Manager (NM)

/etc/ocfs2/cluster.confファイル中のすべてのノードを追跡します

Heartbeat (HB)

ノードがクラスタに参加/退席した時に稼働/非稼働を通知する信号を送信します

TCP

ノード間のTCPプロトコルを使った通信を処理します

分散ロックマネージャ(DLM:Distributed Lock Manager)

すべてのロック、およびその所有者とステータスを追跡します

CONFIGFS

ユーザスペース設定ファイルシステム。詳細については、内部メモリファイルシステムを参照してください。

DLMFS

カーネルスペースDLMへのユーザスペースインタフェース。詳細については、内部メモリファイルシステムを参照してください。

13.1.3 ディスクハートビート

Oracle Cluster File System 2を利用するには、ネットワーク上のノードが稼働していなければなりません。O2CBクラスタサービスは、正常に稼働していることを確認するために、定期的にキープアライブパケットを送信します。ネットワーク遅延が発生すると、ノードがダウンしたと判断される可能性があるため、パケットの送信にはLANの代わりにノード間のプライベートな内部接続を使用しています。

OC2Bクラスタサービスは、ディスクハートビートを介してノードステータスをやり取りします。ハートビートシステムファイルは、クラスタ中のすべてのノードが利用できるSAN上に常駐しています。このファイル中のブロック割り当ては、各ノードのスロット割り当てに順番に対応しています。

各ノードは2秒間隔でファイルを読み込み、それをファイル中の割り当てられたブロックに書き込みます。ノードのタイムスタンプの変更により、そのノードが稼働していることが分かります。一定時間ハートビートファイルに書き込みがない場合、そのノードは停止しているとみなされます。この時間は、書き込み間隔数で表されるハートビートしきい値として設定します。単一のノードだけが動作している場合でも、他のノードが動的に追加される可能性があるため、O2CBクラスタサービスはこのチェックを行います。

ディスクHeartbeatのしきい値を変更するには、/etc/sysconfig/o2cbファイルのO2CB_HEARTBEAT_THRESHOLDパラメータを使用します。このしきい値の時間は以下のように算出されます。

(O2CB_HEARTBEAT_THRESHOLD value - 1) * 2 = threshold in seconds

たとえば、O2CB_HEARTBEAT_THRESHOLDにデフォルト値の7が設定されている場合、時間は12秒になります((7 - 1) * 2 = 12)。

13.1.4 内部メモリファイルシステム

Oracle Cluster File System 2は、通信用に2つのメモリ内ファイルシステムを使用しています。

表 13-2 Oracle Cluster File System 2が使用するメモリ内ファイルシステム

内部メモリファイルシステム

説明

マウントポイント

configfs

クラスタ中のノードリストをカーネル内ノードマネージャに、そしてハートビートで使われるリソースをカーネル内ハートビートスレッドに通知します。

/config

ocfs2_dlmfs

クラスタ内のリソースに対するロック/ロック解除ステータスを、ロックの所有者とステータスを追跡するカーネル内分散ロックマネージャに通知します。

/dlm

13.1.5 管理ユーティリティとコマンド

Oracle Cluster File System 2は、ノード固有のパラメータファイルをノード上に保存します。このクラスタ設定ファイル(/etc/ocfs2/cluster.conf)は、クラスタに割り当てられた各ノード上にあります。

ocfs2consoleユーティリティは、クラスタ中のOracle Cluster File System 2の環境設定を管理するための、GTK GUIベースのインタフェースです。クラスタ中の各メンバノードの/etc/ocfs2/cluster.confファイルの設定と保存には、このユーティリティを使用します。また、このユーティリティを使ってOCFS2ボリュームの、フォーマット、チューニング、マウント、およびアンマウントなどの作業を行うこともできます。

重要:ocfs2consoleユーティリティのファイルブラウザ列は、非常に遅く、クラスタ間で整合性がありません。ファイルを表示する場合は、代わりにls(1)コマンドを使用することをお勧めします。

他のOCFS2ユーティリティを以下の表に示します。これらのコマンドの指定形式については、マニュアルページを参照してください。

表 13-3 OCFS2ユーティリティ

OCFS2ユーティリティ

説明

debugfs.ocfs2

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

fsck.ocfs2

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

mkfs.ocfs2

デバイス上にOCFS2ファイルシステムを作成します。通常は、共有物理/論理ディスク上のパーティションに作成します。このツールを利用するには、O2CBクラスタサービスが稼働していなければなりません。

mounted.ocfs2

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

ocfs2cdsl

ノードに対して、特定のファイル名(ファイルまたはディレクトリ)のCDSLを作成します。CDSLファイル名は特定のノードに対する独自のイメージを持っていますが、一般名はOCFS2中に保管されます。

tune.ocfs2

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

O2CBサービスを管理するには、以下のコマンドを使用します。o2cbコマンドの詳細や指定形式については、該当するマニュアルページを参照してください。

表 13-4 O2CBのコマンド

コマンド

説明

/etc/init.d/o2cb status

O2CBサービスがロードされ、マウントされているかどうかをレポートします。

/etc/init.d/o2cb load

O2CBモジュールとメモリ内ファイルシステムをロードします。

/etc/init.d/o2cb online ocfs2

「ocfs2」の部分に指定した名前のクラスタをオンラインにします。

クラスタをオンラインにするには、クラスタ中の1つ以上のノードをアクティブにしていなければなりません。

/etc/init.d/o2cb offline ocfs2

「ocfs2」の部分に指定した名前のクラスタをオフラインにします。

/etc/init.d/o2cb unload

O2CBモジュールとメモリ内ファイルシステムをアンロードします。

/etc/init.d/o2cb start ocfs2

ブート時にロードするようにクラスタが設定されている場合、o2cbをロードして、「ocfs2」の部分に指定された名前を持つクラスタをオンラインにし、クラスタを起動します。

クラスタをオンラインにするには、クラスタ中の1つ以上のノードをアクティブにしていなければなりません。

/etc/init.d/o2cb stop ocfs2

ブート時にロードするようにクラスタが設定されている場合に、「ocfs2」の部分に指定された名前を持つクラスタをオフラインにして、O2CBモジュールとメモリ内ファイルシステムをアンロードします。

13.1.6 OCFS2のパッケージ

SUSE Linux Enterprise Server 10以降では、OCFS2カーネルモジュール(ocfs2)は自動的にインストールされます。OCFS2を使用するには、YaST(またはコマンドライン)を使ってocfs2-toolsocfs2consoleパッケージを、クラスタ中の各ノードにインストールします。

  1. root、または同等のユーザとしてログインし、YaSTコントロールセンタを起動します。

  2. [ソフトウェア] > [ソフトウェア管理]の順に選択します。

  3. [検索]フィールドに、以下の文字列を入力します。

    ocfs2 
    

    右側のパネルに、ocfs2-toolsocfs2consoleのソフトウェアパッケージが表示されます。これらのパッケージが選択されている場合、すでにこれらのパッケージはインストールされています。

  4. パッケージをインストールするには、該当するパッケージを選択した後[インストール]をクリックして、以降画面に表示される指示に従って作業を行います。