保守してるサーバで、ディスク使用量が90%を超えたアラートが上がってきたので調べたときのメモになります。結論から言うと、DockerのVolumeじゃなくてMySQLの特定のテーブルidbファイルが200GB超えてたのが原因でした。
とりあえずディスク使用量を確認してみる
ディスク使用量をみるとdocker overlay2が90%以上使われていることが判明
df -h
ディレクトリごとのディスク使用量を調べてみる
とりあえずDockerのVolumeを調べていってみることに
du -sh /調べたいパス | sort -n | tail -10
結果的には肥大化しているのはoverlay2ではないことが判明。
どんどん調べていくとDocker MySQLでマウントしているVolumeが肥大化していることが判明。
原因
自分が開発したアプリではないため根本的な原因は不明ですが、MySQLの特定のテーブルのibdファイルが肥大化していることが判明(200GBを超えるファイルに成長してました)
そのテーブルに対してcountで件数取得してみましたが100件もないテーブルでした。。。
(予想としてdrop createとか大量insertからのdeleteとか何かやらかしてくれて中間テーブルのクラシュが起こったんじゃないかなと)
ibdファイルの縮小方法
肥大化したテーブルファイルはalter tableすることで縮小できます。
alter table テーブル名 engine=InnoDB;
200GBあったファイルが1MBになりました。