当ブログサイトのCentOSのディスク使用量が想像以上に増えていたので、調査を行いました。
結論から言えば、Dockerのoverlay2ディレクトリが肥大化していたことが原因です。
当記事は、その調査過程と解決までをメモ書きしたものです。
ディスクの調査
まず、df
コマンドで現状のディスク使用量を確認します。
すると20G
中14G
ディスクが使用されていました。
[root@ip-xxx-xx-x-xxx centos]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 20G 14G 6.8G 67% /
次にdu
コマンドで各ディレクトリの容量を確認します。
-s
はディレクトリの合計容量を表示するオプション。
-h
はディスク容量が読みやすいように単位をつけて表示するオプションです。
[root@ip-xxx-xx-x-xxx centos]# du -sh /*
20M /1
0 /bin
185M /boot
0 /dev
41M /etc
1.4G /home
11M /root
33M /run
0 /sbin
0 /srv
1.0G /swapvol
2.0G /swpfile2
0 /sys
0 /tmp
1.7G /usr
8.3G /var
var
ディレクトリの容量の使用量が8.3G
と大きめです。
そのためvar
ディレクトリを対象にdu
コマンドで原因箇所を特定していきます。
[root@ip-xxx-xx-x-xxx centos]# du -sh /var/*
390M /var/cache
0 /var/crash
8.0K /var/db
0 /var/empty
0 /var/games
0 /var/gopher
0 /var/kerberos
7.8G /var/lib
さらに/var/lib
ディレクトリをdu
で確認します。
[root@ip-xxx-xx-x-xxx centos]# du -sh /var/lib/*
12K /var/lib/alternatives
0 /var/lib/authconfig
4.0K /var/lib/chrony
176K /var/lib/cloud
228K /var/lib/containerd
0 /var/lib/dbus
16K /var/lib/dhclient
7.7G /var/lib/docker
docker
ディレクトリをdu
で確認するとoverlay2
が肥大化していることを確認できました。
このoverlay2
は知らぬ間に肥大化しがちな領域のようです。
[root@ip-xxx-xx-x-xxx centos]# du -sh /var/lib/docker/*
72K /var/lib/docker/buildkit
118M /var/lib/docker/containers
16M /var/lib/docker/image
60K /var/lib/docker/network
7.6G /var/lib/docker/overlay2
docker system df
を使用するとDockerが使用するディスクの状況を表示することができます。
マニュアル:
https://docs.docker.com/engine/reference/commandline/system_prune/
[root@ip-xxx-xx-x-xxx centos]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 128 7 5.48GB 4.698GB (85%)
Containers 9 3 504.6MB 503.9MB (99%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
RECLAIMABLE
の使用量が高い状態です。
RECLAIMABLE
は、「再生可能」という意味で、「使用されていない」イメージによって消費されるスペースです。
今回はこの領域を削除すれば、ディスクの使用量を減らせそうです。
RECLAIMABLE
を削除するには、docker system prune -a
コマンドを使用します。
このコマンドを使用するとdockerの未使用データを削除してくれます。
マニュアル:
https://docs.docker.com/engine/reference/commandline/system_prune/
では、こちらのコマンドを実行してみます。
[root@ip-xxx-xx-x-xxx centos]# docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
Deleted Containers:
0c9bf1bce2e58cf28e5b4fc3d3858ec968b9dec0a121facc2dc164
・・・・・
Deleted Images:
deleted: sha256:0b33013049605f4f6c3a1e87290bf7f179d49d5d09a8a2b88a7c0c96bd884d44
・・・・・
Total reclaimed space: 4.419GB
結果を確認すると、無事RECLAIMABLE
の領域が削除されています。
コマンド実行直後でも、ブログサイトには特に問題なくアクセスできました。
[root@ip-xxx-xx-x-xxx centos]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 3 1.665GB 0B (0%)
Containers 3 3 681.6kB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
あらためてoverlay2
にdu
コマンドを実行すると7.6G
だったサイズが3.3G
まで減っています。
[root@ip-xxx-xx-x-xxx centos]# du -sh /var/lib/docker/overlay2/
3.3G /var/lib/docker/overlay2/
また、df
コマンドを実行すると、先ほどはディスクを14G
使用していましたが9.0G
まで減っています。使用率も50%以下となっており、これでひとまず安心です。
[root@ip-xxx-xx-x-xxx centos]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 20G 9.0G 12G 45% /