17 Oracle ACFSの高度なトピックの理解
Oracle ACFSの高度なトピックには、さらに複雑な管理の問題に関する説明が含まれています。
この付録では、Oracle Automatic Storage Management Cluster File System (Oracle ACFS)の制限事項、高度な管理およびトラブルシューティングなどの高度なトピックについて説明します。
関連項目:
Oracle ACFSおよびOracle ADVMの詳細は、My Oracle Support(https://support.oracle.com
)の記事を参照してください。
この付録の内容は次のとおりです。
Oracle ACFSの概要は、「Oracle ACFSおよびOracle ADVMの概要」を参照してください。
Oracle ACFSの制限事項
Oracle ACFSディスク領域使用量
Oracle ACFSは、32ビットシステム上の64個、および64ビットシステム上の256個のそれぞれマウントされたファイルシステムをサポートします。十分なメモリーがある場合はそれ以上のファイルシステムをマウントできます。
Oracle ACFSは、ファイルシステム内の2^40 (1兆)ファイルをサポートします。40億以上のファイルがテストされました。ファイルシステム内のディレクトリ数に絶対的な制限はありません。制限はハードウェア・リソースに基づきます。
Oracle ACFSでは、データを書き込む際、パフォーマンスを高めるために大規模なユーザー・ファイルを事前に割り当てます。この記憶域は、ファイルが閉じられても戻されませんが、ファイルを削除すると戻されます。ノードでファイルシステムが初めてマウントされるときには、Oracle ACFSによりローカル・メタデータ・ファイルも割り当てられます。その結果、領域不足エラーが原因でマウントが失敗する可能性があり、この記憶域の大部分は隣接している必要があります。この記憶域は、1ノード当たり約64から128MBです。
空き領域を探すときに、グローバル記憶域ビットマップ上での競合を減らすために、Oracle ACFSはローカル・ビットマップも使用できるようにしておきます。このディスク領域は、一部の領域が実際にまだ割り当てられていない場合でも、Linux df
コマンドなどのツールによってin
use
としてレポートされます。このローカルの記憶域プールは、ノードごとに128 MBと同じ大きさにでき、df
などのようなコマンドでもスペース割当てを可能にし、割り当てられているよりも少ない領域でレポートできます。
Oracle ACFSファイル・システムに割り当てることができる最大サイズを表17-1に示します。Oracle ACFSおよびOracle ASMに対するストレージ制限は、ディスク・グループ互換性属性によって決まります。
表17-1 Oracle ACFSファイル・システムまたはOracle ADVMボリュームの最大ファイル・サイズ
冗長性 | COMPATIBLE.ASM < 12.2.0.1のディスク・グループ | COMPATIBLE.ASM = 12.2.0.1のディスク・グループ | COMPATIBLE.ASM = 18.1.0.0のディスク・グループ |
---|---|---|---|
外部 |
128 TB |
128 TB |
1 PB |
標準 |
64 TB |
128 TB |
1 PB |
高 |
42.6 TB |
128 TB |
1 PB |
関連項目:
-
ファイル・サイズの制限とディスク・グループの互換性設定の詳細は、「ディスク・グループの互換性を設定する際の考慮事項」
-
Oracle ASMアイルおよびディスク・グループのストレージ制限の詳細は、「Oracle ASMストレージの制限」
-
Oracle ASMファイル・サイズの制限の詳細は、表4-6
Oracle ACFSのエラー処理
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はオペレーティング・システム環境を中断しません。かわりに、Oracle ACFSはエラーを特定のファイルシステムにまで隔離し、ファイルシステムをオフライン・エラー状態にします。それ以降、そのファイルシステムのそのノードで成功する唯一の操作は、ディスマウント操作です。もう1つのノードでは(記憶域にメタデータを書き込めると仮定して)、未処理のメタデータ・トランザクションがリカバリされます。I/Oの異常が解決したら、オフラインにしたノードにファイルシステムを再びマウントできます。
ファイルシステムのディレクトリがプロセスの現在の作業ディレクトリであるなど、ファイルシステムを参照するプロセスが存在する場合、管理者がオフライン・エラー状態にあるファイルシステムをディスマウントすることはできません。この場合、ファイルシステムをディスマウントするには、ファイルシステムのファイルおよびディレクトリを参照するそのノード上のすべてのプロセスを識別して、それらを終了させる必要があります。Linuxのfuser
またはlsof
コマンド、あるいはWindowsのhandle
コマンドは、プロセスおよびオープン・ファイルに関する情報を表示します。
Oracle ACFSは、チェックサムまたは想定されるタイプの比較に基づいて、読取り操作から戻されたファイル・メタデータで不整合を検出すると、適切な処理を実行して影響を受けるファイルシステム・コンポーネントを隔離し、fsck
またはacfschkdsk
をできるだけ早く実行する必要があることを示す通知を生成します。ファイルシステムがマウントされるたびに、fsck
またはacfschkdsk
が実行されるまで、システム・イベント・ログ出力メッセージにより通知が生成されます。
Oracle ACFSとNFS
Linux上のNFSを介してファイルシステムをエクスポートするときには、-fsid=num
エクスポート・オプションを使用します。このオプションは、NFSクライアントとの通信に使用されるファイル・ハンドルのファイルシステム識別子の部分を、ファイルシステムがマウントされているブロック・デバイスのメジャー番号およびマイナー番号から導出された数値のかわりに、強制的に指定した値にします。num
には32ビットの番号であれば使用できますが、エクスポートされたすべてのファイルシステムの間で一意であることが必要です。また、num
は、クラスタのメンバー間で一意であり、特定のファイルシステムのクラスタの各メンバーで同じnum
であることが必要です。これが必要なのは、Oracle ASM DVMブロック・デバイスのメジャー番号が、同じノードのすべての再起動で、またはクラスタ内の様々なノードで、同じであると保証されないためです。
Gridホーム・クラスタ用の高可用性NFS (HANFS)を使用している場合、HANFSでは、前の段落で記述されている状況を自動的に処理します。HANFSの詳細は、「Oracle Grid Infrastructure用の高可用性Network File Storage」を参照してください。
Oracle ADVMの制限事項
この項では、Oracle ADVMの制限事項について説明します。
Oracle ADVMボリュームのデフォルトの構成は、8列、ストライプ幅が1MBです。ディスク・グループの割当て単位(AU)が8メガバイト(MB)以下の場合、ボリュームのエクステント・サイズは8MBになります。AUサイズが8MBより大きい場合、Oracle ADVMのボリュームのエクステント・サイズはディスク・グループのAUサイズと同じになります。
Oracle ADVMでは、データを1メガバイト(MB)ストライプ・チャンクとしてラウンド・ロビン法で各列に書き込み、8MBのエクステント8つから成る最初のストライプ・セットを64ストライプ・チャンクで満たしてから、64MBより大きいボリュームの場合は、8MBのエクステント8つから成る2番目のストライプ・セットに移ります。Oracle ADVM動的ボリュームで列数を1に設定すると、Oracle ADVMボリュームのストライプ化は事実上終了します。
Linuxプラットフォームでは、Oracle ASM動的ボリューム・マネージャ(Oracle ADVM)ボリューム・デバイスは、Oracle ASMディスク・グループ内の基礎となるストレージの構成に関係なく、ブロック・デバイスとして作成されます。Oracle ADVMボリューム・ブロック・デバイスのRAWボリューム・デバイスへのマップにRAW
(8)
を使用しないでください。
Oracle ADVMボリュームを管理するASMCMDコマンドの詳細は、「ASMCMDによるOracle ADVMの管理」を参照してください。
Oracle ACFSループバックのサポート
Oracle ACFSでは、Linuxオペレーティング・システムでループバック機能がサポートされているため、Oracle ACFSファイルにデバイスとしてアクセスできます。
Oracle ACFSループバック・デバイスは、Oracle ACFSファイルにブロック・デバイスとしてアクセスできる、オペレーティング・システムの疑似デバイスです。この機能は、Oracle ACFSファイルシステムで作成され、Oracle ACFSループバック・デバイスによって提供されるOVMのイメージ、テンプレートおよび仮想ディスク(vdisk)をサポートするOracle Virtual Machines (OVM)とともに使用できます。
Oracle ACFSループバック機能により、NFS経由のパフォーマンスが向上します。ファイルは、疎ファイルでも非疎ファイルでもかまいません。
一般的なループバック・サポートに加えて、Oracle ACFSでは、疎イメージに対するループバック直接I/O (DIO)もサポートされています。
Oracle ACFSドライバ・リソース管理
Oracle ACFS、Oracle ADVMおよびOKSドライバは、Oracle Restart構成を除いて、Oracle Grid Infrastructureスタックの起動時にロードされます。システムが再起動されるまでドライバはロードされたままですが、その時点で、Oracle Grid Infrastructureスタックを再起動すると、ドライバは再びロードされます。
Oracle ACFS、Oracle ADVMおよびOKSドライバを管理するコマンドの詳細は、「Oracle ACFSドライバのコマンド」を参照してください。
Oracle ACFSレジストリ・リソース管理
Oracle ACFSレジストリ・リソースは、Oracle Grid Infrastructureクラスタ構成でのみサポートされます。Oracle Restart構成ではサポートされません。「Oracle ACFSとOracle Restart」を参照してください。
Oracle ASM 12cリリース1 (12.1)の場合、Oracle ACFSレジストリでは、SRVCTLファイルシステム・インタフェースを介して使用可能な、標準的で単一のファイルシステム・リソースを使用します。詳細は、「Oracle ACFSファイルシステム・リソース管理」を参照してください。SRVCTLを使用すると、アプリケーションを、登録済のファイルシステムに依存するようにできます(srvctl
filesystem
を使用して、登録済のファイルシステムを管理するなど)。デフォルトでは、acfsutil
registry
は、AUTO_START
属性がalways
に設定され、常にマウントするように設定されたファイルシステムのみを表示します。
Oracle ACFSレジストリは、ファイルシステムを登録および削除するroot権限が必要ですが、user
オプションを使用すると、他のユーザーに、ファイルシステムを起動および停止(マウントおよびアンマウント)する権限が付与されます。
Oracle ACFSファイルシステム・リソース管理
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 ACFSファイル・システムが構成されている場合、ファイル・システム用に作成されたリソースは、Oracle Databaseアプリケーションのリソース依存性リストに含まれます。この依存性により、データベース・アプリケーションの起動アクションの結果、ファイルシステムとスタックは自動的にマウントされます。
Oracle ACFSファイルシステム・リソースの起動アクションは、ファイルシステムのマウントです。このOracle ACFSファイルシステム・リソース・アクションには、関連付けられたファイルシステム・ストレージ・スタックがアクティブであることの確認とディスク・グループのマウント、ボリューム・ファイルの有効化、マウント操作の完了に必要な場合のマウント・ポイントの作成が含まれます。ファイルシステムのマウントに成功した場合、リソースの状態はonline
に、失敗した場合はoffline
に設定されます。
Oracle ACFSファイルシステム・リソースのチェック・アクションでは、ファイルシステムがマウントされていることを検証します。マウントされていれば、リソースの状態をonline
ステータスに設定し、マウントされていなければ、offline
に設定します。
Oracle ACFSファイルシステム・リソースの停止アクションでは、ファイルシステムのディスマウントが試みられます。使用中の参照のためにファイルシステムをディスマウントできない場合、停止アクションは、参照を持つプロセスのプロセスIDを表示して記録します。
Oracle ACFSファイルシステム・リソースを管理するためにsrvctl
start
およびstop
アクションを使用すると、それらの正しいリソースの状態が維持されます。
Oracle ACFSとOracle Restart
このリリースでは、Oracle RestartはrootベースのOracle ACFSリソースをサポートしません。その結果、次の操作は自動的に実行されません。
-
Oracle ACFSドライバのロード
Linuxでは、システム起動時とシステム停止時に、ドライバが自動的にロードおよびアンロードされます。システムが実行中、またはシステムが他のオペレーティング・システム(OS)バージョンで実行中にアクションが必要な場合は、
acfsload
コマンドを使用して、ドライバを手動でロードまたはアンロードできます。詳細は、「acfsload」を参照してください。 -
Oracle ACFSマウント・レジストリにリストされたOracle ACFSファイルシステムのマウント
Oracle ACFSマウント・レジストリは、Oracle Restartでサポートされていません。ただし、有効なOracle ASMデバイスの
/etc/fstab
ファイル内のLinuxのエントリでは、関連付けられたボリュームが有効になっており、これらのエントリはシステム起動時に自動的にマウントされ、システム停止時にアンマウントされます。ファイル・システムがマウントされた後は高可用性(HA)リカバリが適用されないことに注意してください。この機能は1回のみのアクションです。有効な
fstab
エントリの形式は次のとおりです。device mount_point acfs noauto 0 0
次に例を示します。
/dev/asm/dev1-123 /mntpoint acfs noauto 0 0
前述の例の最後の3つのフィールドは、Linuxがデバイスを自動的にマウントしようとすること、およびデバイス上で他のシステム・ツールを実行しようとすることを防止ます。このアクションは、システム起動時にOracle ASMインスタンスが使用できない場合のエラーを防止します。ファイル・システム・マウントのための追加の標準
fstab
構文オプションを追加できます。他のOSバージョンで、またはシステムの起動後にマウントまたはアンマウント操作が必要な場合は、
mount
コマンドを使用して、Oracle ACFSファイル・システムを手動でマウントできます。詳細は、「コマンドライン・ツールによるOracle ACFSの管理」を参照してください。 -
リソースベースのOracle ACFSデータベース・ホーム・ファイルシステムのマウント
Oracle Restart構成の場合、これらのアクションに関連するOracle ACFSリソースは作成されません。Oracle Grid Infrastructure構成では、Oracle ACFSリソース管理が完全サポートされる一方、Oracle Restart構成では、Oracle ACFSリソースベースの管理アクションを代替操作(場合によっては手動)に置き換える必要があります。Oracle Restart構成にrootベースのリソースを登録する、
srvctl
などのコマンドを使用しようとすると、適切なエラーが表示されます。
Oracle ACFSドライバのコマンド
この項では、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバを管理するためにインストール時に使用されるOracle ACFSドライバのコマンドについて説明します。これらのコマンドは、Oracle Grid Infrastructureホームの/bin
ディレクトリにあります。
acfsload
目的
acfsload
は、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバをロードまたはアンロードします。
構文
acfsload { start | stop } [ -s ]
acfsload
—h
はヘルプ・テキストを表示して終了します。
表17-2に、acfsload
コマンドで使用可能なオプションを示します。
表17-2 acfsloadコマンドのオプション
オプション | 説明 |
---|---|
|
Oracle ACFS、Oracle ADVMおよびOKSドライバをロードします。 |
|
Oracle ACFS、Oracle ADVMおよびOKSドライバをアンロードします。 |
|
サイレント・モードで動作します。 |
説明
acfsload
を使用して、Oracle ACFS、Oracle ADVMおよびOKSドライバを手動でロードまたはアンロードできます。
stop
オプションでドライバをアンロードする前に、Oracle ACFSファイルシステムをディスマウントし、Oracle ASMを停止する必要があります。Oracle ACFSファイルシステムのディスマウントの詳細は、「ボリュームおよびOracle ACFSファイルシステムの登録解除、ディスマウント、無効化」を参照してください。
acfsload
を実行するには、root
または管理者権限が必要です。
例
次に、すべてのドライバを停止(アンロード)するacfsload
コマンドの使用例を示します。
# acfsload stop
acfsdriverstate
目的
acfsdriverstate
は、Oracle ACFS、Oracle ADVMおよびOracle Kernel Services Driver (OKS)ドライバの現在の状態に関する情報を提供します。
構文
acfsdriverstate [-orahome ORACLE_HOME ]
{ installed | loaded | version [-v] | supported [-v]} [-s]
acfsdriverstate
—h
はヘルプ・テキストを表示して終了します。
表17-3に、acfsdriverstate
コマンドで使用可能なオプションを示します。
表17-3 acfsdriverstateコマンドのオプション
オプション | 説明 |
---|---|
|
ユーザーが |
|
Oracle ACFSがシステムにインストールされているかどうかを決定します。 |
|
Oracle ADVM、Oracle ACFSおよびOKSドライバがメモリーにロードされているかどうかを決定します。 |
|
現在インストールされているOracle ACFSシステム・ソフトウェアのバージョンをレポートします。 |
|
システムがOracle ACFSでサポートされているカーネルであるかどうかをレポートします。 |
|
コマンドの実行時、サイレント・モードを指定します。 |
|
詳細は、冗長モードを指定してください。 |
説明
acfsdriverstate
を使用して、Oracle ACFS、Oracle ADVMおよびOKSドライバの現在の状態に関する詳細情報を表示できます。
例
次に、acfsdriverstate
コマンドの使用例を示します。
$ acfsdriverstate version ACFS-9325: Driver OS kernel version = 3.8.13-13.el6uek.x86_64. ACFS-9326: Driver build number = 171126. ACFS-9212: Driver build version = 18.1.0.0 ().. ACFS-9547: Driver available build number = 171126. ACFS-9548: Driver available build version = 18.1.0.0 ()..
Oracle ACFSプラグインの汎用アプリケーション・プログラミング・インタフェース
Oracle ACFSプラグイン操作は、共通で、オペレーティング・システム(OS)に依存しないファイル・プラグイン(Cライブラリ)のアプリケーション・プログラミング・インタフェース(API)によってサポートされます。
この項の内容は次のとおりです。
Oracle ACFSプラグインの詳細は、「Oracle ACFSプラグイン」を参照してください。
Oracle ACFSの事前定義済のメトリック・タイプ
Oracle ACFSでは、事前定義済メトリック・タイプのACFSMETRIC1_T
およびACFSMETRIC2_T
が用意されています。
ACFSMETRIC1_T
メトリック・セットは、ストレージ仮想化モデル用に定義されます。メトリックは、選択したタグ付けファイルのセットまたはファイルシステム内のすべてのファイルのいずれかのサマリー・レコードとして維持されます。Oracle ACFSファイル・メトリックには、読取り数、書込み数、平均読取りサイズ、平均書込みサイズ、最小および最大読取りサイズ、最小および最大書込みサイズ、読取りキャッシュ(VMページ・キャッシュ)のヒットおよびミスがあります。
例:
typedef struct _ACFS_METRIC1 { ub2 acfs_version; ub2 acfs_type; ub4 acfs_seqno; ub8 acfs_nreads; ub8 acfs_nwrites; ub8 acfs_rcachehits; ub4 acfs_avgrsize; ub4 acfs_avgwsize; ub4 acfs_minrsize; ub4 acfs_maxrsize; ub4 acfs_minwsize; ub4 acfs_maxwsize; ub4 acfs_rbytes_per_sec; ub4 acfs_wbytes_per_sec; ub8 acfs_timestamp; ub8 acfs_elapsed_secs; } ACFS_METRIC1;
ACFSMETRIC2_T
は、fileID
、開始オフセット、サイズおよび各書込みの順序番号が含まれるOracle ACFS書込み説明レコードのリストです。順序番号により、プラグイン・ドライバによって保持されたとおりにOracle ACFS書込みレコード順は維持されます。順序番号は、アプリケーションでAPIから戻された複数のメッセージ・バッファを順序付ける手段となります。アプリケーションでメッセージ・バッファをAPIを通じて十分な速度で空にできないために削除された書込みレコードを検出することもできます。
書込みレコードは、複数のインメモリー配列に格納されます。レコードの各配列は、バッファ・サイズが現在1 Mに設定されているAPIを使用してフェッチできます。フェッチされたioctl
バッファの先頭には、格納されているレコードの番号など、配列を表すstruct
があります。カーネル・バッファでは、バッファが十分な速度で読み込まれていないためにバッファが満杯である場合、最も古い書込みレコードが削除されます。
例:
typedef struct _ACFS_METRIC2 { ub2 acfs_version; ub2 acfs_type; ub4 acfs_num_recs; ub8 acfs_timestamp; ACFS_METRIC2_REC acfs_recs[1]; } ACFS_METRIC2; typedef struct _ACFS_FILE_ID { ub8 acfs_fenum; ub4 acfs_genum; ub4 acfs_reserved1; } typedef struct _ACFS_METRIC2_REC { ACFS_FILE_ID acfs_file_id; ub8 acfs_start_offset; ub8 acfs_size; ub8 acfs_seq_num; } ACFS_METRIC2_rec;
Oracle ACFSプラグインAPI
目的
Oracle ACFSプラグイン・アプリケーション・プログラミング・インタフェース(API)は、アプリケーション・プラグイン・モジュールのローカル・プラグイン対応のOracle ACFSドライバに対してメッセージを送受信します。
構文
sb8 acfsplugin_metrics(ub4 metric_type, ub1 *metrics, ub4 metric_buf_len, oratext *mountp );
sb8 acfsfileid_lookup(ACFS_FILEID file_id, oratext *full_path, oratext *mountp );
説明
acfsplugin_metrics
APIは、Oracle ACFSドライバからメトリックを受信するために、Oracle ACFSアプリケーション・プラグイン・モジュールによって使用されます。acfsutil
plugin
enable
コマンドを使用して、プラグイン通信のためにまずOracle ACFSドライバを有効にする必要があります。選択したアプリケーション・プラグイン・メトリック・タイプ・モデルは、Oracle ACFSのプラグイン有効化コマンドで定義されたプラグイン構成と一致する必要があります。acfsutil
plugin
enable
コマンドの詳細は、「acfsutil plugin enable」を参照してください。アプリケーションには、「Oracle ACFSの事前定義済のメトリック・タイプ」で説明しているメトリック構造を格納するのに十分なバッファのサイズが提供される必要があります。
指定されたバッファがNULL
で、metric_buf_len
=
0
の場合、戻り値は、現在収集されたすべてのメトリックを保持するために必要なサイズになります。アプリケーションは、まずOracle ACFSに問い合せて、必要なバッファの大きさを参照してから、Oracle ACFSに戻すのに必要なサイズのバッファを割り当てることができます。
参照するプラグインが有効なOracle ACFSファイルシステムを特定するには、マウント・パスをAPIに指定する必要があります。
成功すると、負ではない値が戻されます。収集するメトリックがない状態で成功した場合は0
、使用可能なメトリックがあることを示す場合は1
、間隔の間に収集された新しいメトリックがないことを示す場合は2
が戻されます。エラーの場合、負の値が戻され、Linux環境の場合はerrno
が設定され、WindowsではSetLastError
がコールされます。
メトリック・タイプ#2を使用すると、戻されたメトリックには、fenumとgenumのペアが含まれるACFS_FILE_ID
があります。fenumとgenumのペアからファイル・パスに変換するために、アプリケーションでacfsfileid_lookup
を使用できます。アプリケーションでは、パスを保持するために長さがACFS_FILEID_MAX_PATH_LEN
のバッファを指定する必要があります。1つのファイルに対して複数のハード・リンクがある場合、戻されるパスは最初のパスです。これは、acfsutil info id
の使用時と同じ動作です。
プラグインが有効なOracle ACFSファイルシステム・ドライバに対してメッセージを送受信するには、システム管理者またはOracle ASM管理者の権限が必要です。
アプリケーションの書込み
プラグインAPIを使用するには、APIファンクションおよび構造を定義するCヘッダー・ファイルacfslib.h
をアプリケーションに含める必要があります。
#include <acfslib.h>
アプリケーションの実行可能ファイルを作成する場合、アプリケーションは、acfs12
ライブラリにリンクされている必要があります。定義する必要がある環境変数の詳細は、プラットフォーム固有のドキュメントを参照してください。次に例を示します。
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:$ {LD_LIBRARY_PATH}
リンクを行う場合、-lacfs12
フラグを追加します。
例
例17-1では、コマンドは、プラグイン・サービス用に/humanresources
にマウントされたOracle ACFSファイルシステムを有効にします。
例17-1 ストレージの可視性のためのアプリケーション・プラグイン: ポーリング・モデル
$ /sbin/acfsutil plugin enable -m acfsmetric1 -t HRDATA /humanresources
このコマンドの場合、アプリケーション・プラグインは、HRDATA
でタグ付けされたファイルに関連付けられたサマリー・メトリックの、Oracle ACFSプラグインが有効なドライバをポーリングします。アプリケーション・コードは次のようになります。
#include <acfslib.h> ... /* allocate message buffers */ ACFS_METRIC1 *metrics = malloc (sizeof(ACFS_METRIC1)); /* poll for metric1 data */ while (condition) { /* read next summary message from ACFS driver */ if ((rc = acfsplugin_metrics(ACFS_METRIC_TYPE1,(ub1*)metrics,sizeof(*metrics), mountp)) < 0) { perror("….Receive failure … "); break; } /* print message data */ printf ("reads %8llu ", metrics->acfs_nreads); printf("writes %8llu ", metrics->acfs_nwrites); printf("avg read size %8u ", metrics->acfs_avgrsize); printf("avg write size %8u ", metrics->acfs_avgwsize); printf("min read size %8u ", metrics->acfs_minrsize); printf("max read size %8u ", metrics->acfs_maxrsize); ... sleep (timebeforenextpoll); }
例17-2では、コマンドは、プラグイン・サービス用に/humanresources
にマウントされたOracle ACFSファイルシステムを有効にします。
例17-2 ファイル・コンテンツのためのアプリケーション・プラグイン: ポスト・モデル
$ /sbin/acfsutil plugin enable -m acfsmetric1 -t HRDATA -i 5m /humanresources
このコマンドの場合、5分ごとに、Oracle ACFSプラグインが有効なドライバは、HRDATA
でタグ付けされたファイルに関連付けられたファイル・コンテンツ・メトリックをポストします。アプリケーション・コードでは、メトリックがポストされるまで、acfsplugin_metrics()
へのコールはブロックされます。アプリケーション・コードは次のようになります。
#include <acfslib.h> ... ACFS_METRIC1 *metrics = malloc (sizeof(ACFS_METRIC1)); /* Wait for metric Data */ while (condition) { /* Wait for next file content posting from ACFS driver */ rc = ACFS_PLUGIN_MORE_AVAIL; /* A return code of 1 indicates that more metrics are available * in the current set of metrics. */ while( rc == ACFS_PLUGIN_MORE_AVAIL) { /* This call blocks until metrics are available. */ rc = acfsplugin_metrics(ACFS_METRIC_TYPE1,(ub1*)metrics,sizeof(*metrics), mountp); if (rc < 0) { perror("….Receive failure … "); break; } else if (rc == ACFS_PLUGIN_NO_NEW_METRICS) { printf("No new metrics available."); break; } if (last_seqno != metrics->acfs_seqno-1 ) { printf("Warning: Unable to keep up with metrics collection."); printf("Missed %d sets of posted metrics.", (metrics->acfs_seqno-1)-last_seqno); } /* print message data */ printf ("reads %8llu ", metrics->acfs_nreads); printf("writes %8llu ", metrics->acfs_nwrites); printf("avg read size %8u ", metrics->acfs_avgrsize); printf("avg write size %8u ", metrics->acfs_avgwsize); printf("min read size %8u ", metrics->acfs_minrsize); printf("max read size %8u ", metrics->acfs_maxrsize); ... last_seqno = metrics->acfs_seqno; } } free(metrics);
例17-3 FenumとGenumのペアからファイル・パスを解決するためのアプリケーション
次の例では、アプリケーションでOracle ACFSメトリック・タイプ2レコードのfenumとgenumのペアからファイル・パスを解決する方法を示します。
#include <acfslib.h> . . . ACFS_FILE_ID file_id; char path[ACFS_FILEID_MAX_PATH_LEN]; #ifdef WINDOWS file_id.acfs_fenum = atoi(argv[1]); file_id.acfs_genum = atoi(argv[2]); #else file_id.acfs_fenum = strtoull(argv[1], 0, 0); file_id.acfs_genum = strtoul(argv[2], 0, 0); #endif mount_point = argv[3]; sts = acfsfileid_lookup(file_id, path, ACFS_FILEID_MAX_PATH_LEN, mount_point, 0); if (sts < 0) { . . . } printf("%s\n", path)
Oracle ACFSタグ付けの汎用アプリケーション・プログラミング・インタフェース
Oracle ACFSタグ付け操作は、共通で、オペレーティング・システム(OS)に依存しないファイル・タグ(Cライブラリ)のアプリケーション・プログラミング・インタフェース(API)によってサポートされます。
Oracle ACFSタグ付けのAPIデモンストレーション・ユーティリティが提供されます。デモでは、サポートされたプラットフォームごとに、makefileを使用してユーティリティを作成する手順が示されます。
Solarisでは、Oracle ACFSタグ付けのAPIは、シンボリック・リンク・ファイルでタグ名を設定できますが、バックアップおよびリストア・ユーティリティは、シンボリック・リンク・ファイルで明示的に設定されるタグ名を保存しません。また、シンボリック・リンク・ファイルは、移動、コピー、tarの使用またはpaxの使用が行われると、明示的に設定されたタグ名が失われます。
次のファイルがあります。
-
$ORACLE_HOME/usm/public/acfslib.h
-
$ORACLE_HOME/usm/demo/acfstagsdemo.c
-
$ORACLE_HOME/usm/demo/Makefile
デモ・ユーティリティを作成するためのLinux、SolarisまたはAIXのmakefile。
-
$ORACLE_HOME/usm/demo/MAKEFILE
デモ・ユーティリティを作成するためのWindowsのデモ・ユーティリティMAKEFILE (
nmake
ユーティリティによって使用)
この項の内容は次のとおりです。
Oracle ACFSタグ付けのエラー値
次に、失敗した場合のLinux、SolarisまたはAIXのerrno
の値を示します。
-
EINVAL
- タグ名の構文が無効であるか、長すぎます。 -
ENODATA
- このファイルまたはディレクトリに対するタグ名が存在しません。 -
ERANGE
- 値のバッファは、戻り値を保持するには小さすぎます。 -
EACCES
- パスのパス接頭辞のディレクトリに対する検索権限が拒否されました。または、ファイル上でタグ名を読み取る権限がユーザーにありません。 -
ENAMETOOLONG
- ファイル名が長すぎます。 -
ENOENT
- パスのコンポーネントが存在しません。
次に、失敗した場合のWindowsのGetLastError()
が戻す値を示します。
-
ERROR_INVALID_PARAMETER
- このファイルまたはディレクトリに対するタグ名が存在しないか、タグ名の構文に誤りがあります。 -
ERROR_INSUFFICIENT_BUFFER
- 値のバッファは、戻り値を保持するには小さすぎます。 -
ERROR_ACCESS_DENIED
- パスのパス接頭辞のディレクトリに対する検索権限が拒否されました。または、ファイル上でタグ名を読み取る権限がユーザーにありません。 -
ERROR_INVALID_NAME
- ファイル名またはパス名が、長すぎるか不正です。 -
ERROR_FILE_NOT_FOUND
- 指定されたファイルが見つかりません。
acfsgettag
目的
Oracle ACFSファイルのタグ名に関連付けられた値を取得します。
構文
sb8 acfsgettag(const oratext *path, const oratext *tagname, oratext *value, size_t size, ub4 flags);
表17-4に、acfsgettag
コマンドで使用可能なオプションを示します。
表17-4 acfsgettagコマンドのオプション
オプション | 説明 |
---|---|
|
ファイルまたはディレクトリのパス名へのポインタを指定します。 |
|
通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。 |
|
Oracle ACFSタグ値を取得するためのメモリー・バッファを指定します。 |
|
戻されたOracle ACFSタグ値を保持するメモリー・バッファのバイト・サイズを指定します。 |
|
将来の使用のために予約されています。0に設定する必要があります。 |
説明
acfsgettag
ライブラリ・コールは、Oracle ACFSタグ名の値文字列を取得します。戻り値は、ゼロ以外のバイトの長さの出力で、成功した場合はvalue
文字列、失敗した場合はACFS_TAG_FAIL
です。ACFS_TAG_FAIL
が戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、「Oracle ACFSタグ付けのエラー値」を参照してください。
Oracle ACFSタグ名には、固定値文字列の0
(長さが1バイトの数字ゼロの文字)が現在使用されているため、valueは、Oracle ACFSタグ名のすべてのエントリで同じです。value
をNULL、size
を0
に設定してacfsgettag
をコールすることによって、value
バッファのサイズを決定できます。ライブラリ・コールは、タグ名の値文字列を保持するのに必要なバイト・サイズを戻します。タグ名がファイルで設定されていない場合、acfsgettag
は、ENODATA
エラーを戻します。
例
例17-4に、acfsgettag
ファンクション・コールの使用例を示します。
例17-4 ファイルのタグ値の取得
sb8 rc; size_t size; oratext value[2]; const oratext *path = "/mnt/dir1/dir2/file2"; const oratext *tagname = "patch_set_11_1"; size = 1; (byte) memset((void *)value, 0, 2*sizeof(oratext)); rc = acfsgettag (path, tagname, value, size, 0); If (rc == ACFS_TAG_FAIL) /* check errno or GetLastError() to process error returns /*
acfslisttags
目的
Oracle ACFSファイルに割り当てられたタグ名をリストします。詳細は、「acfsutil tag info」を参照してください。
構文
sb8 acfslisttags(const oratext *path, oratext *list, size_t size, ub4 flags);
表17-4に、acfslisttags
コマンドで使用可能なオプションを示します。
表17-5 acfslisttagsコマンドのオプション
オプション | 説明 |
---|---|
|
ファイルまたはディレクトリのパス名へのポインタを指定します。 |
|
Oracle ACFSタグ名のリストを含むメモリー・バッファへのポインタを指定します。 |
|
戻されたOracle ACFSタグ名リストを保持するメモリー・バッファのサイズ(バイト)を指定します。 |
|
将来の使用のために予約されています。0に設定する必要があります。 |
説明
acfslisttags
ライブラリ・コールは、Oracle ACFSファイルに割り当てられたすべてのタグ名を取得します。acfslisttags
は、list
メモリー・バッファにタグ名のリストを戻します。リスト内の各タグ名は、NULLで終了します。ファイルにタグ名がない場合、リフトは空になります。メモリー・バッファは、Oracle ACFSファイルに割り当てられたすべてのタグ名を保持するのに十分な大きさにする必要があります。
アプリケーションは、バッファを割り当て、Oracle ACFSファイルに割り当てられたすべてのタグ名を保持するのに十分なリスト・サイズの大きさを指定する必要があります。acfslisttags
を、バッファ・サイズをゼロ値、リスト・バッファをNULLで最初にコールすることによって、アプリケーションは、必要なリスト・バッファ・サイズを必要に応じて取得できます。アプリケーションは、ゼロ以外の正のリスト・サイズの戻り値をチェックして、リスト・バッファを割り当て、acfslisttags
をコールして、実際のタグ名リストを取得します。
成功すると、戻り値は、タグ名リストの正のバイト・サイズとなり、ファイルにタグ名がない場合は0
になります。失敗した場合、戻り値はACFS_TAG_FAIL
です。ACFS_TAG_FAIL
が戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、「Oracle ACFSタグ付けのエラー値」を参照してください。
例
例17-5に、acfslisttags
ファンクション・コールの使用例を示します。
例17-5 ファイルのタグのリスト
sb8 listsize; sb8 listsize2; const oratext *path = "/mnt/dir1/dir2/file2"; oratext *list; /* Determine size of buffer to store list */ listsize = acfslisttags (path, NULL, 0, 0); if (listsize == ACFS_TAG_FAIL) /* retrieve the error code and return */ if (listsize) { list = malloc(listsize) /* Retrieve list of tag names */ listsize2 = acfslisttags (path, list, listsize, 0); if (listsize2 == ACFS_TAG_FAIL) /* check errno or GetLastError() to process error returns */ if (listsize2 > 0) /* file has a list of tag names to process */ else /* file has no tag names. */ } else /* file has no tag names. */
acfsremovetag
目的
Oracle ACFSファイルのタグ名を削除します。
構文
sb8 acfsremovetag(const oratext *path, const oratext *tagname, ub4 flags);
表17-6に、acfsremovetag
コマンドで使用可能なオプションを示します。
表17-6 acfsremovetagコマンドのオプション
オプション | 説明 |
---|---|
|
ファイルまたはディレクトリのパス名へのポインタを指定します。 |
|
通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。 |
|
将来の使用のために予約されています。 |
説明
acfsremovetag
ライブラリ・コールは、Oracle ACFSファイルのタグ名を削除します。戻り値は、ACFS_TAG_SUCCESS
またはACFS_TAG_FAIL
です。ACFS_TAG_FAIL
が戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、「Oracle ACFSタグ付けのエラー値」を参照してください。
例
例17-6に、acfsremovetag
ファンクション・コールの使用例を示します。
例17-6 ファイルのタグの削除
sb8 rc; const oratext *path= "/mnt/dir1/dir2/file2"; const oratext *tagname = "patch_set_11_1"; rc = acfsremovetag (path, tagname, 0); If (rc == ACFS_TAG_FAIL) /* check errno or GetLastError() to process error returns */
acfssettag
目的
Oracle ACFSファイルのタグ名を設定します。詳細は、「acfsutil tag set」を参照してください。
構文
sb8 acfssettag(const oratext *path, const oratext *tagname, oratext *value, size_t size, ub4 flags);
表17-7に、acfssettag
コマンドで使用可能なオプションを示します。
表17-7 acfssettagコマンドのオプション
オプション | 説明 |
---|---|
|
ファイルまたはディレクトリのパス名へのポインタを指定します。 |
|
通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。 |
|
Oracle ACFSタグ値を設定するためのメモリー・バッファを指定します。 |
|
Oracle ACFSタグ値のバイト・サイズを指定します。 |
|
将来の使用のために予約されています。0に設定する必要があります。 |
説明
acfssettag
ライブラリ・コールは、Oracle ACFSファイルのタグ名を設定します。戻り値は、ACFS_TAG_SUCCESS
またはACFS_TAG_FAIL
です。ACFS_TAG_FAIL
が戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、「Oracle ACFSタグ付けのエラー値」を参照してください。
Oracle ACFSタグ名には、固定値文字列の0
(長さが1バイトの数字ゼロの文字)が現在使用されているため、value
は、Oracle ACFSタグ名のすべてのエントリで同じです。
例
例17-7に、acfssettag
ファンクション・コールの使用例を示します。
例17-7 ファイルのタグの設定
sb8 rc; size_t size; const oratext *value ; const oratext *path= "/mnt/dir1/dir2/file2"; const oratext *tagname = "patch_set_11_1"; value = "0"; /* zero */ size = 1; (byte) rc = acfssettag (path, tagname, (oratext *)value, size, 0); If (rc == ACFS_TAG_FAIL) /* check errno and GetLastError() to process error returns */
Oracle ACFS診断コマンド
このトピックでは、診断に使用するOracle ACFSコマンドライン・ユーティリティの概要を示します。
Oracle ACFSでは、診断に使用する様々なacfsutil
コマンドライン・ユーティリティを提供します。
注意:
診断コマンドは、Oracleサポートが分析のために診断データを要求した場合にのみ実行します。
次の表に、Oracle ACFSユーティリティと簡単な説明を示します。
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
表17-8 Oracle ACFS診断コマンドの概要
コマンド | 説明 |
---|---|
Oracle ACFSファイルシステムをデバッグします。 |
|
ブログ・ファイルにテキストを書込みます。 |
|
Oracle ACFSの内部状態情報を収集します。 |
|
メモリー診断ログ・ファイルおよびメッセージ・デバッグ設定を取得します。 |
|
Oracle ACFSファイルシステムから別の出力ファイルにメタデータをコピーします。 |
|
Oracle ACFSの永続ロギング構成設定を管理します。 |
|
Oracle ACFSの調整可能パラメータを変更または表示します。 |
|
Oracle ADVMパラメータを変更または表示します。 |
acfsdbg
目的
Oracle ACFSファイルシステムをデバッグします。
構文および説明
acfsdbg [-r] [-l] [-x] volume_device
acfsdbg -h
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsdbg
コマンドで使用可能なオプションを示します。
表17-9 acfsdbgコマンドのオプション
オプション | 説明 |
---|---|
|
使用方法のメッセージを出力して終了します。メッセージには、 |
|
読取り専用モードで動作します。ファイルシステム上のデータは変更されません。また、すべての書込みコマンドを無効にします。デバイスがどこかにマウントされている場合、データはファイルシステム・マウントによってキャッシュされているものもあるため、 |
|
カーネル・ログ・ファイルを処理します。デフォルトでは、ログ・ファイルを処理しません。 |
|
|
|
ボリュームのデバイス名を指定します。 |
acfsdbg
を実行するには、管理者またはOracle ASM管理者グループのメンバーであることが必要です。
サブコマンド
表17-10に、acfsdbg
のサブコマンドを示します。
表17-10 acfsdbgのサブコマンド
オプション | 説明 | 構文 |
---|---|---|
|
単純な演算式を計算します。 有効な演算子: +、-、*、/、%、&、|、^、~、<<、>> 新しい式は、空白で始めます。 0-1は、マイナス1を表します。 |
|
|
ヘッダーでチェックサムを生成して置換します。 ヘッダー・オフセットは、 新しいヘッダー・オフセットは、空白で始めます。 このコマンドは、読取り専用モードでは無効です。 |
|
|
デバイスへのオープン・ハンドルを閉じます。 |
|
|
コマンドラインのテキストをstdoutにエコーします。 |
|
|
指定されたファイル・エントリ表(FETA)エントリを表示します。 |
|
|
ヘルプ・メッセージを表示します。 |
|
|
ディスク・オフセットでの構造を表示します。 |
|
|
デバイスへのハンドルを開きます。デフォルトは、コマンドラインに入力されたボリューム・デバイス名です。 |
|
|
コマンドのコンテキストにプライマリ・ファイルシステムを設定します。 |
|
|
プロンプトに指定された文字列を設定します。 |
|
|
|
|
|
オフセットから値を読み取ります。 読取りのデフォルト・サイズは、8バイトです。 読取りのデフォルト件数は、1です。 |
|
|
コマンドのコンテキストに指定されたスナップショットを設定します。 |
|
|
16進数、8進数または10進数の値をディスク・オフセットに書き込みます。値のサイズまたは前ゼロ付きの16進数値の桁数に基づいて書込みバイト数を見積ります。 ディスク・オフセットは、 数値は、 このコマンドは、読取り専用モードでは無効です。 |
|
例
例17-8に、acfsdbg
サブコマンドの使用を示します。
例17-8 acfsdbgコマンドの使用方法
$ /sbin/acfsdbg /dev/asm/voume1-123 acfsdbg: version = 11.2.0.3.0 Oracle ASM Cluster File System (ACFS) On-Disk Structure Version: 39.0 The ACFS volume was created at Mon Mar 2 14:57:45 2011 acfsdbg> acfsbdg> calculate 60*1024 61,440 61440 61440 0xf000 0170000 1111:0000:0000:0000 acfsdbg> prompt "acfsdbg test>" acfsdbg test> echo "offset 64*1024" | acfsdbg /dev/asm/volume1-123
acfsutil blog
目的
ブログ・ファイルにテキストを書込みます。
構文および説明
acfsutil [-h] blog acfsutil blog {-t text | -u} mount_point
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsutil
blog
コマンドで使用可能なオプションを示します。
表17-11 acfsutil blogコマンドのオプション
オプション | 説明 |
---|---|
|
指定されたマウント・ポイントでブログ・ファイルにテキストを書込みます。 |
|
|
|
マウント・ポイントを指定します。 |
acfsutil
blog
コマンドを使用すると、ブログ・ファイルにテキストを書き込むことができます。
.
例
次の例では、acfsutil
blog
コマンドの実行方法を示します。—h
オプションを指定してacfsutil
blog
を実行すると、ヘルプが表示されます。
例17-9 acfsutil blogの使用方法
$ /sbin/acfsutil -h $ /sbin/acfsutil -t "this is a blog test" blog my_mount_point $ /sbin/acfsutil -u blog my_mount_point
acfsutil dumpstate
目的
Oracleサポートによる診断のためにOracle ACFSの内部状態情報を収集します。
構文および説明
acfsutil [-h] dumpstate acfsutil dumpstate {acfs_path | [-d] [-z] [acfs_path]}
acfsutil
-h
dumpstate
は、ヘルプ・テキストを表示して終了します。
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsutil
dumpstate
コマンドで使用可能なオプションを示します。
表17-12 acfsutil dumpstateコマンドのオプション
オプション | 説明 |
---|---|
|
Oracle ACFSファイル・システムへのディレクトリ・パスを指定します。 |
|
現在のディレクトリ内の |
|
現在のすべての統計をクリアします。 |
acfsutil
dumpstate
コマンドは、指定されたファイル・システムについてOracle ACFSの内部状態情報を収集します。状態情報は、ロギング・ディレクトリのバイナリ・インシデント・ファイルに書き込まれます。バイナリ・ログ・インシデント・ファイルは、指定したパスでマウントされたファイル・システムに固有です。acfs.dumpstats
統計ファイルには、Oracle ACFSカーネル・モジュール全体の統計が含まれています。
注意:
acfsutil
dumpstate
コマンドは、Oracleサポートが分析のために診断データおよびデバッグ・データを要求した場合にのみ実行します。
例
次に、acfsutil
dumpstate
コマンドの使用例を示します。
例17-10 acfsutil dumpstateコマンドの使用方法
次のコマンド実行は、指定したファイル・システムのバイナリ・インシデント・ファイルを作成します。
$ /sbin/acfsutil dumpstate /acfsmounts/acfs1/
次のコマンド実行は、ファイル・システム統計をダンプし、指定したファイル・システムのバイナリ・インシデント・ファイルを作成します。
$ /sbin/acfsutil dumpstate -d /acfsmounts/acfs1/
次のコマンド実行は、すべてのファイル・システムの統計をクリアします。
$ /sbin/acfsutil dumpstate -z
次のコマンド実行は、ファイル・システム統計をダンプし、バイナリ・インシデント・ファイルを作成し、指定したファイル・システムのすべてのファイル・システム統計をクリアします。
$ /sbin/acfsutil dumpstate -d -z /acfsmounts/acfs1/
acfsutil log
目的
メモリー診断ログ・ファイルおよびメッセージ・デバッグ設定を取得します。
構文および説明
acfsutil [-h] log acfsutil log [-f filename] [-s] [-r n{K|M|G|T|P}] [-p {avd|ofs|oks}] [-l debuglevel] [-n consolelevel] [-o wait_time] [-q] [-c debugcontext] [-T file_type] [-m mount_point] [-a] [-C] [-t]
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsutil
log
コマンドで使用可能なオプションを示します。
表17-13 acfsutil logコマンドのオプション
オプション | 説明 |
---|---|
|
指定されたファイルにインメモリー・ログを書き込みます。デフォルト・ファイルは、現行ディレクトリの |
|
インメモリー・ログ・ファイルのサイズを表示します。 |
|
インメモリー・ログ・ファイルのサイズを設定します。 |
|
レベルまたは問合せの設定を設定する製品を指定します。デフォルトはすべての製品、つまりOracle ADVM ( |
|
インメモリー・デバッグ・レベルを設定します。デフォルトのデバッグ・レベルは |
|
永続ロギングのデバッグ・レベルを設定します。その他の永続ログ構成設定は、 |
|
ログ・サイズ、デバッグ・レベルおよび製品値をすべてのノードに設定し、wait_timeで指定された秒数の間待機し、すべてのノードのメモリー・ログにダンプを出力した後、デバッグ・レベルおよびログ・サイズをリセットします。 |
|
指定された製品のデバッグ設定を問い合せます。 例: |
|
デバッグ・コンテキストを設定します(内部のみ)。 |
|
デバッグ・ファイル・タイプを設定します(内部のみ)。 |
|
指定されたマウント・ポイントでファイルシステムのみをデバッグすることを指定します。 |
|
すべてのファイルシステムについてログに記録するように、デバッグ・ロギングをリセットします。 |
|
すべてのクラスタ・ノードでメモリー・ログをダンプします。また、 |
|
すべてのハング・マネージャ・スレッド情報をインメモリー・ログおよび永続ログにダンプします。 |
acfsutil
log
コマンドを使用すると、メモリー診断ログ・ファイルを管理できます。オプションをなにも指定しないと、acfsutil
log
コマンドは、デフォルトで./oks.log
メモリー・ログに対して取得および書込みを実行します。
-o
オプションは、次を実行します。
-
すべてのノードのインメモリー・ログに対してログ・サイズを
500M
、ログ・レベルを5
、製品をofs
(acfs)にそれぞれ設定します。 -
「180秒間ブロック中で、現在問題が再現しています」などの情報メッセージを表示します。
-
指定された秒数の間待機した後、「すべてのノードでログをダンプしています」と表示します。
-
クラスタ規模のログのダンプを開始します。
-
ログ・レベルを
2
にリセットし、ログ・サイズをデフォルトにリセットします。
-o
オプションは、デフォルトの製品、デバッグ・レベルまたはログ・サイズの設定を変更する必要がある場合、-p
、-l
および-r
の各オプションと組み合せることができます。
このコマンドを実行するには、root
ユーザーまたはOracle ASM管理者ユーザーである必要があります。
例
次の例は、acfsutil
log
コマンドを実行する様々な方法を示しています。
例17-11 acfsutil logの使用方法
#increase internal log size to 100Mb $ acfsutil log -r 100M #increase log level for acfs to 5 $ acfsutil log -l 5 -p ofs #increase log level for oks to 5 $ acfsutil log -l 5 -p oks #collect in memory log and place it into /tmp/logfile $ acfsutil log -f /tmp/logfile #put trace level back to default, level 2 $ acfsutil log -l 2 -p ofs $ acfsutil log -l 2 -p oks # increase log level to 5, wait 3 seconds, and then automatically dump a log on all nodes, # log will be in a dated file in directory specified by acfsutil plog -q $ acfsutil log -l 5 -o 3 Blocking for 3 seconds, reproduce problem now Dumping log on all nodes # dump out the stacks of all acfs threads running on the system on all nodes into log files # in the directory specified by acfsutil plog -q $ acfsutil log -t $ acfsutil log -C
acfsutil meta
目的
Oracle ACFSファイルシステムから別の出力ファイルにメタデータをコピーします。
構文および説明
acfsutil meta -h acfsutil meta [-v] [-q nn[K|M|G|T]] [-l log_file_path] [-o acfs_extent_offsets] {-f record_oriented_metadata_output_file} [-a accel_device] volume_device acfsutil meta {-e record_oriented_metadata_input_file [-i]} {-f output_filesystem_meta_file_prefix_name}
acfsutil meta
-h
は、ヘルプ・テキストを表示して終了します。
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsutil meta
コマンドで使用可能なオプションを示します。
表17-14 acfsutil metaコマンドのオプション
オプション | 説明 |
---|---|
|
メタデータのコピー先となる出力ファイルのパス名を指定します。 |
|
コピーされるファイルシステムのボリューム・デバイス名を指定します。 |
|
verboseモードを指定して追加の診断メッセージを生成します。 |
|
クイック・スキャン・モードでメタデータ・コレクタを起動します。ボリュームのスキャンは、指定されたサイズで停止します。指定する数字は正の整数でなければならず、値は、少なくとも200Mでなければなりません。 単位は、K (KB)、M (MB)、G (GB)、またはT (TB)です。単位インジケータを指定する場合は、整数の後に付ける必要があります。省略した場合、デフォルトの単位はバイトです。 |
|
ログ・ファイルのパスを指定します。指定しない場合、ログ・ファイルは現行ディレクトリにデフォルト名の |
|
メタ・コレクタがデータを追加でコピーする元となるカンマ区切りのファイル・オフセットのリストを指定します。 |
|
ファイルシステムがアンマウントできない場合に使用される、関連付けられたアクセラレータ・デバイスの場所を指定します。 |
|
指定されたレコード指向メタデータ・ファイルを、 |
|
-iオプションを |
|
|
acfsutil meta
コマンドは、メタデータ・コレクタとして動作し、Oracle ACFSファイル・システムを別の指定されたレコード指向出力ファイルに部分的にコピーします。メタデータ・コレクタは、Oracle ACFSファイルシステムのボリュームデバイス名で指定されたファイルシステムのコンテンツを読み取ります。この入力ファイル・システムでOracle ACFSメタデータが検索され、見つかったメタデータはすべて指定のレコード指向出力ファイルに書き込まれます。生成されたレコード指向出力ファイルは、容易に別のシステムに転送できます。そこで、顧客サイトにある元のファイル・システムに影響を与えることなく、診断および分析のために展開できます。
acfsutil meta
でファイルシステムの最適なコピーを取得するには、ファイルシステムをアンマウントしてからacfsutil meta
を実行します。ファイルシステムをアンマウントできない場合は、acfsutil meta
を実行している間、コンテンツの変更またはボリュームのサイズ変更操作の実行を回避します。
元のファイルシステムが非常に大規模な場合、出力ファイルも非常に大きくなる可能性があります。ストレージ領域および転送時間を削減できる場合は、出力ファイルを圧縮します。
ファイル・システムにアクセラレータ・デバイスが関連付けられている場合、acfsutil meta
は、アクセラレータ・デバイス・データもレコード指向出力ファイルにコピーします。この動作は自動的に発生します。
ほとんどの状況で、acfsutil meta
は、アクセラレータ・デバイスをレコード指向出力ファイルに自動的にコピーします。しかし、メタ・コレクタが自力でアクセラレータ・デバイスを検出できないと考えられる場合、コマンドラインに-a
オプションを使用して名前を指定できます。たとえば、ファイルシステムが破損した場合にこのような状況が発生します。-a
オプションを使用すると、メタ・コレクタの自動的な動作がオーバーライドされるため、-a
は慎重に使用する必要があります。
メタデータ・コマンドが出力ファイルも処理する可能性があるため、出力ファイルは入力デバイスとして指定されるOracle ACFSデバイスには配置しないでください。出力ファイルは、Oracle ACFS入力ボリューム・デバイスのサイズである出力ファイルをサポートできるファイルシステムに配置する必要があります。ファイル・システムがいっぱいで、すべてのメタデータを含み、ユーザー・データをほとんど含んでいない場合(このような状態が起こる可能性は低いですが、あり得ないことではありません)を除き、出力ファイルにはそれほどのストレージは必要ないはずです。
-q
フラグは慎重に使用する必要があります。-q
を指定すると、メタ・コレクタは入力ファイルシステム全体のスキャンおよびコピーを実行しません。そのかわりに、事前決定されたバイト数および重要と見なされる特定のデータ構造のみをスキャンしてコピーします。-q
フラグは主に、メタデータ・コレクタのフルバージョンを実行する十分な時間がない状況で使用します。-q
フラグは、問題を調査しているサポート担当者が推奨しないかぎり使用しないでください。
レコード指向出力ファイルの展開は、診断および分析を実行するシステムで行う必要があります。たとえば、次のコマンドは、十分なストレージ領域がある別のファイル・システム上でレコード指向メタデータ・ファイルを展開します。
acfsutil meta -e record_oriented_metadata_input_file -f output_filesystem_meta_file_prefix_name
コマンドの出力は、fsck
またはacfschkdsk
での使用に適したスパース・ファイルを提供します。レコード指向メタデータ入力ファイルにアクセラレータ・ボリュームが含まれている場合は、.acc
接尾辞が付加された同じ出力ファイル名接頭辞を使用して、2番目のスパース出力ファイルが作成されます。展開されたファイルに使用されるファイル・システムは、スパース・ファイルをサポートしている必要があります。そうでない場合、結果として展開されたファイルは、無用のゼロを含む非常に大きなサイズになる可能性があります。これは、スパースのホールによって領域を節約できる部分です。
ほとんどの場合、acfsutil meta
で展開された出力ファイルは、fsck
コマンドで読み取ることができます。ただし、一部のOSプラットフォームでOracle ACFS固有のfsck
コマンドを使用すると、出力ファイルに正しくアクセスできないか、指定したフラグで機能しないことがあります。このような場合、fsck
コマンドの書式を少し変更して使用します。次に例を示します。
-
Linuxでは、
—x
フラグを使用している場合、次の書式でコマンドを実行します。/sbin/fsck.acfs -x filesystem_meta_file.acc filesystem_meta_file
-
Solarisでは、
—o
x
フラグを使用している場合、次の書式でコマンドを実行します。/usr/lib/fs/acfs/fsck -o x=filesystem_meta_file.acc filesystem_meta_file
-
AIXでは、次の書式でコマンドを実行します。
/sbin/helpers/acfs/fsck filesystem_meta_file
-
Windowsでは、次の書式でコマンドを実行します。
acfschkdsk filesystem_meta_file
例
例17-12は、メタデータをコピーして出力ファイルへと展開するためのacfsutil meta
コマンドの使用方法を示しています。
例17-12 acfsutil metaコマンドの使用方法
$ /sbin/acfsutil meta -f /acfsmounts/critical_apps/record_oriented_metadata_file /dev/asm/volume1-123
次に、診断および分析が実行されるシステムで出力ファイルを展開できます。
$ /sbin/acfsutil meta -e record_oriented_metadata_file -f filesystem_meta_file
acfsutil plogconfig
目的
Oracle ACFSの永続ロギング構成設定を管理します。
構文および説明
acfsutil plogconfig [-h] [-d persistent_log_directory] [-t] [-q ] [-i seconds] [-s buffer_size] [-l low_water_percent] [-u high_water_percent] [-m max_logfile_size] [-n max_logfile_number]
acfsutil
-h
plogconfig
は、ヘルプを表示して終了します。
Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
次の表に、acfsutil
plogconfig
コマンドで使用可能なオプションを示します。
表17-15 acfsutil plogconfigコマンドのオプション
オプション | 説明 |
---|---|
|
代替ロギング・ディレクトリを指定します。指定しない場合、デフォルト・ディレクトリは |
|
ロギングを終了します。 |
|
永続ロギング構成設定を問い合せて、表示します。 |
|
間隔タイマーの秒数を指定します。 |
|
ログ・バッファ・サイズ(KB)を設定します。 |
|
ファイル書込みトリガーをパーセンテージで設定します。 |
|
ファイル書込みスロットルをパーセンテージで設定します。 |
|
ログ・ファイルの最大サイズ(MB)を設定します。 |
|
ログ・ファイルの最大数を設定します。 |
acfsutil
plogconfig
コマンドは、永続ロギングの構成設定を管理するための診断ツールとなります。
コマンド引数はすべてオプションですが、少なくとも1つ指定する必要があります。
注意:
acfsutil
plogconfig
コマンドは、Oracleサポートが永続ロギング設定の構成を要求した場合にのみ実行します。
このコマンドを実行するには、root
ユーザーまたはOracle ASM管理者ユーザーである必要があります。
例
次に、現在の構成設定を表示するacfsutil
plogconfig
コマンドの使用例を示します。
例17-13 Oracle ACFS acfsutil plogconfigコマンドの使用方法
# /sbin/acfsutil plogconfig -q Log Directory Name : /oracle/crsdata/my_host/acfs Buffer Size (KB) : 64 Low Water Level (percent) : 50 High Water Level (percent) : 75 Timer Interval (Seconds) : 5 Maximum Number of Log Files : 10 Maximum Log File Size (MB) : 100
acfsutil tune
目的
acfsutil
tune
コマンドは、Oracle ACFSの調整可能パラメータの値を表示または設定します。
構文および説明
acfsutil tune -h acfsutil tune [tunable_name] acfsutil tune tunable_name=value
acfsutil
tune
-h
は、ヘルプ・テキストを表示して終了します。
次の表に、acfsutil
tune
コマンドで使用可能なオプションを示します。
表17-16 acfsutil tuneコマンドのオプション
オプション | 説明 |
---|---|
|
調整可能パラメータの名前を指定します。 |
|
調整可能パラメータの値を指定します。 |
調整可能パラメータと値が指定されている場合、acfsutil
tune
コマンドは、特定のノードに永続的な方法で調整可能パラメータの値を設定します。
調整可能パラメータが値なしで指定されている場合、acfsutil
tune
コマンドは、指定された調整可能パラメータに現在割り当てられている値を表示します。
オプションが指定されていない場合、acfsutil
tune
コマンドは、現在割り当てられている調整可能パラメータの値を表示します。
Oracle ACFS調整可能パラメータAcfsMaxOpenFiles
により、WindowsおよびAIX上で開かれているOracle ACFSファイルの数が制限されます。通常、この調整可能パラメータの値を変更する必要はありませんが、Oracle ACFSファイルシステムで大きな作業ファイルを扱う場合、値を増やすことがあります。
Oracle ACFS調整可能パラメータAcfsMaxCachedFiles
により、WindowsおよびAIXのメモリーにキャッシュされているクローズ済ファイルの最大数が設定されます。通常、この調整可能パラメータの値を変更する必要はありませんが、パフォーマンスの向上のために値を変更することがあります。
調整可能パラメータを変更すると、ただちに有効になり、再起動されても効力は持続します。
調整可能パラメータの値を変更するには、rootユーザーまたはWindowsのAdministrator
であることが必要です。
例
最初のコマンドは、Oracle ACFSの調整可能パラメータとその値を表示します。2つ目のコマンドでは、AcfsHMTimeOutIntervalSecs
パラメータの値を変更します。
例17-14 acfsutil tuneコマンドの使用方法
$ /sbin/acfsutil tune AcfsHMTimeOutIntervalSecs = 60 (0x3c) AcfsHMSilenceIntervalMins = 240 (0xf0) # /sbin/acfsutil tune AcfsHMTimeOutIntervalSecs=120
advmutil tune
目的
advmutil
tune
は、Oracle ADVMのパラメータの値を表示または設定します。
構文および説明
advmutil -h advmutil tune [parameter] advmutil tune parameter=value
advmutil
-h
はヘルプ・テキストを表示して終了します。
次の表に、advmutil
tune
コマンドで使用可能なオプションを示します。
表17-17 advmutil tuneコマンドのオプション
オプション | 説明 |
---|---|
|
値を設定または表示するパラメータを指定します。 |
|
指定したパラメータの値を指定します。 |
オプションが指定されていない場合、advmutil
tune
コマンドは、現在割り当てられている値を表示します。
パラメータに値が指定されていない場合、advmutil
tune
コマンドは指定されたパラメータに現在割り当てられている値を表示します。
パラメータを設定するには、権限を持つユーザーである必要があります。
注意:
パラメータの設定は注意して行う必要があり、通常はOracleサポート・サービスのみが行います。
例
advmutil
tune
で指定できるパラメータは、デッドロック・タイマー(deadlock_timer
)の最大時間(分)です。この例の1つ目のコマンドは、deadlock_timer
パラメータの最大時間(分)を変更します。2番目のコマンドは、Oracle ADVMパラメータの現在の設定を表示します。
例17-15 advmutil tuneの使用方法
$ /sbin/advmutil tune deadlock_timer=20 $ /sbin/advmutil tune deadlock_timer = 20 (0x14) resilver_power = 8 (0x8) resilver_regio = 32 (0x20)
Oracle ACFS I/O障害コンソール・メッセージの理解
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
orCluster
-
影響を受けるオブジェクトのタイプ
関連するファイルシステム・オブジェクトの種類を示す文字列(可能な場合)。次に例を示します。
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 .