web-dev-qa-db-ja.com

予期しないスペース消費

私は問題があります。私はいつもディスク容量を使い果たしています。どのファイルがすべてのスペースを消費するのか正確にはわかりません。小さなファイルがたくさんあるようですので、duコマンドで見つけるのは難しいです。空き領域(メール、ログ、古いアーカイブ、rpm)を確保するために何かを見つけるたびに、しばらくするとディスクが再びいっぱいになります。システムパーティション(/)からスペースが盗まれました。 dfコマンドの結果:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              4061540   3848404      3492 100% /
/dev/sda3              4061572   2441348   1410576  64% /home
tmpfs                   517636         0    517636   0% /dev/shm
/dev/sdb1             10317828   1894904   7898808  20% /var/lib/mysql

この状況であなたは何をお勧めしますか?

過度または予期しないスペース消費に遭遇した場合のケースのリストも列挙できると便利です。問題の解決に役立つ可能性があります

OS:CentOS5。

4
altern

これが私の標準的な「スペースを食べているものを見つける」体制です。

  1. du -hx --max-depth=1 /-スペースを食べているものを探します。スペースホッグが見つかるまで、最大のサブディレクトリ(たとえば、du -hx --max-depth=1 /var)を調べます。ログ(/var/log内)は一般的な原因(logrotateを使用して対処する必要があります)であり、yumが保持するのが好きな残骸(再パッケージ化されたRPM)も同様です。繰り返し違反している人を特定できる場合は、繰り返しクリーンアップするために行っているメンテナンス作業を自動化する方法を考えてください。
  2. lsof -n |grep deleted-削除された大きなファイルを探します。可能であれば、どのプロセスがそれらを開いたままにしているのかを特定し、それを強制終了するか、ハンドルをリサイクルするように指示します(ログファイルの場合は、kill -HUP <pid>がうまくいくことがよくあります)。
  3. 私の3番目の攻撃は、パーティションのサイズを変更するか、新しいパーティションをさまざまなマウントに割り当てることですが、あなたの場合は、LVMを使用していないため、注意が必要です。 /dev/sdb1をVGに変換し、そこから割り当てるためのメンテナンスを検討してください。
  4. アップグレード。ディスクスペースは非常に安いので、スペース消費の原因を探すのに1時間費やすと、新しいハードドライブの支払いに必要な時間を「費やした」だけなので、探し出すのに時間をかけすぎるのではなく、新しいドライブを購入します。問題。
14
womble

Wombleの答えへの1つの追加-大きなログファイルをたくさん取得している場合は、 logrotate (ほとんどのディストリビューションにデフォルトでインストールされています)を使用してサイズを小さくすることを検討してください。スペースの大部分を占める特定のログが1つある場合は、エラーが繰り返されていないかどうかも確認し、ログを生成するサービスの詳細レベルが高すぎないことを確認する必要があります。

2
gareth_bowles

例:/ homeをアンマウントし、そこに10GBのファイルを書き込み、/ homeを再度マウントします。スペースが消費され、dfは何も表示しません。マウントポイントはそのフォルダー内のファイルを非表示にします。

これを確認してください。これは、マウントエラーが発生したことがあり、いくつかのファイルがそこに配置されている場合に発生する可能性があります。

0
kolypto

まだ行っていない場合は、/ varマウントポイントを別のパーティションに移動します。ファイルシステム/ varは、ルートFSがいっぱいになるのを防ぐために存在します。

まだ個別のパーティションでない場合は、/ tmpについても同じです。

ファイルを削除しても開いたままにするプロセスがあるかもしれません。スペースは、クローズ/プロセス終了まで再利用されません。 lsofコマンドを使用して、どのプロセスがどのファイルを開いているかを調べることができます。コマンドlsofが標準のCentosインストールに含まれていない可能性があるため、パッケージを追加して取得する必要がある場合があります。

0
kmarsh
Sudo du --all --one-file-system / | xdu -n
0
Teddy