これは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
驚いたことに、それは/
ディレクトリです。しかし、さらに驚くべきことに、/
の下のディレクトリは2 GB以上の使用済みスペースを示していないのに対し、df
は合計スペース9.9 GB/
。
[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)df
は、UNIXスタイルのファイルシステムでルート用に予約されているスペース(デフォルトでは5%)を報告しません。したがって、df
は常に、本来あるべき値よりも少ない値を報告します。
2)ここでは、srvパーティションをマウントせずにデータベースを実行したと思います。 srv-partitionがマウントされていなければ、物事はマウントポイントに書き込まれます。/-partitionのsrv-directoryの下に。 (ルートパーティション)。したがって、/パーティションで非常に多くのスペースを使用します。
ただし、do srv-partitionをsrv-directoryにマウントすると、/-partitionのsrv-directoryの下にあるすべてのファイルが、「マウントした」パーティションによって「非表示」になります。それを見ることができないか、アクセスして削除することはできませんが、それでもスペースは使い果たされています。
Srv-partitionをアンマウントして(singleuser-moder/runlevel 1/maintenanceモードに移動してすべてを停止します)、実際にアンマウントされていることを確認し(mount
を使用)、ディレクトリの下にファイルが隠れていないか確認します通常、/パーティションでマウントポイント(usr、srv、home、var、tmpなど)として使用します。それらの中には、何か大きなものがあると思います。完了して再起動したら、srvパーティションが実際にマウントされていることを確認してください。
これは、通常はマウントされたパーティションによって隠されているものをディレクトリに置くことができるということですが、実際に役立つことがあります。