この付録では、Oracle自動ストレージ管理クラスタ・ファイルシステム(Oracle ACFS)の制限事項、高度な管理およびトラブルシューティングについて説明します。
この付録の内容は次のとおりです。
Oracle ACFSの詳細は、第5章「Oracle ACFSの概要」を参照してください。
この項では、Oracle ACFSの制限事項について説明します。
この項の内容は次のとおりです。
注意: Oracle ACFSでは、ディレクトリのハード・リンクをサポートしません。 |
Oracle ACFSは、ファイルシステム内の2^40 (1兆)ファイルをサポートします。40億以上のファイルがテストされました。32ビットのLinuxシステムの限度は2^26 (6,700万)です。Oracle ACFSでは、63のスナップショットをサポートします。これらのスナップショットは、読取り専用と読取り-書込みの組合せが可能です。Oracle ACFSは、32ビットシステム上の64個、および64ビットシステム上の256個のそれぞれマウントされたファイルシステムをサポートします。十分なメモリーがある場合はそれ以上のファイルシステムをマウントできます。
Oracle ACFSでは、データを書き込む際、パフォーマンスを高めるために大規模なユーザー・ファイルを事前に割り当てます。この記憶域は、ファイルが閉じられても戻されませんが、ファイルを削除すると戻されます。ノードでファイルシステムが初めてマウントされるときには、ローカル・メタデータ・ファイルも割り当てられます。その結果、領域不足エラーが原因でマウントが失敗する可能性があり、この記憶域の大部分は隣接している必要があります。この記憶域は、1ノード当たり約64から128MBです。
空き領域を探すときに、グローバル記憶域ビットマップ上での競合を減らすために、ローカル・ビットマップも使用できるようにしておきます。このディスク領域は、一部が実際にまだ割り当てられていない場合でも、UNIX df
コマンドなどのツールによってin
use
としてレポートされます。このローカルの記憶域プールは、ノードごとに128 MBと同じ大きさにでき、df
などのようなコマンドでもスペース割当てを可能にし、割り当てられているよりも少ない領域でレポートできます。
Oracle ACFSまたは別のファイルシステムがOracle ADVMボリュームを使用しているときにOracle ASMインスタンスに障害が発生したり強制終了となると、I/O障害が発生します。そのボリュームに再びアクセスするには、ボリュームを閉じてから、開きなおす必要があります。これには、ローカルOracle ASMインスタンスの障害発生時にマウントされていたすべてのファイルシステムをディスマウントします。インスタンスの再起動後に、対応するディスク・グループを有効なボリュームでマウントしてから、ファイルシステムを再マウントすることも必要です。「ボリュームおよびOracle ACFSファイルシステムの登録解除、ディスマウント、無効化」を参照してください。
ファイルシステムがOracle ADVMボリューム・ファイルに現在マウントされている場合は、それらのファイルシステムを先にディスマウントせずにOracle ASMインスタンスを終了するのに、SHUTDOWN
ABORT
コマンドを使用しないでください。使用すると、アプリケーションでI/Oエラーが発生し、Oracle ASMストレージの隔離前に、終了時点で書き込まれるOracle ACFSのユーザー・データおよびメタデータがストレージにフラッシュされない可能性があります。ファイルシステムをディスマウントする時間がない場合は、SHUTDOWN
ABORT
操作を発行する前に、2つのsync
(1)コマンドを実行してキャッシュ済のファイルシステム・データおよびメタデータを永続ストレージにフラッシュする必要があります。
メタデータの書込みが失敗した場合、その原因がOracle ASMインスタンスの障害であろうと記憶域の障害であろうと、Oracle ACFSはオペレーティング・システム環境を中断しません。かわりに、エラーを個々のファイルシステムにまで隔離し、ファイルシステムをオフライン・エラー状態にします。それ以降、そのファイルシステムのそのノードで成功する唯一の操作は、ディスマウント操作です。もう1つのノードでは(記憶域にメタデータを書き込めると仮定して)、未処理のメタデータ・トランザクションがリカバリされます。I/Oの異常が解決したら、オフラインにしたノードにファイルシステムを再びマウントできます。
ファイルシステムのディレクトリがプロセスの現在の作業ディレクトリであるなど、ファイルシステムを参照するプロセスが存在する場合、管理者がオフライン・エラー状態にあるファイルシステムをディスマウントすることはできません。この場合、ファイルシステムをディスマウントするには、ファイルシステムのファイルおよびディレクトリを参照するそのノード上のすべてのプロセスを識別して、それらを終了させる必要があります。Linuxのfuser
またはlsof
コマンド、あるいはWindowsのhandle
コマンドは、プロセスおよびオープン・ファイルに関する情報を表示します。
Oracle ACFSは、チェックサムまたは想定されるタイプの比較に基づいて、読取り操作から戻されたファイル・メタデータで不整合を検出すると、適切な処理を実行して影響を受けるファイルシステム・コンポーネントを隔離し、fsck
またはacfschkdsk
をできるだけ早く実行する必要があることを示す通知を生成します。ファイルシステムがマウントされるたびに、fsck
またはacfschkdsk
が実行されるまで、システム・イベント・ログ出力メッセージにより通知が生成されます。
Linux上のNFSを介してファイルシステムをエクスポートするときには、-fsid=num
エクスポート・オプションを使用します。このオプションは、NFSクライアントとの通信に使用されるファイル・ハンドルのファイルシステム識別子の部分を、ファイルシステムがマウントされているブロック・デバイスのメジャー番号およびマイナー番号から導出された数値のかわりに、強制的に指定した値にします。num
には32ビットの番号であれば使用できますが、エクスポートされたすべてのファイルシステムの間で一意であることが必要です。また、num
は、クラスタのメンバー間で一意であり、特定のファイルシステムのクラスタの各メンバーで同じnum
であることが必要です。これが必要なのは、Oracle ASM DVMブロック・デバイスのメジャー番号が、同じノードのすべての再起動で、またはクラスタ内の様々なノードで同じであると保証されないためです。
この項では、Oracle ADVMの制限事項について説明します。
Oracle ADVMボリュームのデフォルトの構成は、長さが64メガバイト(MB)のエクステント4列、ストライプ幅が128KBです。Oracle ADVMでは、データを128キロバイト(KB)ストライプ・チャンクとしてラウンド・ロビン法で各列に書き込み、64MBのエクステント4つから成る最初のストライプ・セットを2000ストライプ・チャンクで満たしてから、256MBより大きいボリュームの場合は、64MBのエクステント4つから成る2番目のストライプ・セットに移ります。Oracle ADVM動的ボリュームで列数を1に設定すると、Oracle ADVMボリュームのストライプ化は事実上終了します。
Linuxプラットフォームでは、Oracle ASM動的ボリューム・マネージャ(Oracle ADVM)ボリューム・デバイスは、Oracle ASMディスク・グループ内の基礎となるストレージの構成に関係なく、ブロック・デバイスとして作成されます。Oracle ADVMボリューム・ブロック・デバイスのRAWボリューム・デバイスへのマップにRAW
(8)
を使用しないでください。
Oracle ACFSドライバ・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。「Oracle ACFSとOracle Restart」を参照してください。
Oracle ACFSドライバ・リソース(ora.drivers.acfs
)は、グリッド・インフラストラクチャのインストール後に実行されるグリッド・インフラストラクチャrootスクリプトによって作成されます。Oracle ASMインスタンス・リソース(ora.asm
)は、ドライバ・リソースを弱い依存性として指定します。その結果、ora.asm
リソースの起動アクションが発行されると、必ずドライバ・リソースの起動アクションもコールされます。ドライバ・リソースの起動アクションには、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver(OKS)のドライバのオペレーティング・システムへのロードのサポートが含まれています。
LinuxおよびUNIXプラットフォームでのOracle Grid Infrastructureのインストール後に、rootスクリプトが実行されます。このスクリプトには、Oracle ACFS、OKS、Oracle ADVMドライバなどのOracle ACFSコンポーネントをオペレーティング・システム固有の場所にコピーするアクションが含まれます。
Oracle ASMインスタンスは、Oracle Clusterware Registry(OCR)と投票ファイルがOracle ASMディスク・グループ内で構成されるたびに、グリッド・インフラストラクチャのインストール・プロセスで起動されます。この場合、Oracle ACFSドライバは、最初はリソースの依存性に基づいてグリッド・インフラストラクチャのインストール中にロードされます。Oracle ASMインスタンスは、Oracle ASMコンフィギュレーション・アシスタントを使用しても起動でき、Oracle ACFSドライバはそのアクションに基づいてロードされます。定常状態モードでは、Oracle ACFSドライバは、Oracle Clusterwareの初期化中に自動的にロードされます。このとき、Oracle High Availability Services Daemon(OHASD)がOracle ASMインスタンス・リソースの起動アクションをコールし、その結果、リソースの依存関係からOracle ACFSドライバもロードされます。Oracle ACFSドライバ・リソースの起動アクションでは、Oracle ACFS、Oracle ADVMおよびOKSのドライバのネイティブ・オペレーティング・システムへのロードも試みられます。
Oracle ACFSドライバのポリシーでは、ドライバはOracle Clusterwareが停止するまでロードされたままになります。ora.drivers.acfs
リソースはOracle High Availability Services Daemon(OHASD)によって自動的に管理され、その状態はsrvctl
またはcrsctl
によって手動で操作できません。
Oracle ACFSレジストリ・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。「Oracle ACFSとOracle Restart」を参照してください。
Oracle ACFSドレジストリ・リソース(ora.registry.acfs
)は、グリッド・インフラストラクチャのインストール後に実行されるrootスクリプトによって作成されます。Oracle ACFSマウント・レジストリ・リソースの起動アクションは、グリッド・インフラストラクチャの初期化中に自動的にコールされ、クラスタ全体のOracle ACFSマウント・レジストリのローカル・ノードの状態をアクティブにします。この初期化が成功すると、このリソースの状態はonline
に設定され、成功しなければ、offline
に設定されます。Oracle ACFSレジストリ・リソースの状態は、マウント・レジストリのアクティブ状態によってのみ決まります。online
ステータスは、どのレジストリの内容にも、またOracle ACFSレジストリ内に存在する可能性のある個々の登録済ファイルの現在の状態にも関係ありません。
Oracle ACFSレジストリ・リソースの起動アクションは、マウント・レジストリのローカル・ノードの状態をアクティブにする他、クラスタ全体のOracle ACFSファイル・ネームスペースの設定に役立ちます。各ノードで、リソースの起動アクションは、クラスタ全体のマウント・レジストリの内容をスキャンし、ローカル・クラスタ・メンバーでのマウント用に指定されたファイルシステムをマウントします。登録済のファイルシステムをマウントする前に、リソースの起動アクションは、関連のファイルシステム・ストレージ・スタックがアクティブであることを確認し、ディスク・グループのマウント、ボリューム・ファイルの有効化、マウント操作の完了に必要な場合は、マウント・ポイントの作成を行います。
Oracle ACFSレジストリ・リソースのチェック・アクションは、クラスタ全体のOracle ACFSファイルシステム・ネームスペースの保持に役立ちます。各ノードで、チェック・アクションは、新規作成されたエントリ用のマウント・レジストリの内容をスキャンし、ローカル・ノードでのマウント用に登録されているOracle ACFSファイルシステムをマウントします。その結果、新しいOracle ACFSファイルシステムを作成して、クラスタの1つのノードに登録することができ、Oracle ACFSレジストリ・エントリで指定されたすべてのクラスタ・メンバーに自動的にマウントされます。
Oracle ACFSレジストリ・リソースのチェック・アクションは、ファイルシステムのリカバリにも役立ちます。オフラインの状態からファイルシステムをリカバリするには、そのファイルシステムのディスマウントと再マウントが必要です。Oracle ACFSレジストリ・リソースのチェック・アクションは、マウント・レジストリをスキャンして新規作成されたファイルシステムを探すと同時に、ローカル・ノードにオフライン・ファイルシステムがないかどうかもチェックし、見つかった場合は、各オフライン・ファイルシステムのディスマウントと再マウントを試みます。再マウントに成功すると、ファイルシステムのステータスは、オフラインから完全なアクティブに遷移します。
Oracle ACFSレジストリ・リソースの停止アクションは通常、グリッド・インフラストラクチャの操作の停止シーケンス中にコールされます。レジストリ・リソースをオフライン状態に遷移させるには、Oracle ADVMデバイスで構成されているこのクラスタ・メンバー上のすべてのファイルシステムをディスマウントする必要があります。マウント済のファイルシステムでは、そのOracle ADVMデバイス特殊ファイルおよび関連付けられた動的ボリューム・ファイルで使用中の参照を保持します。Oracle ASMインスタンスを正常に停止するには、その前にこの参照を閉じる必要があります。レジストリ・リソースの停止アクションは、オペレーティング・システムの内部マウント表をスキャンし、Oracle ADVMデバイス・ファイルで構成されているマウント済ファイルシステムがないか探します。見つかった場合、停止アクションはそのファイルシステムのディスマウントを試みます。ただし、そのファイルシステムのアプリケーションまたはユーザーからの参照が使用中の場合、これらの参照が閉じられるまで、ファイルシステムはディスマウントできません。ディスマウント操作が失敗すると、ファイルシステムで参照を使用しているプロセスのプロセスIDが表示され、記録されるため、管理者が使用中の参照を解決し、ファイルシステムをディスマウントできます。内部マウント表のエントリには、登録済および未登録のOracle ACFSファイルシステムの他、Oracle ADVMデバイス・ファイルにマウントされた他のローカル・ファイルシステムが含まれている可能性があります。
Oracle ACFSレジストリ・リソースのクリーン・アクションは、リソースの停止アクションがリソースをオフライン状態に遷移することに失敗した場合、暗黙的にコールされます。その場合、レジストリ・リソースのクリーン・アクションをコールして、リソースを事実上強制的にオフラインにできます。レジストリ・リソースのクリーン・アクションは、オペレーティング・システムの内部マウント表をスキャンし、Oracle ADVMデバイスにマウントされているファイルシステムがないか探します。見つかった場合、リソースのクリーン・アクションは、リソースの停止アクションの場合と同様に、ファイルシステムのディスマウント(umount
)を試みます。ただし、ファイルシステムのディスマウントの妨げとなる使用中の参照がある場合、リソースのクリーン・アクションは、参照を保持するプロセスのプロセスIDを表示して記録し、その参照プロセスを終了してから、ファイルシステムをディスマウントします。クリーン・アクションが完了すると、レジストリ・リソースはオフライン状態に設定され、グリッド・インフラストラクチャの停止シーケンス内のその他の参加者を停止できるようになります。
Oracle Clusterwareがクラスタ・ノードで起動されると、ノードに対するOracle ACFS起動操作では、クラスタ・マウント・レジストリを参照し、このノードに登録されているすべてのOracle ACFSファイルシステムのマウントを試みます。マウント・レジストリに各ファイルシステムを追加すると、新規に登録されたファイルシステムが、レジストリ・エントリで指定された各ノードに自動的にマウントされます。登録済のファイルシステムが自動的にマウントされ、その後ディスマウントされた場合、システムが再起動するか、Oracle Clusterwareが再起動するまで、自動的に再マウントされません。mount
コマンドまたはOracle Enterprise Managerを使用すると、手動で再マウントできます。
Oracle ACFSクラスタのマウント・レジストリ・アクション・ルーチンでは、各Oracle ACFSファイルシステムをその登録済マウント・ポイントへマウントしようとし、マウント・ポイントが存在しない場合には作成します。また、Oracle ASMディスク・グループをマウントし、Oracle ACFSマウント操作のサポートに必要なOracle ADVMボリュームを有効にします。ファイルシステムがオフライン・エラー状態になると、レジストリ・アクション・ルーチンは、ファイルシステムのリカバリを試み、ファイルシステムをディスマウントしてから再マウントすることにより、オンライン状態に戻します。オフライン・エラー状態の詳細は、「Oracle ACFSとOracle ASMの統合について」を参照してください。
Oracle ACFSの個別のファイルシステム・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。「Oracle ACFSとOracle Restart」を参照してください。
Oracle ASMコンフィギュレーション・アシスタント(ASMCA)により、Oracle ACFSの個別のファイルシステム・リソース(ora.
diskgroup
.
volume
.acfs
)の作成が容易になります。Database Configuration Assistant(DBCA)を使用したデータベースの作成中に、個別のファイルシステム・リソースは、関連付けられたディスク・グループの依存性リストに加えられるため、ディスク・グループを停止すると、依存するOracle ACFSファイルシステムも停止されるようになります。
Oracle ACFSの個別のファイルシステム・リソースは通常、アプリケーション・リソース依存性リストで使用するために作成されます。たとえば、Oracle ACFSファイルシステムがOracle Databaseホームとして使用するために構成されると、ファイルシステム用に作成されたリソースは、Oracle Databaseアプリケーションのリソース依存性リストに加えることができます。この依存性により、データベース・アプリケーションの起動アクションの結果、ファイルシステムとスタックは自動的にマウントされます。
依存性アクションからマウントされるOracle ACFSファイルシステムは、Oracle ACFSマウント・レジストリに含める必要はありません。
Oracle ACFSの個別のファイルシステム・リソースの起動アクションは、ファイルシステムのマウントです。この個別のファイルシステム・リソース・アクションには、関連付けられたファイルシステム・ストレージ・スタックがアクティブであることの確認とディスク・グループのマウント、ボリューム・ファイルの有効化、マウント操作の完了に必要な場合のマウント・ポイントの作成が含まれます。ファイルシステムのマウントに成功した場合、リソースの状態はonline
に、失敗した場合はoffline
に設定されます。
個別のファイルシステム・リソースのチェック・アクションでは、ファイルシステムがマウントされていることを検証します。マウントされていれば、リソースの状態をonline
ステータスに設定し、マウントされていなければ、offline
に設定します。
Oracle ACFSの個別のファイルシステム・リソースの停止アクションでは、ファイルシステムのディスマウントが試みられます。使用中の参照のためにファイルシステムをディスマウントできない場合、停止アクションは、参照を持つプロセスのプロセスIDを表示して記録します。
個別のファイルシステム・リソースを管理するためにsrvctl
start
およびstop
アクションを使用すると、それらの正しいリソースの状態が維持されます。
このリリースでは、Oracle RestartはrootベースのOracle ACFSリソースをサポートしません。その結果、次の操作は自動的に実行されません。
Oracle ACFSドライバのロード
Oracle ACFSマウント・レジストリにリストされたOracle ACFSファイルシステムのマウント
リソースベースのOracle ACFSデータベース・ホーム・ファイルシステムのマウント
Oracle Restart構成の場合、これらのアクションに関連するOracle ACFSリソースは作成されません。
Oracle Grid Infrastructure構成では、Oracle ACFSリソース管理が完全サポートされる一方、Oracle Restart構成では、Oracle ACFSリソースベースの管理アクションを代替操作(場合によっては手動)に置き換える必要があります。
Oracle ACFSでは、オペレーティング・システム固有のシステム・イベント・ログにI/O障害の情報を記録します。
コンソール・メッセージの書式は次のとおりです。
[Oracle ACFS]: I/O failure (error_code) with device device_name during a operation_name op_type. file_entry_num Starting offset: offset. Length of data transfer: io_length bytes. Impact: acfs_type Object: object_type Oper.Context: operation_context Snapshot?: yes_or_no AcfsObjectID: acfs_object_id . Internal ACFS Location: code_location.
コンソール・メッセージ構文のイタリック体の変数は、次のものに対応しています。
I/O障害
Oracle ACFSによって見つかったI/O障害に対するオペレーティング・システム固有のエラー・コード(16進法)これはハードウェアの問題を示す場合もあれば、他のなんらかの理由によるI/O開始の失敗を示す場合もあります。
デバイス
関連するデバイス(通常はADVMデバイス・ファイル)。しかし、場合によっては、デバイスのマイナー番号を示す文字列である可能性もあります。
操作名
関連する操作の種類。
user
data
、metadata
またはpaging
操作タイプ
関連する操作のタイプ。
synch
read
、synch
write
、asynch
read
またはasynch
write
ファイル・エントリ番号
関連するファイルシステム・オブジェクトのOracle ACFSファイル・エントリ番号(10進数)。acfsutil
info
fileid
ツールにより対応するファイル名を見つけます。
オフセット
I/Oのディスク・オフセット(10進数)。
I/Oの長さ
I/Oの長さ(バイト単位、10進数)。
影響を受けるファイルシステム・オブジェクト
関連するファイルシステム・オブジェクトがノードローカルか、クラスタ全体でアクセスされるリソースのいずれであるかの表示。次に例を示します。
Node
またはCluster
影響を受けるオブジェクトのタイプ
関連するファイルシステム・オブジェクトの種類を示す文字列(可能な場合)。次に例を示します。
Unknown
、User
Dir.
、User
Symlink
、User
File
、Sys.Dir
、Sys.File
またはMetaData
Sys.Dir.
表示可能なネームスペース内でOracle ACFSによって管理されるディレクトリ
sys.File
表示可能なネームスペース内でOracle ACFSによって管理されるファイル
MetaData
表示可能なネームスペース外でOracle ACFSに管理されるリソース
操作のコンテキスト
I/Oを発行しているコード・コンテキストを示すよりレベルの高いビュー。これはOracleサポート・サービスで使用されます。次に例を示します。
Unknown
、Read
、Write
、Grow
、Shrink
、Commit
またはRecovery
スナップショット
判断できる場合は、関連するデータがスナップショットのものであったかどうかの表示。次に例を示します。
Yes
、No
または?
ファイルシステムのオブジェクト・タイプ
ファイルシステム・オブジェクトのタイプの内部識別子。Oracleサポート・サービスで使用。
コードの場所
このメッセージを発行している場所のコードの内部識別子。Oracleサポート・サービスで使用。
次に、Linux環境での/var/log/messages
の例を示します。
[Oracle ACFS]: I/O failure (0xc0000001) with device /dev/sdb during a metadata synch write . Fenum Unknown. Starting offset: 67113984. Length of data transfer: 2560 bytes. Impact: Node Object: MetaData Oper.Context: Write Snapshot?: ? AcfsObjectID: 8 . Internal ACFS Location: 5 .