新しいファイルシステム・タイプの作成
ファイルシステムの新しいタイプを作成する必要がある場合、 ファイルシステム・ヘルパーとマウント・ヘルパーを作成する必要があります。
この項では、 ファイルシステム・ヘルパーとマウント・ヘルパーの、 インプリメンテーションの詳細および実行構文について説明します。
ファイルシステム・ヘルパー
複数のファイルシステム・タイプのサポートを使用可能にするために、 大部分のファイルシステム・コマンドには、 個別のファイルシステムと通信するコードが入っていません。 その代わりに、コマンドは、特定のファイルシステム・タイプに固有でないパラメーター、 ファイルシステム名、および他の情報を収集してから、 情報をバックエンド・プログラムに渡します。 バックエンドは、関係のあるファイルシステム・タイプに関する特殊な情報を理解し、 ファイルシステムと通信するための詳細な作業を実行します。 ファイルシステム・コマンドが使用するバックエンド・プログラムは、ファイルシステム・ヘルパー およびマウント・ヘルパー と呼ばれます。
適切なファイルシステム・ヘルパーを判別するために、 フロントエンド・コマンドは、 /sbin/helpers/vfstype/コマンド・ファイルの下で、vfstype が /etc/vfs ファイルで検出されたファイルシステム・タイプと一致し、 実行中のコマンド名とコマンド が一致するヘルパーを検索します。 フロントエンド・コマンドに渡されたフラグがファイルシステム・ヘルパーに渡されます。
- このヘルパーは、論理ボリュームにそのタイプのファイルシステムが入っていない場合には 0 を戻します。 戻り値 0 は、論理ボリュームにログが入っていないことを示します。
- このヘルパーは、論理ボリュームにそのタイプのファイルシステムが入っていて、 そのファイルシステムがログ用の個別のデバイスを必要としない場合には 1 を戻します。 戻り値 1 は、論理ボリュームにログが入っていることを示します。
- このヘルパーは、論理ボリュームにそのタイプのファイルシステムが入っていて、 そのファイルシステムがログ用の個別のデバイスを必要とする場合には 2 を戻します。 -l フラグが指定されている場合、fstype ヘルパーは、指定された論理ボリューム上でそのファイルシステムのタイプのログを調べる必要があります。
古いファイルシステム・ヘルパーのメカニズム
この項では、AIX® の以前のバージョンで使用されていた、古いファイルシステム・ヘルパーのメカニズムについて説明します。 このメカニズムはまだ使用可能ですが、もう使用しないでください。
ファイルシステム・ヘルパー操作
ヘルパーの操作 | 値 |
---|---|
#defineFSHOP_NULL | 0 |
#defineFSHOP_CHECK | 1 |
#defineFSHOP_CHGSIZ | 2 |
#defineFSHOP_FINDATA | 3 |
#defineFSHOP_FREE | 4 |
#defineFSHOP_MAKE | 5 |
#defineFSHOP_REBUILD | 6 |
#defineFSHOP_STATFS | 7 |
#defineFSHOP_STAT | 8 |
#defineFSHOP_USAGE | 9 |
#defineFSHOP_NAMEI | 10 |
#define FSHOP_DEBUG | 11 |
ただし、JFS ファイルシステムは以下の操作しかサポートしません。
#define FSHOP_CHECK 1 fsck
#define FSHOP_CHGSIZ 2 chfs
#define FSHOP_MAKE 5 mkfs
#define FSHOP_STATFS 7 df
#define FSHOP_NAMEI 10 ff
ファイルシステム・ヘルパーの実行構文
OpName OpKey FilsysFileDescriptor PipeFileDescriptor Modeflags
DebugLevel OpFlags
- OpName
- プログラムがヘルパーを呼び出す場合に、 arg0 パラメーターを指定します。 OpName フィールドの値は、 プロセスのリストに表示されます (ps コマンドを参照してください)。
- OpKey
- 使用可能なヘルパー操作に対応します。 したがって、OpKey 値が 1 の場合、 fsck (ファイルシステム検査) 操作が要求されています。
- FilsysFileDescriptor
- プログラムがファイルシステムをオープンしているファイル・ディスクリプターを示します。
- PipeFileDescriptor
- 元のプログラムとヘルパー・プログラムの間でオープンされるパイプに関するファイル・ディスクリプターを示します
(pipe サブルーチンを参照してください)。
このチャネルによってヘルパーはフロントエンド・プログラムと通信することができます。
例: ヘルパーはパイプを介してその成功または失敗の表示を送信し、 それはさらにフロントエンド処理に影響を与える可能性があります。 また、デバッグ・レベルが十分に高い場合、 ヘルパーは元のプログラムに送信する追加情報を持っている可能性があります。
- Modeflags
- ヘルパーの呼び出し方法を示し、
ヘルパーの振る舞いに (特にエラーの報告に関して) 影響を与える可能性があります。 モード・フラグは /usr/include/fshelp.h ファイルに定義されます。
Flags Indicator #define FSHMOD_INTERACT_FLAG "i" #define FSHMOD_FORCE_FLAG "f" #define FSHMOD_NONBLOCK_FLAG "n" #define FSHMOD_PERROR_FLAG "p" #define FSHMOD_ERRDUMP_FLAG "e" #define FSHMOD_STANDALONE_FLAG "s" #define FSHMOD_IGNDEVTYPE_FLAG "I"
例: FSHMOD_INTERACT フラグは、 コマンドが対話式に実行されているかどうかを示します (標準入力上で isatty サブルーチンをテストすることによって判別されます)。 すべての操作がこれらのすべての (またはいずれかの) モードを使用するわけではありません。
- DebugLevel
- 必要なデバッグ情報の量を判別します。デバッグ・レベルが高くなると、 より詳細な情報が戻されます。
- OpFlags
- 操作を実行する実際のデバイス (単数または複数)、 およびフロントエンドによって指定された他のすべてのオプションが組み込まれています。
ヘルパー呼び出しのサンプル
execl("/etc/helpers/v3fshelpers","fshop_check","1","3","5","ifp",
"0","devices=/dev/lv02,fast,preen,mounted")
- 実行可能プログラム execd は /etc/helper/v3fshelpers です。
- プロセス (ps コマンド) のリストに表示される名前は fshop_check です。
- 値 "1" によって表される、要求された操作は FSHOP_CHECK です。
- ファイルシステムは、 ファイル・ディスクリプター "3" に 関してオープンされています。
- ヘルパーがフロントエンド・プログラムに情報を送信するためのパイプは、 ファイル・ディスクリプター "5" に関してオープンされています。
- ModeFlags 文字列 は "-ifp" であり、 interactive モードと force および perror モードを示しています。
- DebugLevel が 0 なので、追加のデバッグ出力は fsck コマンドに戻されません。
- OpFlags 文字列がバックエンド・プログラムに、 操作を実行する対象のデバイス (/dev/lv02)、 要求されたオプション (fast および preen)、およびデバイスのマウントを指示します。 fsck コマンドの場合、fsck コマンドはマウント済みファイルシステムに作用しないので、何の変更も行われません。
mkfs /junk
mkfs /dev/lv02
execl ("/etc/helpers/v3fshelpers", "fshop_make", "5", "3", "5", "-ip",¥
"0", "name=/junk,label=/junk,dev=/dev/lv02")
要求された操作は現在 FSHOP_MAKE です。 モードは interactive および perror です。 OpFlags 文字列には、 マウント・ポイントとデバイスの両方が組み入れられます。
マウント・ヘルパー
mount コマンドは、 特定のファイルシステムと通信するためにヘルパーを使用するフロントエンド・プログラムです。 mount コマンドおよび umount (または unmount) コマンド用のヘルパー・プログラムは、マウント・ヘルパー と呼ばれます。
mount /test
mount コマンドは、 /etc/filesystems ファイルから、 /test ファイルシステムが、 host1 という名前のノードからのリモート NFS マウントであることを判別します。 mount コマンドは、マウントに関連するすべてのオプションも示します。
/test:
dev = /export
vfs = nfs
nodename = host1
options = ro,fg,hard,intr
ファイルシステム・タイプ (例では nfs) は、 呼び出すマウント・ヘルパーを判別します。 このコマンドは、ファイルシステム・タイプと /etc/vfs ファイルの最初のフィールドを比較します。 一致するフィールドの 3 番目のフィールドにマウント・ヘルパーがあります。
マウント・ヘルパーの実行構文
/etc/helpers/nfsmnthelp M 0 host1 /export /test ro,fg,hard,intr
- 操作
- ヘルパーに関して要求された操作を示します。 値は M (マウント操作)、Q (照会操作)、または U (アンマウント操作) のいずれかです。 照会操作は使用しなくなりました。
- debuglevel
- -D フラグの数値パラメーターを指定します。 mount と unmount コマンドは -D フラグをサポートしないので、この値は 0 です。
- nodename
- リモート・マウントのノードの名前、またはローカル・マウントの null 文字列を指定します。 mount または unmount コマンドは、 nodename パラメーターが null の場合、 マウント・ヘルパーを呼び出しません。
- オブジェクト
- マウントまたはアンマウントするローカルまたはリモートのデバイス、 ディレクトリー、またはファイルの名前を指定します。 すべてのファイルシステムがすべての組み合わせをサポートするわけではありません。 例えば、大部分のリモート・ファイルシステムはデバイス・マウントをサポートしませんが、 大部分のローカル・ファイルシステムはデバイス・マウント以外をサポートしません。
- マウント・ポイント
- オブジェクトをマウントするローカル・ディレクトリーまたはファイルの名前を指定します。
- オプション
- ファイルシステムに固有のすべてのオプションをコンマで区切ってリストします。 このパラメーターに関する情報は、/etc/filesystems ファイル内の関係のあるスタンザの options フィールドから、またはコマンド・ライン (mount -o Options) 上の -o Options フラグから来ます。 mount コマンドは -r (読み取り専用) フラグも認識し、 このフィールド内の文字列 ro に変換します。
unmount コマンドの残りのパラメーターは、次のとおりです。
- vfsNumber
- アンマウントの対象のマウントを識別する固有の番号を示します。 固有の番号は、vmount コールによって戻され、 mntctl または stat サブルーチンのコールによって検索することができます。 マウント・ヘルパーの場合、 このパラメーターは、実際にアンマウントを実行する uvmount サブルーチン・コールへの最初のパラメーターとして使用されます。
- フラグ
- uvmount サブルーチンへの 2 番目のパラメーターの値を示します。 -f フラグを使用してアンマウント操作を強制する場合 (umount -f)、この値は 1 になります。 それ以外の場合、値は 0 です。すべてのファイルシステムが強制アンマウントをサポートするわけではありません。