2022.01.03  

【Linux】ディスク容量の圧迫調査(Docker overlay2肥大化解決 )

Linux,  Docker    

当ブログサイトのCentOSのディスク使用量が想像以上に増えていたので、調査を行いました。

結論から言えば、Dockerのoverlay2ディレクトリが肥大化していたことが原因です。
当記事は、その調査過程と解決までをメモ書きしたものです。

ディスクの調査

まず、dfコマンドで現状のディスク使用量を確認します。
すると20G14Gディスクが使用されていました。

[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

あらためてoverlay2duコマンドを実行すると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% /
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信