NFS クライアントが他の NFS クライアントのファイルポインタをリセットします。

NFS クライアントが他の NFS クライアントのファイルポインタをリセットします。

nfs マウントポイントのログファイルにログを記録するデバイスがあります。同じログファイルに「永久に」書き込むため、ファイルサイズは非常に大きくなります。

より小さな日常ログファイルを持つようにログを回転させる(他のnfsクライアントで実行)スクリプトを実行します。ログの回転が完了したら、デバイスのファイルポインタがファイルの先頭を指すように強制し、デバイスにログファイルの先頭から書き換えを開始させたいと思います。

これを行うには、nfsクライアントがログローテーションを実行し、ログファイルで「何か」を実行する必要があり(何かはわからない)、他のnfsクライアント(デバイスへの書き込み)がファイルポインタをファイルの先頭に設定するように強制します。

私の理解は、各nfsクライアントが独自のファイルポインタを独立して維持するため、これは不可能であるということです。

私は間違っていますか?これは可能ですか?

ベストアンサー1

通常、ログを回転させるには、ログファイルに書き込んでいるプロセスを終了する必要があります。このコマンドのマニュアルページがlogrotate役に立ちます。

記録されるデバイスもUnixまたはLinuxタイプのシステムであると仮定すると、ファイルを記録するプロセスは、ファイルが閉じられるまでファイルにデータを記録し続けます。 NFS サーバーからファイルが削除されたり名前が変更された場合でも、プロセスはファイルに書き込みを続けます。

私の理解は、各nfsクライアントが独自のファイルポインタを独立して維持するため、これは不可能であるということです。

あなたの理解は一般的に正確ですが、すべてのプロセスが同じシステム上にあり、NFSが関係していない場合でも同様です。

これがUnix / LinuxシステムでI / Oサブシステムが機能する方法です。プロセスでファイルポインタを強制的に変更することはできません。

ただし、NFSクライアントとサーバーの間にプロキシを配置できる場合、プロキシはファイルを閉じて回転するのに十分な時間を費やしてデータをバッファリングまたは一時ファイルにリダイレクトできます。 NFS プロキシの例は NFSex です。http://nfsex.sourceforge.net/Windows用のNFS先読みと後の書き込みを実装していますが、そのページの図にアイデアがあります。私の誰かがこれを行っており、合理的に見えますが、実装については知りません。

おすすめ記事