ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1M: システム管理コマンド Oracle Solaris 11 Information Library (日本語) |
- nfs ロギングデーモン
/usr/lib/nfs/nfslogd
nfslogd デーモンは、Solaris NFS サーバーに操作可能なロギング機能を提供します。nfslogd デーモンの役割は、NFS サーバーにより処理された RPC 操作を分析して、アクティビティーログを生成することです。このログは、ロギングを有効にしてエクスポートされたファイルシステムでのみ生成されます。これは、ファイルシステムのエクスポート時に、share_nfs(1M) コマンドを使って指定されます。
NFS Version 4 を使用する Solaris マシンでは、NFS サーバーのロギングはサポートされていません。
ログファイル内の各レコードには、タイムスタンプ、クライアントシステムの IP アドレス (またはホスト名 (解決可能な場合))、操作対象のファイル名またはディレクトリ名、および操作のタイプが含まれています。基本書式では、操作は入力 (i) または出力 (o) 操作のいずれかになります。NFS サーバーログの基本書式は、Washington University FTPd デーモンにより生成されるログ書式と互換性があります。ログ書式を拡張して、mkdir、 rmdir、remove などのディレクトリ変更操作を含めることもできます。拡張された書式は、Washington University FTPd デーモンの書式とは互換性がありません。詳細については、nfslog.conf(4) を参照してください。
NFS サーバーのロギングメカニズムは、2 つのフェーズに分けられます。最初のフェーズは NFS カーネルモジュールにより実行され、raw RPC 要求およびその結果を持続ストレージによりバックアップされる作業バッファーに記録します。作業バッファーの場所は、/etc/nfs/nfslog.conf ファイルに指定されます。詳細は、nfslog.conf(4) を参照してください。2 番目のフェーズには、nfslogd ユーザーレベルデーモンが関係します。これは、作業バッファーを定期的に読み取り、raw RPC 情報を解釈し、関連する RPC 操作を単一のトランザクションレコードにまとめて、出力ログを生成します。その後、nfslogd デーモンは休眠状態に入り、作業バッファーにさらに情報が記録されるのを待機します。デーモンの休眠状態の長さは、/etc/default/nfslogd の IDLE_TIME パラメータを変更することで構成できます。作業バッファーは、nfslogd デーモン内部で使用するためのものです。
NFS 操作では、パス名の代わりにファイルハンドルが引数として使用されます。このため、nfslogd デーモンは、操作に関連するパス名を記録するために、対応するファイルハンドルではなく、ファイルハンドルからパスへのマッピングのデータベースを管理する必要があります。クライアントが検索や、ファイルハンドルをクライアントに返すほかの NFS 操作を実行すると、ファイルハンドルのエントリがデータベースに追加されます。
NFS クライアントがサーバーから取得したファイルハンドルは無期限に保持でき、あとでファイルやディレクトリに対する NFS 操作の引数として使用できます。NFS クライアントは、サーバーのリブート後でさえもそのファイルハンドルを使用できます。データベースは、サーバーのリブート後も利用可能でなければならないため、持続ストレージにバックアップされます。データベースの場所は、/etc/nfs/nfslog.conf ファイル内の fhtable パラメータで指定されます。このデータベースは、 nfslogd デーモンにより内部で使用されます。
ファイルハンドルのマッピングデータベースを扱いやすいサイズに保つために、 nfslogd は定期的にデータベースのプルーニングを行います。削除されるのは、指定された期間以上アクセスのないファイルハンドルのエントリです。プルーニングプロセスの実行間隔は、/etc/default/nfslogd 内の PRUNE_TIMEOUT 構成可能パラメータを使って指定します。前回のプルーニング処理の実行以降、使用されていないファイルハンドルのレコードは削除されます。データベースのプルーニングは、PRUNE_TIMEOUT を INT_MAX と同じ値に設定することで無効にできます。
プルーニングが有効な場合、クライアントがファイルハンドルを PRUNE_TIMEOUT よりも長期間保持し、マッピングデータベース内の一致するレコードが削除されたあとで、ファイルハンドルに対して NFS 操作を実行する危険が常に存在します。このような場合、ファイルハンドルのパス名は解決されず、ログにはパス名の代わりにファイルハンドルが含まれています。
nfslogd デーモンの動作に影響を及ぼすさまざまな構成可能パラメータが存在します。これらのパラメータは /etc/default/nfslogd に記述されています。詳細は後述します。
ログファイル、作業バッファーファイル、およびファイルハンドルのマッピングデータベースのファイルモードを設定します。
作業情報を処理してログファイルに書き込む前に、バッファーファイルが達している必要のある最小サイズをバイト単位で指定します。MIN_PROCESSING_SIZE の値は、1 と ulimit の間にする必要があります。
デーモンがバッファーファイルにさらに情報が記録されるのを待機する休眠期間を秒単位で指定します。 IDLE_TIME は、構成ファイルを再読み込みする頻度も決定します。IDLE_TIME の値は、1 と INT_MAX の間にする必要があります。
nfslogd は、ログを定期的に切り替えます。 MAX_LOGS_PRESERVE には、保存するログファイルの最大数を指定します。MAX_LOGS_PRESERVE に達すると、新しいログファイルの作成時にもっとも古いファイルが上書きされます。これらのファイルは、filename.0 から始まる番号付きの拡張子を付けて保存されます。拡張子に付けられた番号が最も大きいファイルが、もっとも古いファイルです。この番号の最大値は、MAX_LOGS_PRESERVE に設定された値です。 MAX_LOGS_PRESERVE の値は、1 と INT_MAX の間にする必要があります。
ログファイルを切り替える頻度を時間単位で指定します。 CYCLE_FREQUENCY を使って、ログファイルが大きくなり過ぎないようにできます。CYCLE_FREQUENCY の値は、1 と INT_MAX の間にする必要があります。
ファイルハンドルからパスへのマッピングテーブル内のレコードを更新する間隔を秒単位で指定します。レコードへのアクセスが行われるたびにそのレコードの atime を更新する代わりに、このパラメータに設定された期間が経過したときにのみ更新します。プルーニングルーチンは、レコードへのアクセス時間を使用して、データベースからレコードを削除するかどうかを決定します。このパラメータの値は、1 と INT_MAX の間にする必要があります。
データベースレコードがタイムアウトする期間を時間単位で指定します。最後にレコードにアクセスがあってからの経過時間が PRUNE_TIMEOUT より長い場合、そのレコードをデータベースからプルーニングできます。PRUNE_TIMEOUT のデフォルト値は 168 時間 (7 日) です。 PRUNE_TIMEOUT の値は、1 と INT_MAX の間にする必要があります。
次の終了値が返されます。
デーモンが正常に起動されました。
デーモンの起動に失敗しました。
属性についての詳細は、attributes(5) を参照してください。
|