データ管理アプリケーション・プログラミング・インターフェース
AIX®はデータ管理アプリケーションプログラミングインターフェース(DMAPI)を提供します:これは、The Open Groupによって公開されているX/Open標準 "System Management: Data Storage Management (XDSM) API "の実装です。
DMAPI を使用すると、ソフトウェア・ベンダーは、POSIX 準拠システムにない関数およびセマンティクスのセットを使用して、データ管理アプリケーションを開発することができます。 これは、エンド・ユーザーに機能を直接提供するものではありません。 DMAPI の完全なドキュメンテーションは、 The Open Group の Web サイトの資料セクションにあります。
AIX によって提供される DMAPI は、汎用実装です。 オプションのインターフェースおよび機能に対するサポートのレベルは、基礎となっているファイルシステムのインプリメンテーションによって決定され、特定のファイルシステムの個別のセクションに記述されています。
- 複数セッションが、同じオブジェクト上の同じイベントに対して処理を登録することはできない。
- イベント・メッセージは、セッションを宛先にしてセッションにエンキューされる。特定のプロセスをイベントの明示的宛先にすることはできない。
- セッションが、マウント・イベント以外の特定のイベントに対して処理を登録しなかった場合は、DMAPI はイベントを生成しないで、プロセスが、あたかもイベントが使用可能にされていないかのように進行することを可能にする。 セッションが、常に使用可能にされる、マウント・イベントに対して処理を登録しなかった場合は、 DMAPI はイベントを失敗させて、ファイルシステムをマウントできないようにする。
DMAPI は、 AIX内の抽象レイヤーに実装されます。これにより、基礎となるすべてのファイル・システムが、その個別レベルのサポートおよび実装オプションを定義することができます。 ジャーナル・ファイルシステム (JFS) ファイルシステムは、DMAPI に対するサポートを提供していません。 X/Open 標準で記述されているインプリメンテーション・オプション、制限、およびその他の特性に関する拡張ジャーナル・ファイルシステム (JFS2) の動作については、 拡張ジャーナル・ファイルシステムに関する DMAPI の考慮事項に概説されています。
dm_init_service関数は、AIXDMAPI が正しく初期化された場合は 0 を返し、初期化に失敗した場合は-1を返す。 初期化が失敗した後で他のどの DMAPI 関数を使用しても、それもまた失敗します。
- dm_downgrade_right
- dm_upgrade_right
- dm_obj_ref_* ファミリー
- dm_pending
データ管理 (DM) アプリケーションが、権限が使用可能になるまでブロックするように指定した場合は、DM アプリケーションは割り込み不能な状態でブロックされます。
AIX では、複数の重複しない永続管理領域を使用できます。 正規ファイルだけが管理領域を持つことができます。 管理領域が再配列されるか合体されるかどうかは、 基礎にあるファイルシステムのインプリメンテーションによって決定されます。
オブジェクトが有効になっている特定のイベントを受信するためのセッションが登録されていない場合に、イベントをトリガーするアクティビティーが発生すると、 AIX はイベントを生成せず、イベントが有効になっていないかのように処理を進めることができます。
dm_set_eventlist 関数を実行すると、永続イベント・リストがオブジェクトとともに保管されます。 イベント・リストが事前にファイルシステム全体に対して設定されていて、 そのファイルシステム内のオブジェクトに対する後続のイベント・リストが、そのファイルシステムに対して設定されていたイベントを含んでいる場合は、イベントが使用不可にされるまで (その場合、オブジェクトに対するイベント・リストが動作を開始する)、イベントがそのファイルシステムに対するイベント・リストに基づいて生成され続けます。
イベントを生成しているプロセスが、DM アプリケーションからの応答を待ってブロックされている場合は、スリープは割り込み可能です。
AIX は、非同期メッセージ配信のかなり信頼性の高いモデルを採用しています。 未デリバリーの非同期メッセージの数は、システムで構成された使用可能メモリー (実メモリーおよび仮想メモリー) の量によって制限されます。 メッセージの数が使用可能メモリーの量を超えた場合は、未デリバリーの非同期メッセージは失われます。 ネームスペース・イベント・メッセージの非同期デリバリーは、基礎にあるファイルシステムのインプリメンテーションによって決定されます。
AIXの場合、DM_SESSION_INFO_LEN は 256、DM_ATTR_NAME_SIZE は 8 です。
データをユーザー・バッファーに戻し、ユーザー変数に結果のバッファー・サイズを入力する DMAPI インターフェースの場合、 インターフェースが E2BIG 以外のエラーで失敗すると、バッファーの内容とユーザーのサイズ変数の両方は未定義になります。 そのようなエラーの場合、ユーザー・バッファーの内容は無視しなければなりません。 インターフェースが失敗して errno が E2BIG の場合は、ユーザーのサイズ変数の内容は必要なサイズを示すように設定されます。 その場合は、アプリケーションはサイズ変更したバッファーを使用してそのインターフェースを再実行することができます。
拡張ジャーナル・ファイルシステムに関する DMAPI の考慮事項
DMAPI の一般的な AIX インプリメンテーションによって提供される機能に加えて、 JFS2 インプリメンテーションは、以下の機能および制約事項を提供します。
- DM_CONFIG_BULKALL
- サポートされています。
- DM_CONFIG_LEGACY
- サポートされています。
- DM_CONFIG_PERS_ATTRIBUTES
- サポートされています。
- DM_CONFIG_PERS_EVENTS
- サポートされています。
- DM_CONFIG_PERS_INHERIT_ATTRIBS
- サポートされています。
- DM_CONFIG_PERS_MANAGED_REGIONS
- サポートされています。
- DM_CONFIG_PUNCH_HOLE
- サポートされています。
- DM_CONFIG_WILL_RETRY
- サポートされています。
- DM_CONFIG_CREATE_BY_HANDLE
- サポートされていません。
- DM_CONFIG_LOCK_UPGRADE
- サポートされていません。
- DM_CONFIG_OBJ_REF
- サポートされていません。
- DM_CONFIG_PENDING
- サポートされていません。
- DM_CONFIG_DTIME_OVERLOAD
- はい
- DM_CONFIG_MAX_ATTR_ON_DESTROY
- 128
- DM_CONFIG_MAX_ATTRIBUTE_SIZE
- 4072
- DM_CONFIG_MAX_HANDLE_SIZE
- 32
- DM_CONFIG_MAX_MANAGED_REGIONS
- 167
- DM_CONFIG_MAX_MESSAGE_DATA
- 65536
- DM_CONFIG_TOTAL_ATTRIBUTE_SPACE
- 4072
JFS2 インプリメンテーションでは、すべての DM 属性値は同じ割り当てを共有します。 したがって、いずれの属性値のサイズも DM_CONFIG_MAX_ATTRIBUTE_SIZE を超えることはできず、 さらに、オブジェクトに関連したすべての DM 属性の値のサイズの合計によって制限されます。 この合計もまた、DM_CONFIG_MAX_ATTRIBUTE_SIZE に制限されます。
AIXでサポートされないオプション・インターフェースに加えて、 JFS2 インプリメンテーションは、オプションの DMAPI 取り消しイベントおよびデビュー・イベントも、追加のオプションの dm_getall_dmattr、 dm_create_by_handle、および dm_symlink_by_handle 機能もサポートしません。
JFS2の拡張属性サポートの現在のインプリメンテーションにより、 dm_set_region 関数によってファイルの ctime が変更されます。 JFS2 は、管理領域を再配列しようとも、また合体しようともしません。
JFS2 は、すべての対応する操作に対して、それらが成功しても失敗しても、非同期ネームスペース・イベント・メッセージを生成します。
JFS2 は、ファイルシステム内のメタデータの事前割り当ておよび直接制御を可能にするインターフェースを提供します。 これらのインターフェースを MM_ALLOC または MM_RECORD モードのいずれかで使用して、指定された相対位置と長さついて DMAPI 書き込みイベントを生成します。
マスクの値が dm_get_bulkall、 dm_get_bulkattr、 dm_get_dirattrs、および dm_get_fileattr 関数に指定されていない場合 (つまり、ゼロに設定されている場合)、 JFS2 は dm_stat 構造内のすべてのフィールドを返します。 マスクが特定の値に設定されている場合は、マスクで指定されたフィールドだけが戻されます。マスクで指定されなかったフィールドの値は未定義になります。
JFS2 は、 dm_respond_event 関数の respbufp パラメーターを使用しません。 指定された場合は、バッファーの内容は、関数が戻るとき、未定義にされます。
JFS2 は dm_ctime および dm_dtime を多重定義するため (つまり、DM_CONFIG_DTIME_OVERLOAD が true)、 dm_set_dmattr 関数の setdtime パラメーターは無視されます。
ファイルがメモリー・マップされるとき (つまり、 mmap(2) 呼び出しが実行されるとき)、ファイルの非常駐部分は DM アプリケーションによって常駐にされなければなりません。 マッピングについてアプリケーションに通知するために、JFS2 は、モードおよびマップされる領域に対応する読み取りまたは書き込みイベントを生成します。
JFS2 ファイルシステムでの DMAPI の活動化
chfs -a managed=yes mountpointchfs コマンドの発行時にファイル・システムが現在マウントされている場合、 managed パラメーターが設定されているときにマウント・イベントを listen して応答する DMAPI 対応アプリケーションが存在している必要があります。 chfs コマンドの成功は、アプリケーションがマウント・イベントに対してどのように応答するかによって異なります。
chfs -a managed=no mountpointchfs コマンドの発行時にファイル・システムが現在マウントされている場合は、 managed パラメーターが設定されているときに、事前アンマウント・イベントを listen して応答する DMAPI 対応アプリケーションが存在している必要があります。 chfs コマンドが成功するかどうかは、アプリケーションが事前アンマウント・イベントにどのように応答するかによって決まります。
JFS2 暗号化ファイルシステムでの DMAPI の使用
- dm_read_invis
- 暗号化ファイルの場合、off パラメーターと len パラメーターは、いずれもファイルシステムのブロック・サイズで位置合わせされている必要があります。そうしないと、エラー・コード EINVAL で操作は失敗します。
- dm_write_invis
- 暗号化ファイルの場合、off パラメーターと len パラメーターは、ファイルシステムのブロック・サイズで位置合わせされていて、かつ、ファイルの拡張を行う操作はしないようにする必要があります。そうしないと、エラー・コード EINVAL で操作は失敗します。
AIXワークロード・パーティションでのDMAPIの使用
ワークロード区画 (WPAR) 内で DMAPI アプリケーションを実行するには、PV_FS_DMAPI 特権を特権のセットに追加し、WPAR で実行されているプロセスにそれらを割り当てる必要があります。 特権のセットは、作成中に WPAR に追加して割り当てることができます。あるいは、後で特権のセットを変更することができます。
mkwpar -S privs+=PV_FS_DMAPI -n wparname chwpar -S privs+=PV_FS_DMAPI wparnameデフォルトでは、ルート・プロセスのみが WPAR で実行する特権を取得します。 rootが無効化されたシステム、またはrootがデフォルトで無効化されているTrustedAIXインストールでは、非rootプロセスは、グローバルまたはWPARシステムのprivcmdsテーブルを使用して、この特権を取得する。 詳しくは、 RBAC 特権を参照してください。