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では、ディレクトリのハード・リンクをサポートしません。

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 12.2.0.1の場合、Oracle ACFSファイルシステムに割り当てることのできる最大サイズは、表17-1に示すとおり、128テラバイト(TB)です。Oracle ACFSおよびOracle ASMに対するストレージ制限は、ディスク・グループ互換性属性によって決まります。

表17-1 Oracle ADVMボリュームの最大ファイル・サイズ

冗長性 COMPATIBLE.ASM < 12.2.0.1のディスク・グループ COMPATIBLE.ASM = 12.2.0.1のディスク・グループ

外部

128 TB

128 TB

標準

64 TB

128 TB

42.6 TB

128 TB

関連項目:

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ドライバのロード

    acfsloadコマンドを使用して、ドライバを手動でロードまたはアンロードできます。詳細は、acfsloadを参照してください。

  • Oracle ACFSマウント・レジストリにリストされたOracle ACFSファイルシステムのマウント

    mountコマンドを使用して、Oracle ACFSファイルシステムを手動でマウントできます。詳細は、「コマンドライン・ツールによるOracle ACFSの管理」を参照してください。

  • リソースベースのOracle ACFSデータベース・ホーム・ファイルシステムのマウント

Oracle Restart構成の場合、これらのアクションに関連するOracle ACFSリソースは作成されません。

Oracle Grid Infrastructure構成では、Oracle ACFSリソース管理が完全サポートされる一方、Oracle Restart構成では、Oracle ACFSリソースベースの管理アクションを代替操作(場合によっては手動)に置き換える必要があります。

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 ]

表17-2に、acfsloadコマンドで使用可能なオプションを示します。

表17-2 acfsloadコマンドのオプション

オプション 説明

start

Oracle ACFS、Oracle ADVMおよびOKSドライバをロードします。

stop

Oracle ACFS、Oracle ADVMおよびOKSドライバをアンロードします。

-s

サイレント・モードで動作します。

説明

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 | supported } [-s]

表17-3に、acfsdriverstateコマンドで使用可能なオプションを示します。

表17-3 acfsdriverstateコマンドのオプション

オプション 説明

-orahome ORACLE_HOME

ユーザーがacfsdriverstateコマンドを実行する権限を持つOracle Grid Infrastructureホームを指定します。

installed

Oracle ACFSがシステムにインストールされているかどうかを決定します。

loaded

Oracle ADVM、Oracle ACFSおよびOKSドライバがメモリーにロードされているかどうかを決定します。

version

現在インストールされているOracle ACFSシステム・ソフトウェアのバージョンをレポートします。

supported

システムがOracle ACFSでサポートされているカーネルであるかどうかをレポートします。

-s

コマンドの実行時、サイレント・モードを指定します。

説明

acfsdriverstateを使用して、Oracle ACFS、Oracle ADVMおよびOKSドライバの現在の状態に関する詳細情報を表示できます。

次に、acfsdriverstateコマンドの使用例を示します。

$ acfsdriverstate version
ACFS-9325:     Driver OS kernel version = 2.6.39-400.3.0.el6uek.x86_64(x86_64).
ACFS-9326:     Driver Oracle version = 150728.
ACFS-9212:     Driver build version = MAIN.

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タグ名の指定

Oracle ACFSタグ名は、1文字から32文字までの長さで、次の一連の文字の組合せのみで構成されます。

  • 大文字と小文字のアルファベット文字(A-Z、a-z)

  • 数字(0-9)

  • ハイフン(-)

  • アンダースコア(_)

  • 空白(スペース)

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コマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

value

Oracle ACFSタグ値を取得するためのメモリー・バッファを指定します。

size

戻されたOracle ACFSタグ値を保持するメモリー・バッファのバイト・サイズを指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

acfsgettagライブラリ・コールは、Oracle ACFSタグ名の値文字列を取得します。戻り値は、ゼロ以外のバイトの長さの出力で、成功した場合はvalue文字列、失敗した場合はACFS_TAG_FAILです。ACFS_TAG_FAILが戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、Oracle ACFSタグ付けのエラー値を参照してください。

