df コマンドが正しい値を表示しません。

df コマンドが正しい値を表示しません。

これはRHELサーバーであり、そのサーバー上でMySQLサーバーを実行しており、データベースとログファイル(ロギングは無効になっています)は十分なスペースがある/srvディレクトリにあります。

私は最近テーブルがクラッシュして修正しようとしましたが、翌日ディスクスペースがないというエラーでMySQLが多くのクエリに応答できないことを発見しました。

ERROR 1030 (HY000): Got error 28 from storage engine

それで、何がスペースを占めているのかを確認するために、次のコマンドを実行しました。

[root@tms /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server-slash
                      9.9G  9.5G     0 100% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             485M   58M  402M  13% /boot
/dev/mapper/server-var
                      739G  252G  450G  36% /srv

驚くべきことはカタログです/。しかし、さらに驚くべきことに、以下のディレクトリには、/使用されたスペースが次よりも多いことを示していません。2GBdf全スペースを表示しながら9.9GBのための/

[root@tms /]# du -sh /*
7.5M    /bin
48M     /boot
200K    /dev
24M     /etc
4.0K    /home
223M    /lib
21M     /lib64
16K     /lost+found
4.0K    /media
4.0K    /mnt
183M    /opt
...deleted some file-not-found errors for files under /proc
0       /proc
144K    /root
14M     /sbin
4.0K    /selinux
252G    /srv
0       /sys
44K     /tmp
917M    /usr
259M    /var

では、df間違った値が表示されるのはなぜですか?実際にスペースを占めるものとはどうすればわかりますか?

ベストアンサー1

一般的なプログラミング技術は、一時ファイルを作成してすぐにリンクを解除することです。これにより、プログラムの実行中にファイル(およびそのスペース)を使用できますが、ファイルを使用するプログラムが終了するとファイルは自動的に削除されます。 1つの利点は、エピローグ(クリーンアップ)コードを書く必要がないことです。

プロセスがリンクされていないファイルを開いたままにしていることを確認するには、次の手順を実行します。

lsof -a +L1 /dev/server_slash

(または)

lsof +D /dev/server_slash +L1

NLINK値が0のすべてのファイルを見つけます。これらのファイルのリンク数はゼロで、最後のプロセスが終了すると消えます。 SIZE / OFFSET列は関連ファイルの文字サイズを提供します。

おすすめ記事