GNU/Linux >> Linux の 問題 >  >> Linux

大きなファイルやディレクトリがないにもかかわらず、Linux ファイルシステムがいっぱいになっている

問題

Linux ベースのシステムで、不明なプロセスによってルート ファイル システムがいっぱいになります。ファイル システムからどのファイルが移動または削除されても、処理は続行されます。

# df -hP /
/dev/mapper/VGExaDb-LVDbSys1    ext3     30G   29G     0 100%    /

ファイル システム全体を占める大きなファイルはありません:

# find / -xdev -type f -size +100M -exec ls -lh {} \;

ファイルシステム全体を占める大きなディレクトリはありません:

# du -h --max-depth=1 /
42M     /sbin
13M     /etc
2.4G    /usr
45M    /tmp
451M   /var
192M   /lib
(and so on)
...

解決策

過去のある時点で、2 つ以上のプロセスがファイルを使用していました。たとえば、/tmp/top.log です。 1 つのプロセスが /tmp/top.log を削除することでアクセスを停止し (実際にはディレクトリ エントリです)、もう 1 つのプロセスが i ノード参照への書き込みを続けたため、ファイルが拡大し続けました。

これは、「lsof +L 1」の出力で確認できます。 」

# lsof +L 1
COMMAND    PID      USER   FD     TYPE   DEVICE     SIZE/OFF      NLINK          NODE       NAME
top        34261    root   1W     REG   252,0       21460567592   0              1785896    /tmp/top.log (deleted)

他のファイルもリストされていましたが、はるかに小さかったです.

これは、user=root が /tmp/top.log にスプールする top コマンドを実行していたこと、および現在そのファイルへのリンクがないことを示しています。そのスプール ファイルのサイズは 21Gb でしたが、「du –h –max-depth=1 /」の出力ではレポートされませんでした。/tmp は 45M しかリストされていませんでした。

以下の手順に従って、そのようなプロセスを特定して強制終了してください。

1. 次のコマンドを使用して、リンクが 1 つ未満のシステム上のファイルを特定します。

# lsof +L 1

2. リストされた異常に大きなファイルに書き込みを行っているプロセスを強制終了します。上記の例では、以下を実行します:

# kill 34261

3. 最終プロセスがファイルの使用を停止すると、スペースが解放されます。


Linux
  1. Linuxでmvなしでファイルを移動する

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. LinuxファイルシステムですべてのPythonファイルを検索しますか?

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linuxでファイルとディレクトリを隠す簡単な方法

  3. Linux 用の大容量ファイル (バックアップ) 用の非常に安定したファイルシステム

  1. Linux ファイル システムで dos 形式のファイルを見つける方法

  2. Linux 上の大きなファイルのバイナリ diff/パッチ?

  3. Linux で 2 GB を超えるファイルを作成できないのはなぜですか?