Oracle ACFSタグ名には、固定値文字列の0 (長さが1バイトの数字ゼロの文字)が現在使用されているため、valueは、Oracle ACFSタグ名のすべてのエントリで同じです。valueをNULL、size0に設定して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コマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

list

Oracle ACFSタグ名のリストを含むメモリー・バッファへのポインタを指定します。

size

戻されたOracle ACFSタグ名リストを保持するメモリー・バッファのサイズ(バイト)を指定します。

flags

将来の使用のために予約されています。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コマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

flags

将来の使用のために予約されています。0に設定する必要があります。

説明

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コマンドのオプション

オプション 説明

path

ファイルまたはディレクトリのパス名へのポインタを指定します。

tagname

通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。

value

Oracle ACFSタグ値を設定するためのメモリー・バッファを指定します。

size

Oracle ACFSタグ値のバイト・サイズを指定します。

flags

将来の使用のために予約されています。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診断コマンドの概要

コマンド 説明

acfsdbg

Oracle ACFSファイルシステムをデバッグします。

acfsutil blog

ブログ・ファイルにテキストを書込みます。

acfsutil dumpstate

Oracle ACFSの内部状態情報を収集します。

acfsutil log

メモリー診断ログ・ファイルおよびメッセージ・デバッグ設定を取得します。

acfsutil meta

Oracle ACFSファイルシステムから別の出力ファイルにメタデータをコピーします。

acfsutil plogconfig

Oracle ACFSの永続ロギング構成設定を管理します。

acfsdbg

目的

Oracle ACFSファイルシステムをデバッグします。

構文および説明

acfsdbg [-r] [-l] [-x] volume_device
acfsdbg -h

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

表17-9に、acfsdbgコマンドで使用可能なオプションを示します。

表17-9 acfsdbgコマンドのオプション

オプション 説明

-h

使用方法のメッセージを出力して終了します。メッセージには、acfsdbgコマンドの起動時に使用できる各種オプションが表示されます。

-r

読取り専用モードで動作します。ファイルシステム上のデータは変更されません。また、すべての書込みコマンドを無効にします。デバイスがどこかにマウントされている場合、データはファイルシステム・マウントによってキャッシュされているものもあるため、acfsdbgで最新データが表示されない場合があります。

-l

カーネル・ログ・ファイルを処理します。デフォルトでは、ログ・ファイルを処理しません。

—x file_name

acfsutil metaで収集されたアクセラレータ・データに対して指定します。このタイプのデータに対してのみ使用します。

volume_device

ボリュームのデバイス名を指定します。

acfsdbgは、fsckおよびacfschkdskの拡張版で、ファイルシステムのディスク構造を表示および変更する対話型プログラムです。

注意:

acfsdbgコマンドは、経験豊かな開発およびサポート・エンジニアがディスク構造を調査して問題を診断するためのものです。慎重に使用してください。

acfsdbgを起動すると、コマンド・プロンプトが表示されます。コマンド・プロンプトには、表17-10に示すサブコマンドを入力できます。

acfsdbgは、シェル・パイプでacfsdbgのサブコマンドをacfsdbgバイナリにエコーすることで、スクリプトで使用することもできます。

デフォルトでは、ツールの実行時にファイルシステムは変更されません。-lオプションを使用する場合、対話型のディスク・ブロック・ダンプ・セッションの前に、トランザクション・ログのファイルシステム・メタデータが照会されます。ボリューム・デバイスには、Oracle ACFSファイルシステムがディスマウントされているボリュームを指定する必要があります。ボリューム・デバイスにOracle ACFSファイルシステムがマウントされていると、acfsdbgはエラー・メッセージを表示して終了します。

acfsdbgを実行するには、管理者またはOracle ASM管理者グループのメンバーであることが必要です。

サブコマンド

表17-10に、acfsdbgのサブコマンドを示します。

表17-10 acfsdbgのサブコマンド

オプション 説明 構文

calculate

単純な演算式を計算します。

有効な演算子: +、-、*、/、%、&、|、^、~、<<、>>

新しい式は、空白で始めます。

