1

関連ソフトウェア:
Red Hat Enterprise Linux Server リリース 6.3 (Santiago)
cpanel インストール済み 11.34.0 (ビルド 7)

背景と問題:
サーバーで /var がいっぱいになっているように見えたため、(cpanel 経由で) ディスク使用量の警告が表示されました。ログ ファイルが大きくなりすぎて、パーティションがいっぱいになったことが想定されます。最近、大きなログ ファイルを削除し、ログ ファイルをより定期的にローテーションするように syslog 構成を変更しました。/var/log/somefile などを削除し、/etc/rsyslog.conf を編集しました。これが、私が cpanel によって発行されたディスク使用レポートの警告が正しくないように見えたので、それを疑った理由です。

これは、パーティションについて df が報告していたものです。

$ [/var]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.9G  511M  8.9G   6% /
tmpfs                 5.9G     0  5.9G   0% /dev/shm
/dev/sda1              99M   53M   42M  56% /boot
/dev/sda8             883G  384G  455G  46% /home
/dev/sdb1             9.9G  151M  9.3G   2% /tmp
/dev/sda3             9.9G  7.8G  1.6G  84% /usr
/dev/sda5             9.9G  9.3G  108M  99% /var

これは /var マウント ポイントについて du が報告したものです。

$ [/var]# du -sh
528M    .

明らかに何かファンキーなことが起こっていました。過去に同様のレポートの不一致があり、サーバーを再起動したところ、その後 df レポートは正しいように見えました。サーバーを再起動して、同じことが起こるかどうかを確認することにしました。

これは df が現在報告しているものです:

$ [~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.9G  511M  8.9G   6% /
tmpfs                 5.9G     0  5.9G   0% /dev/shm
/dev/sda1              99M   53M   42M  56% /boot
/dev/sda8             883G  384G  455G  46% /home
/dev/sdb1             9.9G  151M  9.3G   2% /tmp
/dev/sda3             9.9G  7.8G  1.6G  84% /usr
/dev/sda5             9.9G  697M  8.7G   8% /var

これは、私が期待するものに似ています。

一貫性を保つために、これは du が /var に対して報告するものです。

$ [/var]# du -sh
638M    .

質問:
これは迷惑です。cpanel によって発行されたディスク使用レポートがどこで情報を取得するのかはわかりませんが、明らかに正しくありません。今後、この不正確な報告を避けるにはどうすればよいですか? 間違ったディスク使用量を報告する df は、ソースの問題の強力な指標のようですが、よくわかりません。サーバーを再起動せずに df レポートが正確になるように、何らかの方法でファイルシステムを「更新」する方法はありますか? この問題を解決するための他のアイデアはありますか?

4

1 に答える 1

2

ファイルを削除しても、それが何らかのプロセスによって開いている場合、ディスク領域は回復されません。プロセスは引き続きそのファイルにアクセスします。syslogdはログファイルをすべて開いたままにするため、これはログファイルの一般的な問題です。

によって報告されたディスク容量にduは、このファイルは含まれていません。これは、ディレクトリ階層を下に移動して、検出されたすべてのファイルのサイズを合計することで機能するためです。ただし、このファイルはどのディレクトリにも見つからないため、カウントされません。dfファイルシステムで使用されている実際のスペースを報告します。

ログファイルローテーションスクリプトは、すべてのログファイルを再度開くように通知するシグナルをsyslogdに送信します。これは次の方法で実行できます。

killall -HUP syslogd

syslogdまた、変更したを使用するには、これを行う必要がありますsyslog.conf

于 2012-11-01T20:58:41.733 に答える