dfはディスクがいっぱいであると言いますが、そうではありません


58

Ubuntu 10.04を実行している仮想化されたサーバーで、dfは次を報告します。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

1.)dfは、/にマウントされた/ dev / sda1の容量が7.4ギガバイトで、そのうち使用されているのは7.0ギガバイトだけですが、100%満杯であると報告しています。および2.)/にファイルを作成できるため、明らかにスペースが残っています。

おそらく関連するのは、ディレクトリ/ wwwが/ home / wwwへのシンボリックリンクであり、これが別のパーティション(/ dev / sda3、/ homeにマウント)にあることです。

誰でもここで何が起こっているのかについての提案を提供できますか?サーバーは問題なく動作しているように見えますが、パーティションテーブル、ファイルシステム、または後で内破(または爆発)する可能性のある何かに問題がないことを確認したいと思います。


有益な回答をありがとう。通常のユーザーとしてファイルを作成することはできませんので、大災害を防ぐのは5パーセントのバッファーのようです。ここで、ディスクがいっぱいになった理由を把握する必要があります(ログファイルがそれほど多くのスペースを占有せず、インストールされているソフトウェアが少なく、単純なLAMPサーバーがあるため、悪意のある処理が行われる可能性が少し心配です) ...
クリス

3
最初に見る場所は/ tmpです。別の可能性は、実行中のプログラムが保持している削除済みファイルがあることです。lsofを実行できると思います| それらを見つけるためにrootとしてgrep deleted
スコット

回答:


103

プロセスによって大きなファイルが開かれ、それが削除された可能性があります。スペースを解放するには、そのプロセスを強制終了する必要があります。lsofを使用してプロセスを識別できる場合があります。Linuxでは、まだ開いているファイルがlsofに認識され、lsofの出力で(削除済み)としてマークされます。

これを確認するには sudo lsof +L1


8
それは私にとって謎を解決しました。サービスを再起動せずに、uwsgiから大きなログファイルを削除しました。照会するとdf -ah、ディスクがいっぱいになりましたdu -sh /が、空き領域が必要だと表示されます。retws uwsgiの後、たくさんの空きスペースができました!
ファビオモンテ

私は40G相当のログをlimboで立ち往生させ、lsof + L1でX線ビジョンを見て、何が起こったのかを見ました;-)サービスを再起動するだけでした。
PJブルーネット

46

ファイルシステムの5%(デフォルト)は、深刻な問題を防ぐためにファイルシステムがいっぱいになる場合のために予約されています。ファイルシステムがいっぱいです。5%のバッファーのために壊滅的な事態は発生していません。rootはその安全バッファーの使用を許可されており、セットアップでは、非rootユーザーはそのファイルシステムに書き込む理由がありません。

非rootユーザーとして実行するデーモンがあり、そのファイルシステム内のファイルを管理する必要がある場合、問題が発生します。一般的なこのようなデーモンの1つですnamed。別のですntpd


1
なぜディスクがいっぱいなのかという質問に、7Gはそれほど多くのスペースではありません。また、すべてが1つのパーティション/ファイルシステムの下にダンプされているように見えます(/)。これは一般的に悪いことと考えられています(何かが調子/が悪くなり、世界が終われば)が、Linuxディストリビューションはそれが「単純」であるため、それを実行し続けます。まずは/var(特に/var/log)巨大なログファイルを探します。du -hs /(ルートとして)最大のディレクトリを見つけるのに役立ち、場合によってはクリーンアップが必要なものを指摘します。
voretaq7


17

ほとんどのLinuxファイルシステムは、rootユーザーのみが使用するために5%のスペースを確保しています。

これは、たとえば

dumpe2fs /dev/sda1 | grep -i reserved

次を使用して予約額を変更できます。

tune2fs -m 0 /dev/sda1

ほとんどの場合、すべてのプロセスが「root」として実行されていると仮定すると、サーバーは引き続き正常に動作しているように見えます。


8

私はこの問題を抱えており、さまざまな大きなファイルを削除しても状況が改善されないという事実に困惑していました(5%のバッファについては知りませんでした)

ルートから、繰り返し行うことで明らかになった最大のディレクトリを歩いて行きました:

du -sh */ 

絶対に大規模なログがあるウェブサーバーログファイルのディレクトリに来るまで

私は切り捨てました

:>lighttpd.error.log

突然df -hは48%まで使用されました!


14
「...その後、ログローテーションを設定します。」で終わるはずです。
hayalci

hayalci:ログローテーションが間違ったディレクトリを指していることがわかりました。
ザッパー

8

すでに提案されている原因に加えて、場合によっては次のこともあります。

  • 別のディスクが、データでいっぱいの既存のフォルダの上にマウントされます
  • duはマウントされたディスクの消費サイズを計算し、dfは実際に消費されたことを表示します
  • 解決策:(可能な場合)非ルートディスクをすべてアンマウントし、サイズをdu -md 1再度確認します。隠しフォルダーを他の場所に移動するか、別の場所にマウントすることで状況を修正します。

df以外のマウントポイントをどのように見つけますか?
ホーガン

@Hogan:「mount」または「cat / etc / fstab」を呼び出すと役立つでしょうか?
ロバートルホ

5

df -h値を丸めています。パーセンテージも四捨五入されます。省略する-hと、さらに細かい違いが表示されます。

ああ。そして、ext3とその派生物は、まさにこの問題のある星座のために、ファイルシステム用のパーセンテージ(デフォルトは5%)を予約しています。ルートファイルシステムが本当にいっぱいになると(残り0バイト)、システムを起動できません。そのため、予約された部分がこれを防ぎます。


また、彼が無料のiノードを使い果たした可能性もあります。'df -i'を実行して、iノードの使用状況を取得します。
アンドリューケース

彼はディスクいっぱいであるという情報を提供しませんでした。彼はディスクがいっぱいだと思っているだけです。エラーなしの100%使用済みスペースは、「実質的にいっぱい」です。
mailq

1

いくつかのライブラリを大幅に更新しましたが、不必要なライブラリと一時ファイルがたくさんあったため、「/」フォルダのスペースを次のように解放しました。

apt-get install -f
sudo apt-get clean

ゴミ箱を空にします


これはディスクの使用量を減らすための合理的な一般的なアドバイスですが、ディスクが満杯でないときにdfがディスクを満杯にする理由についての質問には対応していません。
アンドリューシュルマン

0

/ lost + foundを確認してください。システム(centos 7)があり、/ lost + foundのファイルの一部がすべてのスペースを使い果たしました。


0

パーティションがbtrfsの場合、サブボリュームが領域を占有している可能性があります。btrfsファイルシステムには多くのサブボリュームを含めることができ、そのうちの1つだけがマウントされます。を使用btrfs subvolume list <dir>して、すべてのサブボリュームをリストし、サブボリュームbtrfs subvolume delete <dir>/<subvolume>を削除できます。デフォルトでマウントされているものは削除しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.