0-1は、マイナス1を表します。

calculate [-v] expr […]

  • -v: verboseモード
  • expr: 単純な2+2式

cksum

ヘッダーでチェックサムを生成して置換します。

ヘッダー・オフセットは、calculateサブコマンドで使用されるような式でもかまいません。

新しいヘッダー・オフセットは、空白で始めます。

このコマンドは、読取り専用モードでは無効です。

cksum [-C | -CE] header_offset […]

  • -C: 通常の構造チェックサム用として再生成します。
  • -CE: エクステント構造チェックサム用として再生成します。
  • header_offset: ディスク構造ヘッダーのオフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

close

デバイスへのオープン・ハンドルを閉じます。

close

echo

コマンドラインのテキストをstdoutにエコーします。

echo

fenum

指定されたファイル・エントリ表(FETA)エントリを表示します。

fenum [-f | -e | -d] FETA_entry_number

  • -f: この構造に関連するディスク構造上のすべてを表示します。
  • -e: この構造に関連するディスク・エクステント情報のすべてを表示します。
  • -d: 構造をディレクトリとしてキャストし、そのコンテンツを表示します。
  • FETA_entry_number: ファイルシステム上のファイルを識別するために使用されるファイル・エントリ表の番号。

help

ヘルプ・メッセージを表示します。

help

offset

ディスク・オフセットでの構造を表示します。

offset [-c cast] [-f | -d] disk_offset

  • -f: この構造に関連するディスク構造上のすべてを表示します。
  • -d: 構造をディレクトリとしてキャストし、そのコンテンツを表示します。
  • disk_offset: 表示するディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

open

デバイスへのハンドルを開きます。デフォルトは、コマンドラインに入力されたボリューム・デバイス名です。

open [volume_device]

primary

コマンドのコンテキストにプライマリ・ファイルシステムを設定します。

primary

prompt

プロンプトに指定された文字列を設定します。

prompt "prompt_string"

quit

acfsdbgデバッガ・コマンドを終了します。

quit

read

オフセットから値を読み取ります。

読取りのデフォルト・サイズは、8バイトです。

読取りのデフォルト件数は、1です。

read [-1 | -2 | -4 | -8 | -s] [count] offset

  • -1: バイト値を読み取ります
  • -2: 2バイト(short)値を読み取ります。
  • -4: 4バイト(int)値を読み取ります。
  • -8: 8バイト(long)値を読み取ります。
  • -s nullで終了した文字列を読み取ります。
  • count: 読み取る値の数。指定しない場合、デフォルト値は1です。
  • offset: 読み取るディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。

snapshot

コマンドのコンテキストに指定されたスナップショットを設定します。

snapshot snapshot_name

write

16進数、8進数または10進数の値をディスク・オフセットに書き込みます。値のサイズまたは前ゼロ付きの16進数値の桁数に基づいて書込みバイト数を見積ります。

ディスク・オフセットは、calculateサブコマンドで使用されるような式でもかまいません。

数値は、calculateサブコマンドで使用されるような式でもかまいません。

このコマンドは、読取り専用モードでは無効です。

