7 Oracle ACFSの高度なトピックの理解
Oracle ACFSの高度なトピックには、さらに複雑な管理の問題に関する説明が含まれています。
この付録では、Oracle Advanced 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では、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ファイル・システムに割り当てることができる最大サイズを表7-1に示します。Oracle ACFSおよびOracle ASMに対するストレージ制限は、ディスク・グループ互換性属性によって決まります。
表7-1 Oracle ACFSファイル・システムまたは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 |
ノート:
Compatible.ASM >= 19.0
で1PB ADVMボリュームが必要なお客様は、次のディスク・グループ属性を’64
’に設定できます。このパラメータは、新しく作成されたボリュームにのみ影響します:
SQL> alter diskgroup my_dg set attribute 'advm_extent_size_mb'='64';
関連項目:
-
ファイル・サイズの制限とディスク・グループの互換性設定の詳細は、Oracle Automatic Storage Management管理者ガイドを参照してください。
-
Oracle ASMファイルおよびディスク・グループに対するストレージ制限の詳細は、Oracle Automatic Storage Management管理者ガイドを参照してください。
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
コマンドは、プロセスおよびオープン・ファイルに関する情報を一覧表示します。
Oracle ACFSは、チェックサムまたは想定されるタイプの比較に基づいて、読取り操作から戻されたファイル・メタデータで不整合を検出すると、適切な処理を実行して、影響を受けるファイル・システム・コンポーネントを隔離し、fsck
をできるだけ早く実行する必要があることを示す通知を生成します。fsck
が実行されるまで、ファイル・システムがマウントされるたびに、システム・イベント・ログ出力メッセージを含む通知が生成されます。
Oracle ACFSとNFS
Linux上のNFSを介してファイル・システムをエクスポートするときには、-fsid=num
エクスポート・オプションを使用します。このオプションは、NFSクライアントとの通信に使用されるファイル・ハンドルのファイル・システム識別子の部分を、ファイル・システムがマウントされているブロック・デバイスのメジャー番号およびマイナー番号から導出された数値のかわりに、強制的に指定した値にします。num
には32ビットの番号であれば使用できますが、エクスポートされたすべてのファイル・システムの間で一意であることが必要です。また、num
は、クラスタのメンバー間で一意であり、特定のファイル・システムのクラスタの各メンバーで同じnum
であることが必要です。これが必要なのは、Oracle ADVMブロック・デバイスのメジャー番号が、同じノードのすべての再起動で、またはクラスタ内の様々なノードで、同じであると保証されないためです。
ノート:
Oracle ASM Dynamic Volume Manager (Oracle ADVM)ボリュームおよびOracle Advanced Cluster File System (Oracle ACFS)ファイル・システムは、NFSまたは共通インターネット・ファイル・システム(CIFS)ファイルから作成されたディスク・グループでは、現在サポートされていません。ただし、場合によっては、Oracle ACFSファイル・システムを、NFSまたはCIFSファイル・システムとしてネットワーク・クライアントにエクスポートすることはできます。Oracle ACFS LinuxまたはSolarisサーバーと接続している場合、Windows上のSamba/CIFSクライアントはACLを使用できません。Gridホーム・クラスタ用の高可用性NFS (HANFS)を使用している場合、HANFSでは、前の段落で記述されている状況を自動的に処理します。HANFSの詳細は、「Oracle Grid Infrastructure用の高可用性Network File Storage」を参照してください。
Oracle ADVMの制限事項
このトピックでは、Oracle ADVMの制限事項について説明します。
Oracle ADVMボリュームのデフォルトの構成は、8列、ストライプ幅が1MBです。デフォルトのボリューム・エクステント・サイズは64MBです。
Oracle ADVM動的ボリュームで列数を1
に設定すると、Oracle ADVMボリュームのストライプ化は事実上終了します。データベース・データ・ファイルおよびその他のファイルを使用して最適なパフォーマンスを実現するには、列を8(デフォルト)に設定することをお薦めします。
Linuxプラットフォームでは、Oracle ASM動的ボリューム・マネージャ(Oracle ADVM)ボリューム・デバイスは、Oracle ASMディスク・グループ内の基礎となるストレージの構成に関係なく、ブロック・デバイスとして作成されます。Oracle ADVMボリューム・ブロック・デバイスのRAWボリューム・デバイスへのマップにRAW
(8)
を使用しないでください。
Oracle ADVMボリュームを管理するASMCMDコマンドの詳細は、ASMCMDによるOracle ADVMの管理を参照してください。
ACFSスナップショットを使用した全データベース(非CDBまたはCDB)のクローニング方法
ACFSスナップショットは、ファイル・システムのスパースなPoint-in-Timeコピーであり、これを使用すると、DBがACFS上にある場合に、PDBスナップショット・クローニングを使用してPDBのクローンと同様にフルDBクローンも作成できます(PDBクローニングのユーザー・インタフェース)。ACFSスナップショットをテスト環境および開発環境で使用して、テスト・マスターの高速で領域効率の高いクローンを作成できます。この項では、ACFSスナップを使用してフルDBクローンを作成するために必要なステップを例とともに説明します。
テスト設定: クローニングされるSOURCE
という単一のテスト・マスターCDBがあります。このCDBにはsourcepdb[1-10]
という名前で10個のPDBがあり、それぞれOLTPスキーマとともにロードされます。これはReal Application Clusterデータベース(RAC)で、インスタンスは両方のノードで実行されています。データファイル、REDOログおよび制御ファイルは、"/mnt/dbvol
"にマウントされたACFSに格納されます。このファイル・システムは、DATA
ディスク・グループに作成されます。リカバリ・ログおよびアーカイブ・ログは、RECO
ディスク・グループの最上位に作成される、"/mnt/rvol
"にマウントされたファイル・システムに格納されます。ACFSスナップはファイル・システム内に格納され、同じマウントポイントを介してアクセスできます。
問題が発生した場合にリカバリ方法を提供するために、テスト・マスター・データベースのバックアップを定期的に作成することをお薦めします。
ExadataでのACFSスナップショットの構成の詳細は、Oracle Exadataストレージ・スナップショットの設定を参照してください
様々なACFSスナップショットのユースケースの詳細は、My Oracle Support (MOS)のノート「Oracle ACFS Snapshot Use Cases on Exadata」(文書ID 2761360.1)を参照してください。
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
コマンドを使用して、ドライバを手動でロードまたはアンロードできます。ただし、ドライバを手動でロードする場合は、Oracle Restartスタックを起動する前にOracle ACFSドライバをロードする必要があります。詳細は、「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
はヘルプ・テキストを表示して終了します。
表7-2に、acfsload
コマンドで使用可能なオプションを示します。
表7-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] [-k <kernel_rpm_file_path> | <installed_kernel_rpm_package>} [-s]
acfsdriverstate
—h
はヘルプ・テキストを表示して終了します。
表7-3に、acfsdriverstate
コマンドで使用可能なオプションを示します。
表7-3 acfsdriverstateコマンドのオプション
オプション | 説明 |
---|---|
|
|
|
Oracle ACFSがシステムにインストールされているかどうかを決定します。 |
|
Oracle ADVM、Oracle ACFSおよびOKSドライバがメモリーにロードされているかどうかを決定します。 |
|
現在インストールされているOracle ACFSシステム・ソフトウェアのバージョンをレポートします。 |
|
システムがOracle ACFSでサポートされているカーネルであるかどうかをレポートします。 |
|
このコマンド・オプションでは、任意のカーネルrpm (ファイル、またはシステムにすでにインストールされているもの)を指定でき、指定したカーネルで現在のACFSインストールがサポートされているかどうかが判別されます。 インストール済のカーネルrpmパッケージを指定するには、ファイル" カーネルrpmファイルを指定するには、そのファイルに読取り権限があり、そのrpmで |
|
詳細は、冗長モードを指定してください。 |
説明
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
が設定されます。
メトリック・タイプ#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
フラグを追加します。
例
例7-1では、コマンドは、プラグイン・サービス用に/humanresources
にマウントされたOracle ACFSファイル・システムを有効にします。
例7-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); }
例7-2では、コマンドは、プラグイン・サービス用に/humanresources
にマウントされたOracle ACFSファイル・システムを有効にします。
例7-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);
例7-3 FenumとGenumのペアからファイル・パスを解決するためのアプリケーション
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のmakefile。
この項の内容は次のとおりです。
Oracle ACFSタグ付けのエラー値
次に、失敗した場合のLinuxまたはSolarisのerrno
の値を示します。
-
EINVAL
- タグ名の構文が無効であるか、長すぎます。 -
ENODATA
- このファイルまたはディレクトリに対するタグ名が存在しません。 -
ERANGE
- 値のバッファは、戻り値を保持するには小さすぎます。 -
EACCES
- パスのパス接頭辞のディレクトリに対する検索権限が拒否されました。または、ファイル上でタグ名を読み取る権限がユーザーにありません。 -
ENAMETOOLONG
- ファイル名が長すぎます。 -
ENOENT
- パスのコンポーネントが存在しません。
acfsgettag
目的
Oracle ACFSファイルのタグ名に関連付けられた値を取得します。
構文
sb8 acfsgettag(const oratext *path, const oratext *tagname, oratext *value, size_t size, ub4 flags);
表7-4に、acfsgettag
コマンドで使用可能なオプションを示します。
表7-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
エラーを戻します。
例
例7-4に、acfsgettag
ファンクション・コールの使用例を示します。
例7-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);
表7-4に、acfslisttags
コマンドで使用可能なオプションを示します。
表7-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タグ付けのエラー値」を参照してください。
例
例7-5に、acfslisttags
ファンクション・コールの使用例を示します。
例7-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);
表7-6に、acfsremovetag
コマンドで使用可能なオプションを示します。
表7-6 acfsremovetagコマンドのオプション
オプション | 説明 |
---|---|
|
ファイルまたはディレクトリのパス名へのポインタを指定します。 |
|
通常のファイルまたはディレクトリに対する有効なタグ名の形式で、NULLで終了するOracle ACFSタグ名へのポインタを指定します。 |
|
将来の使用のために予約されています。 |
説明
acfsremovetag
ライブラリ・コールは、Oracle ACFSファイルのタグ名を削除します。戻り値は、ACFS_TAG_SUCCESS
またはACFS_TAG_FAIL
です。ACFS_TAG_FAIL
が戻されたときに取得する、オペレーティング・システム固有の詳細なエラー情報の値の詳細は、「Oracle ACFSタグ付けのエラー値」を参照してください。
例
例7-6に、acfsremovetag
ファンクション・コールの使用例を示します。
例7-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);
表7-7に、acfssettag
コマンドで使用可能なオプションを示します。
表7-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タグ名のすべてのエントリで同じです。
例
例7-7に、acfssettag
ファンクション・コールの使用例を示します。
例7-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 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 .
Oracle ACFSスナップショットベースのレプリケーションの構成
Oracle ACFSスナップショットベースのレプリケーションの要件については、この項で説明しています。
この項では、リリース12.2以上で使用可能なOracle ACFSスナップショットベースのレプリケーションを構成する方法について説明します。リリース12.2より前のOracle ACFSレプリケーションのインストールと同様に、スナップショットベースのレプリケーションの全体的な機能上の目標は、プライマリ・クラスタの更新がスタンバイ・クラスタにレプリケートされるようにすることです。ただし、スナップショットベースのレプリケーション・テクノロジは、プライマリ・ストレージ・ロケーションのスナップショットを使用し、連続するスナップショットの差分を、標準のssh
コマンドを使用してスタンバイ・ストレージ・ロケーションに転送します。リリース12.2より前のOracle ACFSレプリケーション機能では、プライマリ・クラスタとスタンバイ・クラスタ間の接続性を確保するために、Network Foundation Technologies (NFT)を中心としてOracleネットワーキング・テクノロジを基に、絶えず変更をレプリケートしました。
Oracle ACFSレプリケーションの設計および実装におけるこの変更により、レプリケーションの構成および使用方法に若干の相違が発生しています。たとえば、ssh
を使用するには、レプリケーションを実行するプライマリ・ノードとスタンバイ・ノードでホスト・キーおよびユーザー・キーを適切に設定する必要があります。
Oracle ACFSレプリケーションには、ロール・リバーサルおよびフェイルオーバー機能が用意されています。この機能は、プライマリ・クラスタとスタンバイ・クラスタの両方が必要に応じて相互に通信できるようにすることで構成できます。ロール・リバーサルでは、スタンバイがプライマリのロールを引き受け、プライマリがスタンバイになります。フェイルオーバーには、ロール・リバーサルまたは新しいプライマリが使用する新しいスタンバイの確立が含まれる場合があります。
この項では、次の項目について説明します。
関連項目:
-
Oracle ACFSレプリケーションの概要は、Oracle ACFSレプリケーションを参照してください
-
Oracle ACFSレプリケーション・コマンドの詳細は、レプリケーション用のOracle ACFSコマンドライン・ツールを参照してください
-
Oracle ASM権限の詳細は、Oracle Automatic Storage Management管理者ガイドを参照してください
Oracle ACFSレプリケーション・ユーザーの選択
レプリケーションの実行元のユーザーID (repluser)は、慎重に管理する必要があります。これは、レプリケートするファイルを探すためにプライマリをスキャンするユーザーであり、レプリケートされたファイルをスタンバイ上で作成、更新または削除するユーザーとなります。ssh
を使用している場合、ssh
は、レプリケーションに関与するスタンバイ・ノードでこのユーザーとしてログインします。
repluserとして選択したユーザーには、Oracle ASM管理権限が必要です。Oracleソフトウェアの初回インストール時にOracleインストーラに指定したユーザーは、通常は、必要なグループに属しているため、このユーザーをレプリケーション・ユーザーとして選択すると便利です。ここでの説明では、レプリケーション・ユーザーをrepluserとして識別しますが、選択した実際のユーザー名でrepluserを置き換えます。Oracle ACFS acfsutil
コマンドの実行の詳細は、「Oracle ACFSコマンドライン・ツールの使用について」を参照してください。
ノート:
プライマリ・クラスタとスタンバイ・クラスタの両方で、repluserに同じユーザーとグループのアイデンティティを指定する必要があります。また、ユーザー名と数値のuids
、およびグループ名と数値のgids
との間のマッピングは、プライマリ・クラスタとスタンバイ・クラスタの両方で同一である必要があります。 レプリケーションでの数値の転送はプライマリからスタンバイに対してのみ行われるため、両方のクラスタで数値が同じように使用されるようにするためにはこれが必須です。
Oracle ACFSレプリケーションでの転送方式の選択
Oracle Grid Infrastructureソフトウェアのバージョン23ai以降では、プライマリ・レプリケーション・サイトとスタンバイ・レプリケーション・サイトの間の通信用に新しい転送方式が導入されています。新しい転送方式は、セキュア・シェル(ssh)ではなくSecure Sockets Layer (SSL)に基づいています。
OL8/X64プラットフォームでは、ユーザーが、SSLベースのレプリケーションを使用するか、引き続きsshベースのレプリケーションを使用するかを選択できるようになりました。sshの使用は、引き続き十分にサポートされています。OL8/X64以外のプラットフォームでは、提供される転送方式はsshのみです。
使用する転送方式は、通常は、レプリケーションの開始時に選択します。ただし、既存のレプリケーション関係をsshベースからSSLベースに更新するためのサポートが提供されています。
SSLベースのレプリケーション
SSLベースのレプリケーションでは、新しい認証メカニズムおよびセキュアな転送メカニズムが提供されます。sshを使用したネットワークは、Posixソケットに置き換わります。sshのホスト・キーおよびユーザー・キーを使用した認証は、OpenSSLおよびOracleウォレットに置き換わります。暗号化およびメッセージ認証(HMAC)コードは、Intel IPPS暗号化プリミティブに置き換わります(それらを使用可能なプラットフォームの場合)。
ユーザーの観点から述べると、SSLベースのレプリケーションを使用する最大の利点は、簡略化された構成です。SSLベースのレプリケーションは、レプリケーションに使用するマシンごとにホスト・キーとユーザー・キーを設定し配布する必要はなく、かわりに、プライマリ・サイトとスタンバイ・サイトの間で共有される単一の資格証明セットを確立することによって実現されます。これは、コマンドライン・オプションを使用して簡単に実行でき、必要な場合は、手動でサイト資格証明をやり取りすることでも実現できます。
SSLベースのレプリケーションは、ほとんどのコンテキストにおいて、sshベースのレプリケーションよりもパフォーマンスが高くなります。
SSHベースのレプリケーション
23aiでのssh転送は、以前のすべてのリリースのスナップショットベース・レプリケーションで提供されていたのと同じ転送方式です。23aiでの機能拡張としてはキー設定アシスタントacfsreplssh
があり、これは、レプリケーションに使用するマシンのホスト・キーおよびユーザー・キーの構成を容易にするために使用できます。acfsreplssh
の使用をお薦めしますが、必須ではありません。
SSLベースのOracle ACFSレプリケーションの構成
SSLベースのOracle ACFSレプリケーションの構成
このトピックでは、リリース23ai以上で、OL8/X64プラットフォーム上でSSLベースのレプリケーションを構成する方法を説明します。必要な構成手順は、次に説明するように、2つのレプリケーション・サイトで1つの資格証明のセットが共有されるようにすることのみです。
レプリケーションの開始
SSLベースのレプリケーションの使用を指定するには、両方のacfsutil repl init
コマンドにオプション-T ssl
を付けます。付随するオプション-T ssh
により、sshベースのレプリケーションの使用を指定します。ssh
の使用はデフォルトであるため、この後者のオプションは通常は必要ありません。
資格証明の定義および配布
SSLベースのレプリケーションを使用するには、ユーザーが、プライマリ・レプリケーション・サイトとスタンバイ・レプリケーション・サイトの間で共有される資格証明を配布する必要があります。これは、sshベースのレプリケーションを構成する際にホスト・キーとユーザー・キーを設定することに似ています(ただし、はるかに簡単です)。
それらの資格証明は、X.509証明書と公開/秘密キー・ペアからなります。資格証明は、2つのレプリケーション・サイトうちの一方かで確立された後、もう一方のサイトにセキュアにコピーされます。したがって、SSLベースのレプリケーションでは認証に共有シークレット・モデルが使用され、レプリケーション関係の両側(つまり、プライマリ・サイトとスタンバイ・サイト)で、同じ資格証明が使用されます。資格証明はサイト全体が対象になるため、特定のサイト上のアクティブなすべてのレプリケーション・インスタンスで、同じ資格証明が使用されます。資格証明は、ローカル・サイトに資格証明がすでに存在する場合を除き、次のいずれかのコマンドで作成します:
acfsutil repl update
-o sslCreateCredentials
を使用した明示的な作成acfsutil repl init standby -T ssl
による暗黙的な作成cfsutil repl init primary -T ssl
による暗黙的な作成acfsutil repl update -T ssl
の使用による、sshベースのレプリケーションをSSLベースに更新する一環での暗黙的作成
acfsutil repl init standby
コマンドの例で示すように、スタンバイ・サイトで行うことをお薦めします:
$ acfsutil repl init standby -T ssl -u repluser /standbyFS
このコマンドでは、資格証明がスタンバイ・サイトに存在しない場合は資格証明が確立され、すでに存在する場合はその資格証明が再使用されます。資格証明が存在する場合にそれらをプライマリ・サイトに配布する方法としては次の3つがあります: - 最大限にセキュア - サイトAでエクスポートし、サイトBにセキュアにコピーし、サイトBでインポートする
- 非常にセキュア - コマンドラインで手動で資格証明の同期を開始する
- 非常にセキュア - 認証失敗時に自動で資格証明を同期する
エクスポート/インポートは、資格証明を配布するための最もセキュアな方法です。これがデフォルトです。管理者が資格証明をローカル・サイト上のエクスポート・ファイルにエクスポートし、選択したセキュアな方法("スニーカ・ネット"、scpなど)でそのファイルをリモート・サイトにコピーしてから、リモート・サイトでその資格証明をインポート(インストール)します。
$ acfsutil repl update -o sslPermitCredentialSync
その後、プライマリ・サイトで次のコマンドを使用します:
$ acfsutil repl update -o sslSyncCredentials -s standby_address
これにより、スタンバイ・サイトからそれらの資格証明をフェッチし、プライマリ・サイトでそれらをインポートします。 なお、前述のように資格証明の同期が有効になっている場合は、レプリケーションにおいてレプリケーション操作中に認証エラーが発生すると、自動資格証明同期が発生する可能性があります。これは、基本的には手動資格証明同期と同じですが、自動的かつシームレスに実行されます。
デフォルトでは、資格証明の同期は無効になっており、管理者が両方のサイトでそれを明示的に有効にした場合のみ発生します。資格証明の同期が許可されており、資格証明の同期が発生した場合は、同期が正常に完了すると資格証明の同期が自動的に無効になります。これは、"出入り自由"になり意図しない同期が起こる可能性を防ぐためです。
この例では、管理者が資格証明の転送に最大限にセキュアな方法(この場合は"スニーカ・ネット")を選び、リモート・サイトでそれらを手動でインストールします。boston-cluがスタンバイ・クラスタ、nashua-cluがプライマリ・クラスタであると仮定します。
$ acfsutil repl init standby -T ssl -u repluser /standbyFS
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
その後、管理者が自分の手で、セキュアなサム・ドライブをBostonからNashuaに移動します。クラスタnashua-cluで、管理者が、次のようなコマンドを使用してレプリケーションを開始します:
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials
$ acfsutil repl init primary -T ssl -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
この例では、手動で明示的に要求することで、レプリケーション初期化時にスタンバイ・サイト上の資格証明をプライマリ・サイトにコピーしインストールします。資格証明の転送が正常に完了すると、資格証明の同期が自動的に無効になり、後続のすべてのやり取りが、インストールした資格証明を使用して認証されるようになります。
$ acfsutil repl update -o sslPermitCredentialSync
クラスタnashua-cluで、管理者が、次のようなコマンドを使用して資格証明を同期させます:
$ acfsutil repl update -o sslPermitCredentialSync
$ acfsutil repl update -o sslSyncCredentials -s boston-clu
このシナリオでは、nashua-cluでの2番目のacfsutil repl update
コマンドにより、boston-cluから資格証明が同期されます。資格証明が同期されると、資格証明の同期が自動的に無効になります。これ以降のすべてのacfsutil repl init
コマンドでは、各サイトにインストールされた、それらの資格証明が使用されます。
T ssl
の追加により転送方式を指定して、通常どおりにレプリケーションを初期化できます。それは、まずスタンバイ上で初期化されます:
$ acfsutil repl init standby -T ssl -u repluser /standbyFS
次にプライマリ上で行われます:
$ acfsutil repl init primary -T ssl -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
この例では、acfsutil repl init
コマンドによって暗黙的に、レプリケーション初期化時にスタンバイ・サイト上の資格証明をプライマリ・サイトにコピーしインストールします。資格証明の転送が正常に完了すると、資格証明の同期が自動的に無効になり、後続のすべてのやり取りが、インストールした資格証明を使用して認証されるようになります。
$ acfsutil repl init standby -T ssl -o sslPermitCredentialSync -u repluser /standbyFS
クラスタnashua-cluで、管理者が、次のようなコマンドを使用してレプリケーションを開始します:
$ acfsutil repl init primary -T ssl -o sslPermitCredentialSync -i 10m -s repluser@boston-clu -m /standbyFS /primaryFS
このシナリオでは、acfsutil repl init primary
コマンドにより、認証エラーが内部で検出され、ユーザーによる操作を必要とせずに自動的に資格証明がboston-cluサイトと同期されます。資格証明が同期されると、資格証明の同期が自動的に無効になります。
なお、この例では、必要な場合はacfsutil repl init
コマンドラインに-o sslPermitCredentialSync
オプションを指定できることも示しています。これは、別個のacfsutil repl update
コマンドを使用してそのオプションを指定するのと同じです。
レプリケーションで使用されている資格証明が更新された場合は、前述のどの方法でも、更新された資格証明をリモート・サイトに配布できます。
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
これにより、ファイル内の資格証明を取得します。その後、リモート・サイトで、次のようなコマンドでそのファイルを使用します。
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials
これにより、その資格証明をインポートします。 $ acfsutil repl update -o sslPermitCredentialSync
その後、ローカル・サイトで次のコマンドを使用します:
$ acfsutil repl update -o sslSyncCredentials -s remote-address
これにより、リモート・サイトからそれらの資格証明をフェッチし、ローカル・サイトでそれらをインポートします。この操作が完了すると、資格証明の同期が自動的に無効になります。
$ acfsutil repl update -o sslPermitCredentialSync
その後は、ローカル・サイトで、レプリケーションで更新が検出される(つまり、認証エラーの受信)まで待つだけです。検出された時点で、資格証明が同期されます。この操作が完了すると、それ以降の同期は無効になります。 レプリケーションの既存のsshベース・インスタンスを、その転送方式としてSSLを使用するように更新できます。SSLを使用するように更新した後は、レプリケーションのそのインスタンスを、sshを使用するように戻すことができません。この更新は、acfsutil repl updateコマンドを使用して、プライマリ・クラスタとスタンバイ・クラスタの両方で実行します。
まずスタンバイ・クラスタ、次にプライマリ・クラスタを更新する必要があります。SSLベースのレプリケーションを指定しacfsutil repl init
を使用してレプリケーションを初期化するときと同じように、インポート/エクスポートを使用して、手動または自動で資格証明を作成し配布できます。
どの場合でも、資格証明が同期されると、かわりにSSLがそのレプリケーション・インスタンスの転送方式となります。その時点までは、転送方式としてsshが使用されたままです。
$ acfsutil repl update -T ssl /standbyFS
$ acfsutil repl update -o sslExportCredentials=/mySecureThumbDrive/mycredentials
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明をインポートし、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslImportCredentials=/mySecureThumbDrive/mycredentials
$ acfsutil repl update -T ssl /primaryFS
$ acfsutil repl update -o sslPermitCredentialSync
$ acfsutil repl update -T ssl /standbyFS
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明の同期を有効にし、SSLベースのレプリケーションに更新し、最後に、資格証明の同期を実行します:
$ acfsutil repl update -o sslPermitCredentialSync
$ acfsutil repl update -o sslSyncCredentials -s boston-clu
$ acfsutil repl update -T ssl /primaryFS
$ acfsutil repl update -o sslPermitCredentialSync
$ acfsutil repl update -T ssl /standbyFS
次に、プライマリ・クラスタnashua-cluで、ユーザーがそれらの資格証明の同期を有効にし、SSLベースのレプリケーションに更新します:
$ acfsutil repl update -o sslPermitCredentialSync
$ acfsutil repl update -T ssl /primaryFS
この場合は、レプリケーションで、資格証明を同期する必要性が検出され、自動的にその操作が実行されます。 Oracle ACFSレプリケーションで使用するためのssh
の構成
このトピックでは、リリース12.2以上で使用可能なOracle ACFSスナップショットベースのレプリケーションを使用するためにssh
を構成する方法について説明します。構成は、次の2つの方法のどちらかで実行できます:
- キー設定アシスタント
acfsreplssh
を使用すると、必要なユーザー・キーおよびホスト・キーを簡単に設定できます - または、必要なキーを手動で構成することもできます
ssh
を使用可能である必要があります。これは、sshのパスワード不要操作を両方向で有効にする必要があるということです。つまり、sshで手動操作なしでローカルからリモート・クラスタに接続できるように、ホスト・キーとユーザー・キーを定義する必要があります。レプリケーションを使用する前に構成する必要があるsshキーを次に示します:
- ローカル・クラスタの各ノード(プライマリとスタンバイの両方)で定義されている、repluser用公開キーが、リモート・クラスタ(スタンバイとプライマリの両方)の各ノード上のrepluserの
authorized_keys2
ファイル内に存在する必要があります。 - 厳密なホスト・キー・チェックを無効にしてレプリケーションが構成されている場合を除き、リモート・クラスタの各ノードのホスト・キーが、ローカル・クラスタの各ノード上の
known_hosts
ファイル内に存在する必要があります。
キー設定アシスタントの使用によるsshの構成
sshキー設定アシスタントacfsreplssh
を使用すると、Oracle ACFSスナップショットベース・レプリケーションの転送方式としてssh
を使用する場合に必要な、ホスト・キーとユーザー・キーを構成、検証または削除できます。このトピックでは、acfsreplssh
を使用して一方向(プライマリからスタンバイ)のレプリケーション用にsshを構成する方法について説明します。sshの構成を完成させるには、これらの手順を、2回目はプライマリとスタンバイのロールを逆にして実行する必要があります。
簡潔に示すために、ローカル・クラスタとリモート・クラスタの観点から説明します。このコマンドを、1回目はプライマリをローカル・クラスタとして使用して実行し、2回目はスタンバイをローカル・クラスタとして使用して実行します。
コマンドの概要
acfsreplssh
のコマンドライン・インタフェースは次のようになります:
acfsreplssh{ configure | verify | remove }
[-v] [-m]
[-p remote_password]
[-V remote_vip]
[-o sshStrictKey=ynvalue]
{ -c remote_cluster | remote_host1 [remote_hostn...] }
ここでのコマンドライン・オプションには次の意味があります: -c remote_cluster
ネットワーク・エンドポイントの名前としてremote_cluster
を使用してリモート・クラスタに接続し、次に、リモート・クラスタでacfsutil cluster infoコマンドを実行してクラスタ・メンバーを特定します。メンバーとして示された各ホスト名が、その後、コマンドラインで直接remote_hostとして指定されたかのように処理されます。
-m
"モックアップ・モード"で実行します。通常動作の場合にそのコマンドで実行される操作が表示されます。ただし、どの操作も実行はされません。-vとともに使用すると、発生する内容をより詳しく確認できます。
-o sshStrictKey=ynvalue
ホスト・キーがすでに存在している必要があるかどうかを指定します。ynvalueは、"y"で始まる場合は"yes"を表し、"n"で始まる値は"no"を表します。configure
コマンドの場合、"yes"はホスト・キーがすでに存在している(このコマンドではそれらを構成しない)ことを意味し、"no"は、リモート・ノードによって提示されたホスト・キーをこのコマンドで受け入れる(および構成する)ことを意味します。verify
コマンドの場合は、このオプションは無効であり、すべてのリモート・ノードにホスト・キーがすでに存在している必要があります。(verify
コマンドではキーの追加や変更は実行されません。)このオプションのデフォルト値は"no"です(つまり、configure
コマンドでは、提示されたすべてのホスト・キーが構成されます)。ホスト・キー・チェックの詳細は、acfsutil repl init
コマンドおよびacfsutil repl update
コマンドの-o sshStrictKey
オプションを参照してください。
-p
remote_password
リモート・クラスタでrepluserとしてログインする際に使用するパスワードとして、remote_passwordを指定します。なお、この方法によるコマンドラインでのパスワード指定は、セキュアではないため、セキュリティに関する影響がない場合のみ実行するようにしてください。-pを指定しなかった場合は、acfsreplssh
によってリモート・パスワードの入力が求められます(呼び出しごとに1回のみ)。
-v
"冗長モード"で実行します。このコマンドの実行の詳細が表示されます。
-V remote_vip
remote_hosts
のセットからなる、リモート・クラスタの既存のVIPとして、remote_vipを指定します。これは、remote_vip
が、コマンドラインで指定されたremote_host
ごとに、ローカルのknown_hosts
ファイル内の行に追加されるということです。
ノート:
下のすべての例では、-p
が指定されていません。つまり、それらでは、コマンドが実行されるたびに、acfsreplssh
によってリモート・クラスタのパスワードの入力が求められることになります。
アシスタントは、単一リモート・クラスタのホスト・キーおよびユーザー・キーに対して機能するには、ローカル・クラスタの各ノードで実行する必要があります。これはrepluserとして起動する必要があります。アシスタントにより、確認のために起動元ユーザーのIDが出力され、次に、そのユーザー用のキーが設定されて、アシスタントが実行されているノードと、指定されたリモート・クラスタとの間のレプリケーションが可能になります。
リモート・クラスタ内のホストを特定するには、次のどちらかを実行します:-c
remote_clusterを指定してリモート・クラスタ内のネットワーク・エンドポイントを指定します。これは、クラスタ・メンバーを取得するために問い合せられることになります。または、
- コマンドラインでremote_hostとしてリモート・クラスタ内の各ホストを指定します。
各ローカル・ホストでのssh
の構成
acfsreplssh configure
コマンドは、レプリケーションに必要になるsshキーを構成するために使用します。このコマンドは、レプリケーションを初めて設定する際に呼び出すか、後のどこかの時点で呼び出すことができます。このコマンドにより、レプリケーションに必要になるすべてのキーが、関係するクラスタに現在も存在するようにします。acfsreplssh
configure
の各実行では(複数の連続した実行の場合も同様)、必要な場合のみユーザー・キーまたはホスト・キーが追加され、既存のキーは保持されます。
各ホストで、acfsreplssh
により、repluserの現在のキー関連データが、変更される前に保存されます(すでにこれが完了している場合を除く)。つまり、ディレクトリ~repluser/.ssh
の既存のコピーは、接尾辞.acfsreplssh.backup
が付いた名前に変更されます(この接尾辞が付いたバックアップ・ディレクトリがすでに存在する場合を除く)。作成されたディレクトリは、権限0400 (所有者のみが読取り可能)を付与され、repluserが所有します。
次に例を示します。たとえば、n1からn4までの4つのノードがあるプライマリ・クラスタbosc26があるとします。また、n1とn2という2つのノードがあるスタンバイ・クラスタchic26があります。クラスタごとにbosc26vipおよびchic26vipというSCAN VIPを定義してあり、各クラスタのSCAN VIPをレプリケーションのネットワーク・エンドポイントとして使用する予定です。コマンドで各リモート・ホスト名を指定する必要がなくなるように、-c
を使用し、その値としてそれらのVIP名を指定します。
各クラスタで定義されているVIPを使用して、レプリケーションに必要になる一連のすべてのキーを構成するには、次のようにacfsreplssh
を実行します。
$ acfsreplssh configure -V chic26vip -c chic26vip
次に、chic26の各ノードで次のコマンドを実行します:
$ acfsreplssh configure -V bosc26vip -c bosc26vip
前述の最初のコマンドでは、このコマンドが実行されるbosc26内のホストで現行ユーザー(repluserであると仮定)の公開キーが構成され(キーがまだ存在しない場合)、chic26内の各ホスト上の現行ユーザーのauthorized_keys2
ファイルにそのキーが追加されます。その後、bosc26ホスト上の現行ユーザーのknown_hosts
ファイルに各chic26ホストのホスト・キーが追加されます(-o sshStrictKey=yes
を指定した場合を除く)。このオプションを指定する場合は、必要なすべてのホスト・キーがbosc26ホストにすでに存在している必要があります。
これらのコマンドでは、それぞれchic26vipまたはbosc26vipを使用してacfsutil cluster infoが実行されて、リモート・クラスタのメンバーが決定されます。
2番目のコマンドでは、同じ操作が逆方向で実行されます。つまり、このコマンドでは、このコマンドが実行されるchic26内のホストで現行ユーザーの公開キーが構成され(キーがまだ存在しない場合)、bosc26内の各ホスト上の現行ユーザーのauthorized_keys2
ファイルにそのキーが追加されます。その後、chic26ホスト上の現行ユーザーのknown_hosts
ファイルに各bosc26ホストのホスト・キーが追加されます(-o sshStrictKey=yes
を指定した場合を除く)。このオプションを指定する場合は、必要なすべてのホスト・キーがchic26ホストにすでに存在している必要があります。
-c
を使用し、その値としてリモート・ノード名の1つを指定します。まず、bosc26の各ノードで次のコマンドを実行します:
# acfsreplssh configure -c chic26n1
次に、chic26の各ノードで次のコマンドを実行します: # acfsreplssh configure -c bosc26n1
これらのコマンドでは、それぞれchic26n1またはbosc26n1でacfsutil cluster info
が実行されて、リモート・クラスタのメンバーが決定されます。
各ローカル・ホストでのssh構成の検証
acfsreplssh verify
コマンドを使用すると、既存の一連のキーを検証できます。このコマンドは、キーの追加や変更は実行せず、既存のキーの使用を試みるだけです。レプリケーションの特定のインスタンスをサポートするために存在しているキーを検証するには、これらのキーを構成する際に使用したのと同じ形式のコマンドラインを使用し、それにverify
キーワードを指定します。
各クラスタで定義されているVIPを使用して、レプリケーションに必要になる一連のすべてのキーを検証するには、次のようにacfsreplssh
を実行します。
# acfsreplssh verify -V chic26vip -c chic26vip
次に、将来実行される可能性がある現行のスタンバイから現行のプライマリへのレプリケーションに必要なキーを検証するには、chic26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -V bosc26vip -c bosc26vip
または、VIPを使用せずに、レプリケーションに必要な一連のすべてのキーを検証するには、次のようにacfsreplssh
を実行します。まず、プライマリ・クラスタからスタンバイ・クラスタへのレプリケーションに必要なキーを検証するには、bosc26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -c chic26n1
次に、将来実行される可能性がある現行のスタンバイから現行のプライマリへのレプリケーションに必要なキーを検証するには、chic26の各ノードで次のコマンドを実行します:
# acfsreplssh verify -c bosc26n1
各ローカル・ホストでのssh
構成情報の削除
たとえばユーザーがacfsutil repl update
コマンドでrepluserの値を更新した場合には、acfsreplssh remove
コマンドを使用すると既存の一連のキーを削除できます。acfsreplssh remove
コマンドは、キーを削除する各ローカル・ホストで実行する必要があります。このコマンドでは、指定したリモート・クラスタに関連付けられているキーも削除されます。以前のrepluserをサポートするために存在している、特定のローカル・ホスト上のキーを削除するには、そのホスト上のそれらのキーを構成する際に使用したのと同じ形式のコマンドラインを使用し、それに、configure
のかわりにremove
キーワードを指定します。
たとえば、前述の、VIPの使用を伴うレプリケーションの例に戻る場合は、次のようにacfsreplssh
を実行することで、各クラスタで定義されているVIPを使用して、以前に構成した一連のキーを削除します。
$ acfsreplssh remove -V chic26vip -c chic26vip
次に、chic26の各ノードで次のコマンドを実行します:
$ acfsreplssh remove -V bosc26vip -c bosc26vip
ssh
の手動構成
このトピック内の手順では、一方向(プライマリからスタンバイ)のレプリケーション用にssh
を構成するために必要な、手動での手順を説明します。ssh
を完全に構成するには、2回目にプライマリとスタンバイのロールを逆転して手順を実行する必要があります。1回目にステップを実行するときは、プライマリ・クラスタとスタンバイ・クラスタ用に記述されているステップを実行します。2回目には、プライマリ・ロールとスタンバイ・ロールを入れ替えます。プライマリ・クラスタで必要と示されているステップをスタンバイ・クラスタで実行し、スタンバイ・クラスタで必要と示されているステップをプライマリ・クラスタで実行します。2回実行する必要がある手順は、以下で説明しています。
必要なすべての手順を完了したら、「ssh関連のキー構成の検証」の手順を使用して、両方向でssh
が正しく構成されていることを確認できます。
Oracle ACFSレプリケーション用のキーの配布
Oracle ACFSレプリケーション用のキーの配布プロセスには、プライマリ・クラスタからの公開キーの取得、スタンバイ・クラスタ用のホスト・キーの取得、ssh
関連ファイル用に権限が正しく構成されていることの確認、必要に応じてsshd
の構成、そして最後にssh
構成の検証が含まれます。
ノート:
ホスト・キーを作成するときは、必ず完全修飾ドメインホスト名とローカル・ホスト名の両方のキーを作成してください。
プライマリ・クラスタからのrepluser用の公開キーの取得
プライマリ・クラスタの各ノードに定義されているrepluser用の公開キーを、スタンバイ・クラスタの各ノードのrepluserが認識している必要があります。
このキーを認識させるには、各スタンバイ・ノードに~repluser/.ssh
ディレクトリが存在する必要があります。このディレクトリが存在しない場合は、repluser専用のアクセス権で作成します。.ssh
ディレクトリに対するls
コマンドの出力が次のようになっていることを確認します。
repluser@standby $ ls -ld ~/.ssh drwx------ 2 repluser dba 4096 Jan 27 17:01 .ssh
repluserの公開キー・ファイルが特定のプライマリ・ノードに存在する場合は、レプリケーションが実行されるスタンバイの各ノードにrepluserとしてログインすることを認可された一連のキーに、その内容を追加します。各スタンバイ・ノードで、必要に応じて~repluser/.ssh/authorized_keys2
ファイルを作成し、その最後にキーを追加します。
公開キー・ファイルが存在しない場合は、repluserとして次のコマンドを実行してプライマリで公開キーと秘密キーのペアを生成します。
$ ssh-keygen -t rsa
コマンドから発行される各プロンプトに応えて、[Enter]キーを押します。結果として生成された.pub
ファイルを各スタンバイ・ノードにコピーします。
repluser用の同じ公開/秘密キー・ペアをプライマリ・クラスタ内のすべてのノードで共有することも、プライマリ・ノードごとに異なるキー・ペアを設定することもできます。プライマリ・クラスタ内のすべてのノードで同じ公開キーがrepluserに対して有効な場合、スタンバイ・クラスタの各ノードで、~repluser/.ssh/authorized_keys2
ファイルにそのキーのみを追加する必要があります。各プライマリ・ノードに独自のrepluser用の公開キーがある場合は、すべての公開キーをそのファイルに追加する必要があります。いずれの場合も、スタンバイの特定のノードで更新したauthorized_keys2
ファイルをクラスタの他のノードにコピーすることで、作業を最小化できます。
スタンバイ・クラスタ用のホスト・キーの取得
レプリケーションが実行される各スタンバイ・ノード用のホスト・キーを、レプリケーションが実行される各プライマリ・ノードで認識させる必要があります。適切なキーを生成する方法の1つとして、各プライマリ・ノードから各スタンバイ・ノードに対してrepluserとして手動でssh
を実行します。適切なホスト・キーがまだ認識されていない場合は警告が表示され、ssh
を有効にしてキーを追加できます。
次に、ホスト・キーを取得する例を示します。
[repluser@primary data]$ ssh repluser@standby date The authenticity of host 'standby (10.137.13.85)' can't be established. RSA key fingerprint is 1b:a9:c6:68:47:b4:ec:7c:df:3a:f0:2a:6f:cf:a7:0a. Are you sure you want to continue connecting (yes/no)?
yes
と応答すると、ssh
の設定が完了します。ホスト・スタンバイ用のホスト・キーが、ホスト・プライマリのrepluserユーザー用のknown_hosts
ファイル(~repluser/.ssh/known_hosts
)に格納されます。
スタンバイ・ノードに対するホスト・キーの設定が特定のプライマリ・ノードで完了したら、仮想IPアドレス(VIP)を使用してスタンバイ・クラスタと通信する場合は、追加のステップを実行する必要があります。VIP名またはアドレスを、スタンバイ・クラスタ内のホストを参照するknown_hosts
ファイルの各行の先頭に追加する必要があります。たとえば、名前がstandby12_vip
のVIPを使用し、スタンバイを参照する次の2行がknown_hosts
ファイルに含まれる場合、
standby1,10.242.20.22 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3pM2YTd4UUiEWEoCKDGgaTgsmPkQToDrdtU+JtVIq/96muivU BaJUK83aqzeNIQkh+hUULsUdgKoKT5bxrWYqhY6AlTEqNgBHjBrJt9C73BbQd9y48jsc2G+WQWyuI/ +s1Q+hIJdBNMxvMBQAfisPWWUcaIx9Y/JzlPgF6lRP2cbfqAzixDot9fqRrAKL3G6A75A/6TbwmEW07d1zqOv l7ZGyeDYf5zQ72F/V0P9UgMEt/5DmcYTn3kTVGjOTbnRBe4A4lY4rVw5c+nZBDFre66XtORfQgwQB5ztW/Pi 08GYbcIszKoZx2HST9AZxYIAgcrnNYG2Ae0K6QLxxxScP standby2,10.242.20.23 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIszcjzNtKN03SY8Kl846skFTVP1HF/ykswbmkctEjL6KTWTW+NR U4MGbvkBqqdXxuPCR7aoGO2U3PEOg1UVf3DWUoux8IRvqKU+dJcdTibMFkDAIhTnzb14gZ/lRTjn+GYsuP5 Qz2vgL/U0ki887mZCRjWVL1b5FNH8sXBUV2QcD7bjF98VXF6n4gd5UiIC3jv6l2nVTKDwtNHpUTS1dQAi+1D tr0AieZTsuxXMaDdUZHgKDotjciMB3mCkKm/u3IFoioDqdZE4+vITX9G7DBN4CVPXawp+b5Kg8X9P+08Eehu tMlBJ5lafy1bxoVlXUDLVIIFBJNKrsqBvxxxpS7
VIPを使用できるようにするには、次のようにこの2行を変更します。
standby12_vip,standby1,10.242.20.22 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3pM2YTd4UUiEWEoCKDGgaTgsmPkQToDrdtU+JtVIq/96muivU BaJUK83aqzeNIQkh+hUULsUdgKoKT5bxrWYqhY6AlTEqNgBHjBrJt9C73BbQd9y48jsc2G+WQWyuI/ +s1Q+hIJdBNMxvMBQAfisPWWUcaIx9Y/JzlPgF6lRP2cbfqAzixDot9fqRrAKL3G6A75A/6TbwmEW07d1zqOv l7ZGyeDYf5zQ72F/V0P9UgMEt/5DmcYTn3kTVGjOTbnRBe4A4lY4rVw5c+nZBDFre66XtORfQgwQB5ztW/Pi 08GYbcIszKoZx2HST9AZxYIAgcrnNYG2Ae0K6QLxxxScP standby12_vip,standby2,10.242.20.23 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIszcjzNtKN03SY8Kl846skFTVP1HF/ykswbmkctEjL6KTWTW+NR U4MGbvkBqqdXxuPCR7aoGO2U3PEOg1UVf3DWUoux8IRvqKU+dJcdTibMFkDAIhTnzb14gZ/lRTjn+GYsuP5 Qz2vgL/U0ki887mZCRjWVL1b5FNH8sXBUV2QcD7bjF98VXF6n4gd5UiIC3jv6l2nVTKDwtNHpUTS1dQAi+1D tr0AieZTsuxXMaDdUZHgKDotjciMB3mCkKm/u3IFoioDqdZE4+vITX9G7DBN4CVPXawp+b5Kg8X9P+08Eehu tMlBJ5lafy1bxoVlXUDLVIIFBJNKrsqBvxxxpS7
最終的に、プライマリ・クラスタのこの1つ目のノードで実行されたホスト・キーの構成は、プライマリ・クラスタ内のすべてのノードで実行する必要があります。前述の手順の結果またはそれに相当するものが各プライマリ・ノードに存在する必要があります。この構成を実現するのに必要な手作業を最小化する方法の1つとして、プライマリ・クラスタのノードの1つでknown_hosts
ファイルを更新した後、更新後のファイルをクラスタの他のノードにコピーします。
ノート:
デフォルトでは、レプリケーションにより、ssh
による厳密なホスト・キー・チェックが有効になり、ssh
の実行時にプライマリ・ノードが目的のスタンバイ・ノードまたはクラスタに必ず接続されます。しかし、プライマリ・クラスタとスタンバイ・クラスタがプライベート・ネットワークで通信する場合など、このチェックが確実に不要である場合は、ssh
による厳密なホスト・キー・チェックの使用を無効にできます。厳密なホスト・キー・チェックの無効化の詳細は、acfsutil
repl
init
primary
コマンドの-o sshStrictKey=no
オプションを参照してください。厳密なホスト・キー・チェックが無効になっている場合、ホスト・キーの設定は不要です。acfsutil
repl
init
コマンドの詳細は、「acfsutil repl init」を参照してください。
ssh関連ファイルに対する権限に関するノート
設定したキーでssh
が機能するには、repluserの.ssh
ディレクトリおよびそのディレクトリ内にある一部のファイルについて、各ノードで権限が適切に設定されていることを確認する必要があります。
各.ssh
ディレクトリとそのディレクトリ内のキー・ファイルに付与する必要がある権限の詳細は、ssh(1)
マニュアル・ページのFILES
に関する項など、ssh
実装のドキュメントを参照してください。
sshdの構成に関するノート
レプリケーションの使用を開始すると、ssh
がレプリケーション操作を実行するために頻繁に起動されます。一部のプラットフォームでは、ssh
接続が確立されるたびにsyslog
または同様の機能を使用してメッセージを記録するように、ssh
daemon sshd
を構成することもできます。これを回避するには、サーバー構成ファイル/etc/ssh/sshd_config
を変更してロギングの頻度を低く指定することができます。ロギングを制御するパラメータは、LogLevel
です。接続メッセージは、INFO
レベルで発行されます。ERROR
など、頻度がより低いLogLevel
設定にすると、それらのメッセージは抑制されます。たとえば、次の行をファイルに追加することで、ログ・メッセージを抑制できます。
LogLevel ERROR
ssh関連のキー構成の検証
プライマリ・クラスタとスタンバイ・クラスタの両方でssh
用のホスト・キーおよびユーザー・キーを設定したら、acfsutil
repl
info
-c
-u
コマンドを使用してキーを検証できます。このコマンドは、それぞれのクラスタの各ノードでrepluserとして実行します。ローカル・クラスタが今後のレプリケーションの実行に使用する可能性があるリモート・クラスタのすべてのホスト名またはアドレスを引数として取ります。
VIPを使用せずにリモート・クラスタに接続している場合は、特定のレプリケーション関係について、リモート・ホスト名またはリモート・アドレスを1つのみacfsutil
repl
init
primary
に指定します。ただし、関係に他のリモート・ホスト・アドレスが今後かかわる可能性がある場合は、acfsutil repl info -c -u
コマンドの実行時に、全リモート・アドレスを指定します。
VIPを使用してリモート・クラスタに接続している場合は、VIPがアクティブな全リモート・ホストの名前またはホスト固有のアドレスを指定する必要があります。VIP名、またはVIPに関連付けられているアドレスを指定しないでください。レプリケーションでssh
を使用してVIPに接続する場合、戻されるホスト・キーは、VIPが現在アクティブなホストに関連付けられているキーです。この場合のssh
では、個々のリモート・ノードのホスト名またはアドレスのみが使用されます。
プライマリ・クラスタの各ノードで実行する検証コマンドの形式は次のとおりです。
$ acfsutil repl info -c -u repluser standby1 [standby2 ...] [snap_shot@]primary-mountpoint
このコマンドで、standbyn
にはスタンバイ・クラスタのホスト名またはアドレスを指定します。検証コマンドは、ユーザーrepluserがssh
を使用して、レプリケーションの初期化と同じ方法で、指定された各スタンバイのホスト名またはアドレスに接続できることを確認します。standby12_vip
などのVIPを使用してクラスタに接続している場合は、同じコマンド形式を使用します。VIPの名前を指定しないでください。
厳密なホスト・キー・チェックを無効にする予定の場合は、-o sshStrictKey=no
オプションをコマンドラインに追加して、このチェックをスキップできます。
プライマリ・クラスタの各ノードがスタンバイ・クラスタのすべてのノードに接続できることを確認したら、検証コマンドを再実行してください。今度は、スタンバイ・クラスタの各ノードでコマンドを実行します。次の形式を使用して、プライマリ・クラスタのすべてのノードのホスト名またはIPアドレスを指定します。
$ acfsutil repl info -c -u repluser primary1 [primary2 ...] [snap_shot@]standby-mountpoint
このコマンドで、primaryn
にはプライマリ・クラスタのホスト名またはアドレスを指定します。
Oracleパッチ適用とOracle ACFS
この項では、グリッド・インフラストラクチャ環境でのOracle ACFSを使用したパッチ適用について説明します。
Oracle ACFSパッチ適用の概要
Oracle ACFSは、Oracle Grid Infrastructureの一部としてインストールされます。ただし、Oracle ACFSは、Linux上の/lib/modules
や/sbin
などの様々なシステムの場所から実行されます。
Oracle ACFSは、Oracle Grid Infrastructureの配信およびパッチ・メカニズム(OUIおよびOPatch)と統合されます。配信メカニズム(Oracleリリース、Oracleパッチセット、Oracleリリース更新またはOracle個別パッチ)に関係なく、Oracle ACFSコンテンツはパッチで配信されます。
Oracleゼロ・ダウンタイムのグリッド・インフラストラクチャ・パッチ適用を使用せずにOracle Grid Infrastructureを更新すると、Oracle ACFSもシステムの場所で更新され、Oracle Gridソフトウェアのシームレスな操作が保証されます。更新時(リリース、リリース更新、パッチセットまたは個別パッチに関係なく)、Oracle Clusterwareスタックはローカル・ノードで停止され、サービスは他のノードに移行されます。その後、Oracle Gridソフトウェアにパッチが適用され、サービスがローカル・ノードで再起動されます。
Oracleゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用しないパッチ適用
パッチ操作中、まずOracle ACFSソフトウェアはOPatchまたはOUIファイル配置操作によってGridホームで更新され、その後Oracle Clusterwareの停止中に適切なシステムの場所に移動されてメモリーにロードされます。Oracle Clusterwareの再起動には、オペレーティング・システム(OS)カーネルでOracle ACFSを更新できるように、OSカーネル参照を解放するという副作用があります。
ゼロ・ダウンタイムのOracle Grid Infrastructureを使用したパッチ適用
ゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用すると、Oracle Gridホーム内のOracle Grid Infrastructureユーザー領域バイナリのみにパッチが適用されます。Oracle Gridホームから実行されるコマンドは、すぐに最新バージョンを使用します。ACFS、AFD、OLFS、OKA OSシステム・ソフトウェア(OSカーネル・モジュールおよびシステム・ツール)など、Oracle Gridホーム外にインストールされるOracle Grid Infrastructureコンポーネントは、Gridホームで更新されますが、システムの場所にはインストールされません。パッチ・バージョンより前のバージョンが引き続き実行されます。パッチが適用されると、OPatchインベントリにOPatchインベントリの新しいパッチ番号が表示されます。ただし、実行中のソフトウェアにはこれらの変更は含まれず、Gridホームで使用可能なソフトウェアのみが含まれます。新しく使用可能になったソフトウェアがメモリーにロードされ、付属するユーザー・ツールがシステムの場所にコピーされるまで、Oracle Grid Infrastructureホームにある使用可能な修正は利用されません。
実行およびインストールされているOracle ACFSシステム・ソフトウェアを確認するには、次のコマンドを使用できます。
-
crsctl
query
driver
activeversion
-all
このコマンドは、クラスタのすべてのノード上のOracle ACFSのアクティブ・バージョンを表示します。アクティブ・バージョンは、システムに現在ロードされて実行されているOracle ACFSドライバのバージョンです。これは、ACFSシステム・ツールのバージョンも暗黙的に示します。18c以降で使用可能な
crsctl
query
コマンドは、クラスタのすべてのノードのデータを表示します。次の例では、19.4がOracleホームで使用可能ですが、19.2が現在実行中のバージョンです。OPatch
lsinventory
により、19.4がパッチ適用済バージョンとしてレポートされます。Oracle Grid Infrastructure OSドライバは19.2のみを実行しています。crsctl query driver activeversion -all Node Name : node1 Driver Name : ACFS BuildNumber : 200114 BuildVersion : 19.0.0.0.0 (19.2.0.0.0)
-
crsctl
query
driver
softwareversion
-all
このコマンドは、Oracle Gridホームに現在インストールされているOracle Grid Infrastructureソフトウェアの使用可能なソフトウェア・バージョン(および拡張機能別にOracle ACFSソフトウェアの使用可能なソフトウェア・バージョン)を表示します。18c以降で使用可能な
crsctl
query
コマンドは、クラスタのすべてのノードのデータを表示します。crsctl query driver softwareversion -all Node Name : node1 Driver Name : ACFS BuildNumber : 200628 BuildVersion : 19.0.0.0.0 (19.4.0.0.0)
-
acfsdriverstate
version
-v
このコマンドは、ローカル・ノードで実行中のOracle ACFSモジュールに関する全情報を表示します。ACFS-9548およびACFS-9547メッセージには、Oracle Grid Infrastructureホームで使用可能なOracle ACFSソフトウェアのバージョンが表示されます。
acfsdriverstate
は、ローカル・ノードについてのみをレポートします。バグ番号は、個別パッチの実行時にのみ使用可能です。acfsdriverstate version -v ACFS-9325: Driver OS kernel version = 4.1.12-112.16.4.el7uek.x86_64. ACFS-9326: Driver build number = 200114. ACFS-9212: Driver build version = 19.0.0.0.0 (19.2.0.0.0). ACFS-9547: Driver available build number = 200628. ACFS-9548: Driver available build version = 19.0.0.0.0 (19.2.0.0.0) ACFS-9549: Kernel and command versions. Kernel: Build version: 19.0.0.0.0 Build full version: 19.2.0.0.0 Build hash: 9256567290 Bug numbers: NoTransactionInformation Commands: Build version: 19.0.0.0.0 Build full version: 19.2.0.0.0 Build hash: 9256567290 Bug numbers: NoTransactionInformation
Oracle Grid Infrastructureファイルの更新
Oracle Clusterwareスタックが停止し、Oracle ACFSドライバ・モジュールが更新されるまで、Oracle ACFSの修正はメモリーにロードされません。Oracle ACFSの修正をシステム・メモリーにロードするプロセスにより、Oracle ACFS操作に必要なツールもシステムの場所にインストールされます。
次の手順のいずれかを実行できます。
-
Oracle ACFSの修正をメモリーおよびシステムの場所にロードするには、ノードごとに次のコマンドを発行する必要があります。
crsctl
stop
crs
-f
ローカル・ノード上のCRSスタックおよびすべてのアプリケーションを停止します
root.sh
-updateosfiles
システム上のOracle ACFSおよびその他のOracle Grid Infrastructureカーネル・モジュールを最新バージョンに更新します
crsctl
start
crs
-wait
ノードでCRSを再起動します
-
あるいは、カーネル・バージョンを変更してノードを再起動すると、新しいドライバが自動的にロードされ、新しいシステム・ツールがシステム・ディレクトリにインストールされます。クラスタ内のすべてのノードがカーネル・バージョンを同時に変更するものとします。
これらのイベントのいずれかが発生すると、crsctl
query
activeversion
およびcrsctl
query
softwareversion
コマンドによって同じ情報がレポートされます。ロード済で実行中のオペレーティング・システム(OS)ソフトウェアは、Oracle Grid Infrastructureホームで使用可能な最新のものと同じです。Oracle ACFSパッチ適用の検証の説明に従って、他のOracle ACFSバージョンのコマンドを実行できます。
Oracle ACFSパッチ適用の検証
標準のOPatchパッチを使用してOracleリリース更新およびOracleパッチを適用する場合、インベントリにはGrid Infrastructureホームおよびシステムにインストールされている内容が正確に反映されます。たとえば:
[grid@racnode1]$ opatch lsinventory ... .. Oracle Grid Infrastructure 19c 19.0.0.0.0 There are 1 products installed in this Oracle Home. Interim patches (5) : Patch 30501910: applied on Sat Mar 07 15:42:08 AEDT 2020 Unique Patch ID: 23299902 Patch description: "Grid Infrastructure Jan 2020 Release Update : 19.4.0.0.200628 (30501910)" Created on 28 Dec 2019, 10:44:46 hrs PST8PDT Bugs fixed:
lsinventory
の出力例では、OPatch RUおよび適用されるその他のパッチと、バグ番号およびその他の情報をリストしています。これらのパッチはGrid Infrastructureホームに適用されます。通常のパッチ適用操作では、オペレーティング・システム(OS)の場所にも適用され、メモリーにロードされるため、Oracle Grid InfrastructureのOSシステム・ソフトウェアの修正がGrid Infrastructureホームと同期されます。ただし、ゼロ・ダウンタイムのグリッド・インフラストラクチャ・パッチ適用を使用する場合、システムにインストールされているOracle Grid Infrastructureシステム・ソフトウェアの内容(Oracle ACFSなど)は同時に更新されません。
crsctl
query
driver
およびacfsdriverstate
コマンドを使用して、インストールされているOracle Grid Infrastructureシステム・ソフトウェア・レベルがGrid Infrastructureホームのソフトウェア・レベルと同じかどうかを検証できます。Oracle ACFSパッチ適用の概要のゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用に関する説明を参照してください。
ゼロ・ダウンタイムのOracle Grid Infrastructureパッチ適用を使用せずに適用されたパッチ適用および更新操作の場合、アクティブ・バージョンとソフトウェア・バージョンは常に同じである必要があります。
更新されたOracle Grid Infrastructure OSシステム・ソフトウェアのインストールが必要な場合は、Oracle Grid Infrastructureファイルの更新の手順を参照してください。
すべてのOracle Grid Infrastructure OSシステム・ソフトウェアが更新された後のバージョンは、Grid Infrastructureホームへのパッチまたは更新について表示されるOpatch lsinventory
の出力と同じ(この場合は19.4.0.0.0)である必要があります。また、使用可能でアクティブなOracle Grid Infrastructure OSシステム・ソフトウェアには、同じバージョン番号が表示されている必要があります。たとえば:
Output from the lsinventory command: Patch description: "Grid Infrastructure Jan 2020 Release Update : 19.4.0.0.0.200628 (30501910)" crsctl query driver activeversion -all Node Name : node1 Driver Name : ACFS BuildNumber : 200628 BuildVersion : 19.0.0.0.0 (19.4.0.0.0) crsctl query driver softwareversion -all Node Name : node1 Driver Name : ACFS BuildNumber : 200628 BuildVersion : 19.0.0.0.0 (19.4.0.0.0)
acfsdriverstate
version
コマンドを実行すると、コマンドやユーティリティに関する情報など、ローカル・ノード上のOracle ACFSの追加情報を取得できます。たとえば:
acfsdriverstate version ACFS-9325: Driver OS kernel version = 4.1.12-112.16.4.el7uek.x86_64. ACFS-9326: Driver build number = 200628. ACFS-9212: Driver build version = 19.0.0.0.0 (19.4.0.0.0) ACFS-9547: Driver available build number = 200628. ACFS-9548: Driver available build version = 19.0.0.0.0 (19.4.0.0.0).