ファイルシステムで特定のユーザーが所有するすべてのファイルのリストとサイズを取得する方法はありますか?私は、または同様のツールを使用してディレクトリツリーをナビゲートするのではないことを意味しますfind
。なぜなら、私はそうし、これらのツールが見つからない隠しファイルがあるようです。ファイルシステムinodeを直接繰り返すツールが必要です。
コンテキスト:CentOS 7.9サーバーのクォータに問題があります。特定のファイルシステムに1100 GBのクォータが割り当てられており、/share/storage
サーバーにログインしておらず、所有しているプロセスがないにもかかわらず、使用されたスペースが1分あたり(約)100 MBずつ永遠に増えています。今、スペースがほとんど不足しています。ただし、 を実行すると$ du /share/storage/user
556GB だけが報告されます。
私が所有しているファイルがあるかもしれませんが、他のディレクトリ(/tmp
別のユーザーアカウントの別のディレクトリ)にある可能性があることを知っています。私はそれらすべてを確認しましたが、何も見つかりませんでした。
作成中の開いているファイルを確認しましたが、lsof
そこには何も見つかりませんでした。
だから私の考えは、inodeリストとこれらのファイルのサイズを取得し、しばらくするとリストと比較することです。
注:私はサーバーへのrootアクセス権を持っています。
サーバーは HPC クラスターのフロントエンドであるため、コンピューティングノードは NFS 経由でファイルシステムに書き込むことができます。ところで、現在コンピューティングノードにプロセスがないことを確認しました。
答え1
我々は問題を発見した。コンピューティングノードで実行されているプロセスは常にファイルに書き込まれます(ファイルサイズが500 GBを超える)。ファイルに対応するディレクトリがフロントエンドから削除され、何らかの理由でプロセスがコンピューティングノード上のファイルに記録され続けました。プロセスが終了すると、ファイルスペースは解放されます。
したがって、この場合は、コンピューティングノードで古いプロセスを見つけることをお勧めします。
編集する:私が投稿した質問(find
ファイルシステム自体を巡回せずにすべてのinodeを巡回するなど)については試していませんが、dfを使用してファイルシステムのinode数を取得できるようです。
[mstorti@seshat ~]$ df -i /share/storage/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb1 45753856 26022211 19731645 57% /share/storage
次に、可能なすべてのinode(1から45753856)を繰り返し、各inodeに各inodeが割り当てられていることをdebugfs
確認し(使用可能なシェルで)、すべての現在のinodeとサイズをそのファイルに保存できると思います。その後、後で同じことを実行して比較すると、幸いにもファイルがスペースを占めることがわかります。
ただし、前述したように、使用する方が良いと思いますが、lsof
クラスタ内のすべてのコンピューティングノードでこれを行う必要があることに注意してください。