write [-1 | -2 | -4 | -8 | -c | -s] [-C | -CE] offset value

  • -1: バイト値を書き込みます
  • -2: 2バイト(short)値を書き込みます。
  • -4: 4バイト(int)値を書き込みます。
  • -8: 8バイト(long)値を書き込みます。
  • -c テキスト(null終了なし)を書き込みます。文字列を一重引用符(')で囲みます。
  • -s : nullで終了した文字列を書き込みます。文字列を引用符(")で囲みます。
  • -C: 通常の構造チェックサムを再生成します。
  • -CE: エクステント構造チェックサムを再生成します。
  • offset: 書き込むディスク・オフセット。この値は、calculateサブコマンドで使用されるような式でもかまいません。
  • value: 書き込む値。数値の場合、この値は、calculateサブコマンドで使用されるような式でもかまいません。

例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コマンドのオプション

オプション 説明

-t text

指定されたマウント・ポイントでブログ・ファイルにテキストを書込みます。

-u

dbgファイルからブログ・デバッグ・レベルを更新します。

mount_point

マウント・ポイントを指定します。

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

acfsutil -h dumpstateは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

次の表に、acfsutil dumpstateコマンドで使用可能なオプションを示します。

表17-12 acfsutil dumpstateコマンドのオプション

オプション 説明

acfs_path

Oracle ACFSファイルシステムのファイルに対するディレクトリを指定します。

acfsutil dumpstateコマンドは、指定されたファイルとそれに対応するファイルシステムについてOracle ACFSの内部状態情報を収集します。状態情報は、ロギング・ディレクトリのバイナリ・インシデント・ファイルに書き込まれます。

注意:

acfsutil dumpstateコマンドは、Oracleサポートが分析のために診断データおよびデバッグ・データを要求した場合にのみ実行します。

次に、acfsutil dumpstateコマンドの使用例を示します。

例17-10 acfsutil dumpstateコマンドの使用方法

$ /sbin/acfsutil dumpstate /acfsmounts/acfs1/myfile

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コマンドのオプション

オプション 説明

-f filename

指定されたファイルにインメモリー・ログを書き込みます。デフォルト・ファイルは、現行ディレクトリのoks.logです。

-s

インメモリー・ログ・ファイルのサイズを表示します。

-r n{K|M|G|T|P}

インメモリー・ログ・ファイルのサイズを設定します。

-p {avd|ofs|oks}

レベルまたは問合せの設定を設定する製品を指定します。デフォルトはすべての製品、つまりOracle ADVM (avd)、Oracle ACFS (ofs)およびOracle Kernel Services (oks)です。

-l debuglevel

インメモリー・デバッグ・レベルを設定します。デフォルトのデバッグ・レベルは2です。有効値は、0-6です。

-n consolelevel

永続ロギングのデバッグ・レベルを設定します。その他の永続ログ構成設定は、acfsutil plogconfigコマンドで管理されます。

-o wait_time

ログ・サイズ、デバッグ・レベルおよび製品値をすべてのノードに設定し、wait_timeで指定された秒数の間待機し、すべてのノードのメモリー・ログにダンプを出力した後、デバッグ・レベルおよびログ・サイズをリセットします。

-q

指定された製品のデバッグ設定を問い合せます。

例: acfsutil log —p avd —q

-c debugcontext

デバッグ・コンテキストを設定します(内部のみ)。

-T file_type

デバッグ・ファイル・タイプを設定します(内部のみ)。

—m mount_point

指定されたマウント・ポイントでファイルシステムのみをデバッグすることを指定します。

-a

すべてのファイルシステムについてログに記録するように、デバッグ・ロギングをリセットします。

-C

すべてのクラスタ・ノードでメモリー・ログをダンプします。また、-tオプションに追加することもできます。

-t

すべてのハング・マネージャ・スレッド情報をインメモリー・ログおよび永続ログにダンプします。

acfsutil logコマンドを使用すると、メモリー診断ログ・ファイルを管理できます。オプションをなにも指定しないと、acfsutil logコマンドは、デフォルトで./oks.logメモリー・ログに対して取得および書込みを実行します。

-oオプションは、次を実行します。

  1. すべてのノードのインメモリー・ログに対してログ・サイズを500M、ログ・レベルを5、製品をofs (acfs)にそれぞれ設定します。

  2. 「180秒間ブロック中で、現在問題が再現しています」などの情報メッセージを表示します。

  3. 指定された秒数の間待機した後、「すべてのノードでログをダンプしています」と表示します。

  4. クラスタ規模のログのダンプを開始します。

  5. ログ・レベルを2にリセットし、ログ・サイズをデフォルトにリセットします。

-oオプションは、デフォルトの製品、デバッグ・レベルまたはログ・サイズの設定を変更する必要がある場合、-p-lおよび-rの各オプションと組み合せることができます。

このコマンドを実行するには、rootユーザーまたはOracle ASM管理者ユーザーである必要があります。

次の例では、acfsutil logコマンドを実行してヘルプを表示する方法を示します。

例17-11 acfsutil logの使用方法

$ /sbin/acfsutil -h log 

acfsutil meta

目的

Oracle ACFSファイルシステムから別の出力ファイルにメタデータをコピーします。

構文および説明

acfsutil meta -h
acfsutil meta [-v] [-q] [-l log_file_path] [-o acfs_extent_offsets] {-f output_file} [-a <device>]  volume_device

acfsutil meta -hは、ヘルプ・テキストを表示して終了します。

Oracle ACFS acfsutilコマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。

表17-14に、acfsutil metaコマンドで使用可能なオプションを示します。

表17-14 acfsutil metaコマンドのオプション

オプション 説明

—v

verboseモードを指定して追加の診断メッセージを生成します。

—q

クイック・モードでメタデータ・コレクタを起動します。

-l log_file_path

ログ・ファイルのパスを指定します。指定しない場合、ログ・ファイルは現行ディレクトリにデフォルト名のacfs.meta.logで生成されます。

—o acfs_extent_offsets

メタ・コレクタがデータを追加でコピーする元となるカンマ区切りのファイル・オフセットのリストを指定します。

—f output_file

メタデータのコピー先となる出力ファイルのパス名を指定します。

—a device

ファイルシステムがアンマウントできない場合に使用される、関連付けられたアクセラレータ・デバイスの場所を指定します。

volume_device

コピーされるファイルシステムのボリューム・デバイス名を指定します。

acfsutil metaコマンドは、メタデータ・コレクタとして動作し、Oracle ACFSファイルシステムを別の指定された出力ファイルに部分的にコピーします。メタデータ・コレクタは、Oracle ACFSファイルシステムのボリュームデバイス名で指定されたファイルシステムのコンテンツを読み取ります。この入力ファイルシステムでOracle ACFSメタデータが検索され、見つかったメタデータはすべて指定の出力ファイルに書き込まれます。生成された出力ファイルは、カスタマ・サイトにある元のファイルシステムに影響を及ぼさずに、さらなる診断および分析に使用できます。

acfsutil metaでファイルシステムの最適なコピーを取得するには、ファイルシステムをアンマウントしてからacfsutil metaを実行します。ファイルシステムをアンマウントできない場合は、acfsutil metaを実行している間、コンテンツの変更またはボリュームのサイズ変更操作の実行を回避します。

元のファイルシステムが非常に大規模な場合、出力ファイルも非常に大きくなる可能性があります。出力ファイルは、疎ファイルをサポートするファイルシステムに配置する必要があります。このように配置すると、ファイルのサイズが縮小することがあるためです。出力ファイルをコピーする際、疎ファイルをサポートするユーティリティを使用します。ストレージ領域および転送時間を削減できる場合は、出力ファイルを圧縮します。

ファイルシステムにアクセラレータ・デバイスが関連付けられている場合、acfsutil metaは、アクセラレータ・デバイス・データも2つ目の出力ファイルにコピーします。2つ目ファイルでは、-fオプションのファイル名を使用し、その後に.acc拡張子を付けます。たとえば、 acfsutil meta -f /tmp/mymetafile volume1-123と指定した場合、メタ・コレクタはvolume1-123のコピーを/tmp/mymetafileに入れ、アクセラレータ・デバイスのコピーは/tmp/mymetafile.accファイルに入れます。この動作は自動的に発生します。

ほとんどの状況で、acfsutil metaは、アクセラレータ・デバイスを2つ目のファイルに自動的にコピーします。しかし、メタ・コレクタが自力でアクセラレータ・デバイスを検出できないと考えられる場合、コマンドラインに-aオプションを使用して名前を指定できます。たとえば、ファイルシステムが破損した場合にこのような状況が発生します。-aオプションを使用すると、メタ・コレクタの自動的な動作がオーバーライドされるため、-aは慎重に使用する必要があります。

メタデータ・コマンドが出力ファイルも処理する可能性があるため、出力ファイルは入力デバイスとして指定されるOracle ACFSデバイスには配置しないでください。出力ファイルは、Oracle ACFS入力ボリューム・デバイスのサイズである出力ファイルをサポートできるファイルシステムに配置する必要があります。

-qフラグは慎重に使用する必要があります。-qを指定すると、メタ・コレクタは入力ファイルシステム全体のスキャンおよびコピーを実行しません。そのかわりに、事前決定されたバイト数および重要と見なされる特定のデータ構造のみをスキャンしてコピーします。-qフラグは主に、メタデータ・コレクタのフルバージョンを実行する十分な時間がない状況で使用します。-qフラグは、問題を調査しているサポート担当者が推奨しないかぎり使用しないでください。

ほとんどの場合、acfsutil meta出力ファイルはacfsutil fsckコマンドで読み取ることができます。ただし、一部のOSプラットフォームでOracle ACFS固有のacfsutil fsckコマンドを使用すると、出力ファイルに正しくアクセスできないか、指定したフラグで機能しないことがあります。このような場合、fsckコマンドの書式を少し変更して使用します。次に例を示します。

  • Linuxでは、—xフラグを使用している場合、次の書式でコマンドを実行します。

    /sbin/fsck.acfs -x accelerator_meta_file meta_output_file
  • AIXでは、次の書式でコマンドを実行します。

    /sbin/helpers/acfs/fsck meta_output_file

例17-12に、acfsutil metaコマンドの使用方法を示します。

例17-12 acfsutil metaコマンドの使用方法

$ /sbin/acfsutil meta -f /acfsmounts/critical_apps/meta_output_file /dev/asm/volume1-123

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コマンドのオプション

オプション 説明

-d persistent_log_directory

代替ロギング・ディレクトリを指定します。指定しない場合、デフォルト・ディレクトリは$ORACLE_BASE/crsdata/hostname/acfsです。

-t

ロギングを終了します。

-q

永続ロギング構成設定を問い合せて、表示します。

-i seconds

間隔タイマーの秒数を指定します。

-s buffer_size

ログ・バッファ・サイズ(KB)を設定します。

-l low_water_pecent

ファイル書込みトリガーをパーセンテージで設定します。

-u high_water_pecent

ファイル書込みスロットルをパーセンテージで設定します。

-m max_logfile_size

ログ・ファイルの最大サイズ(MB)を設定します。

-n max_logfile_number

ログ・ファイルの最大数を設定します。

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

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 datametadataまたはpaging

  • 操作タイプ

    関連する操作のタイプ。

    synch readsynch writeasynch readまたはasynch write

  • ファイル・エントリ番号

    関連するファイルシステム・オブジェクトのOracle ACFSファイル・エントリ番号(10進数)。acfsutil info fileidツールにより対応するファイル名を見つけます。

  • オフセット

    I/Oのディスク・オフセット(10進数)。

  • I/Oの長さ

    I/Oの長さ(バイト単位、10進数)。

  • 影響を受けるファイルシステム・オブジェクト

    関連するファイルシステム・オブジェクトがノードローカルか、クラスタ全体でアクセスされるリソースのいずれであるかの表示。次に例を示します。

    Node or Cluster

  • 影響を受けるオブジェクトのタイプ

    関連するファイルシステム・オブジェクトの種類を示す文字列(可能な場合)。次に例を示します。

    UnknownUser Dir.User SymlinkUser FileSys.DirSys.FileまたはMetaData

    • Sys.Dir.

      表示可能なネームスペース内でOracle ACFSによって管理されるディレクトリ

    • sys.File

      表示可能なネームスペース内でOracle ACFSによって管理されるファイル

    • MetaData

      表示可能なネームスペース外でOracle ACFSに管理されるリソース

  • 操作のコンテキスト

    I/Oを発行しているコード・コンテキストを示すよりレベルの高いビュー。これはOracleサポート・サービスで使用されます。次に例を示します。

    UnknownReadWriteGrowShrinkCommitまたはRecovery

  • スナップショット

    判断できる場合は、関連するデータがスナップショットのものであったかどうかの表示。次に例を示します。

    YesNoまたは?

  • ファイルシステムのオブジェクト・タイプ

    ファイルシステム・オブジェクトのタイプの内部識別子。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 .