2024-01-04/VPS鯖の容量空け
code:du-root-d1
$ sudo du -h -t10M -d1 --exclude=mnt --exclude=proc /
3.8G /nix
196M /boot
6.2G /usr
7.7G /snap
83G /var
17G /home
41M /root
117G /
code:du-root-d2
$ sudo du -h -t10M -d2 --exclude=mnt --exclude=proc /
3.7G /nix/store
18M /nix/var
3.8G /nix
196M /boot
193M /usr/include
866M /usr/share
408M /usr/src
3.6G /usr/lib
161M /usr/libexec
475M /usr/bin
452M /usr/local
46M /usr/sbin
6.2G /usr
463M /snap/core22
701M /snap/chromium
377M /snap/cups
2.3G /snap/gnome-42-2204
360M /snap/gtk-common-themes
385M /snap/core20
236M /snap/snapd
172M /snap/oracle-cloud-agent
817M /snap/lxd
1.7G /snap/gnome-3-38-2004
313M /snap/core18
7.7G /snap
1.3G /var/cache
80G /var/lib
35M /var/snap
1.2G /var/log
83G /var
17G /home/qser
17G /home
21M /root/.node
18M /root/.npm
41M /root
117G /
code:du-a-usr-lib-d1
$ sudo du -h -t10M -d1 -a /usr/lib
20M /usr/lib/udev
48M /usr/lib/python3.10
1.1G /usr/lib/aarch64-linux-gnu
243M /usr/lib/jvm
139M /usr/lib/gcc
80M /usr/lib/postgresql
448M /usr/lib/python3
78M /usr/lib/snapd
1.5G /usr/lib/modules
11M /usr/lib/systemd
11M /usr/lib/grub
3.6G /usr/lib
code:du-a-usr-lib-d2
qser@arm-a1-20211209-1:/$ sudo du -h -t10M -d2 -a /usr/lib
11M /usr/lib/udev/hwdb.bin
20M /usr/lib/udev
18M /usr/lib/python3.10/config-3.10-aarch64-linux-gnu
48M /usr/lib/python3.10
15M /usr/lib/aarch64-linux-gnu/libcodec2.so.1.0
25M /usr/lib/aarch64-linux-gnu/perl
14M /usr/lib/aarch64-linux-gnu/android
59M /usr/lib/aarch64-linux-gnu/openblas-pthread
98M /usr/lib/aarch64-linux-gnu/libLLVM-14.so.1
29M /usr/lib/aarch64-linux-gnu/libicudata.so.70.1
107M /usr/lib/aarch64-linux-gnu/libLLVM-15.so.1
40M /usr/lib/aarch64-linux-gnu/dri
12M /usr/lib/aarch64-linux-gnu/libavcodec.so.58.134.100
20M /usr/lib/aarch64-linux-gnu/samba
12M /usr/lib/aarch64-linux-gnu/vdpau
39M /usr/lib/aarch64-linux-gnu/guile
27M /usr/lib/aarch64-linux-gnu/libicudata.so.66.1
15M /usr/lib/aarch64-linux-gnu/libasan.so.5.0.0
63M /usr/lib/aarch64-linux-gnu/libLLVM-10.so.1
24M /usr/lib/aarch64-linux-gnu/libgs.so.9.55
88M /usr/lib/aarch64-linux-gnu/libLLVM-13.so.1
1.1G /usr/lib/aarch64-linux-gnu
243M /usr/lib/jvm/java-11-openjdk-arm64
243M /usr/lib/jvm
139M /usr/lib/gcc/aarch64-linux-gnu
139M /usr/lib/gcc
38M /usr/lib/postgresql/12
42M /usr/lib/postgresql/14
80M /usr/lib/postgresql
448M /usr/lib/python3/dist-packages
448M /usr/lib/python3
20M /usr/lib/snapd/snapd
78M /usr/lib/snapd
473M /usr/lib/modules/5.15.0-1049-oracle
473M /usr/lib/modules/5.15.0-1048-oracle
473M /usr/lib/modules/5.15.0-1047-oracle
1.5G /usr/lib/modules
11M /usr/lib/systemd
11M /usr/lib/grub/arm64-efi
11M /usr/lib/grub
3.6G /usr/lib
code:du-var-cache-d2
$ sudo du -h -t10M -d2 -a /var/cache
11M /var/cache/apparmor
44M /var/cache/apt/pkgcache.bin
135M /var/cache/apt/archives
44M /var/cache/apt/srcpkgcache.bin
221M /var/cache/apt
764M /var/cache/netdata/netdata-meta.db
252M /var/cache/netdata/dbengine
1016M /var/cache/netdata
1.3G /var/cache
code:du-var-log-d2
$ sudo du -h -t10M -d2 -a /var/log
118M /var/log/syslog.1
11M /var/log/cloud-init.log
22M /var/log/syslog
801M /var/log/journal/93ded27d0ae14407b5c19daf52291b01
801M /var/log/journal
14M /var/log/oracle-cloud-agent
13M /var/log/atop/atop_20231212
25M /var/log/atop/atop_20231208
25M /var/log/atop/atop_20231206
12M /var/log/atop/atop_20231209
25M /var/log/atop/atop_20231207
24M /var/log/atop/atop_20240101
141M /var/log/atop
1.2G /var/log
code:du-var-docker-d2
$ sudo du -h -t10M -d2 -a /var/lib
86M /var/lib/docker/image
52G /var/lib/docker/overlay2
24G /var/lib/docker/containers
241M /var/lib/docker/volumes
56M /var/lib/docker/buildkit
76G /var/lib/docker
65M /var/lib/dpkg/info
69M /var/lib/dpkg
65M /var/lib/plocate/plocate.db
65M /var/lib/plocate
151M /var/lib/apt/lists
151M /var/lib/apt
40M /var/lib/postgresql/12
42M /var/lib/postgresql/14
82M /var/lib/postgresql
232M /var/lib/snapd/seed
1.5G /var/lib/snapd/cache
2.5G /var/lib/snapd/snaps
4.2G /var/lib/snapd
80G /var/lib
GPT-4に聞く
code:me
私は現在 Ubuntu サーバーのストレージの整理をしています。 このサーバーでは、主に Docker や Docker Compose を用いて複数のサービスを稼働させています。
du コマンドでディレクトリごとの合計ファイルサイズを確認していると、 /var/lib/docker ディレクトリの容量が大きいことに気づきました。
/var/lib/docker に対する du コマンドの出力は以下の通りです。
`
$ sudo du -h -t10M -d1 -a /var/lib/docker
86M /var/lib/docker/image
52G /var/lib/docker/overlay2
24G /var/lib/docker/containers
241M /var/lib/docker/volumes
56M /var/lib/docker/buildkit
76G /var/lib/docker
`
この出力から、ストレージの使用状況について分かることを列挙してください。
また、より細かい情報(コンテナやサービス毎の使用量など)を知るためにはどのような手段が使えるか説明してください。
code:gpt.md
/var/lib/docker ディレクトリの du コマンドの出力を見ると、ストレージの使用状況について以下のことが分かります。
1. **overlay2ディレクトリの使用量が最も大きい**: このディレクトリは Docker のイメージ、コンテナ、ボリュームのデータレイヤを格納します。合計で約52GBを使用しています。これは Docker イメージやコンテナが多くのディスクスペースを消費していることを示しています。
2. **containersディレクトリも大きな容量を占めている**: 約24GBのスペースを使用しており、これは実行中や停止したコンテナのデータが格納されていることを意味します。
3. **他のディレクトリの使用量は比較的小さい**: image、volumes、buildkit ディレクトリは合計でも約400MB程度で、全体の容量に対しては小さな割合です。
より細かい情報を知るために使える手段は以下の通りです。
- **Docker コマンドの使用**: docker ps、docker images、docker volume ls などのコマンドを使用して、実行中のコンテナ、利用可能なイメージ、ボリュームのリストとそのサイズを確認できます。
- **Docker インスペクトコマンド**: docker inspect コマンドを使って特定のコンテナやイメージに関する詳細情報を取得できます。
- **ログファイルの確認**: /var/lib/docker/containers ディレクトリ内には各コンテナのログファイルがあり、これらが大きな容量を占める可能性があります。
- **特定のツールの使用**: Docker のディスク使用状況を分析するための専用ツール(例えば docker system df や DockerSlim など)を使用して、より詳細な分析を行うことができます。
これらの手段を用いることで、Docker サービスごとの具体的なストレージ使用状況を把握し、適切な整理や最適化を行うことが可能になります。
DockerSlim?
ビルド時にイメージを軽量化するツールっぽい。多分違う
code:docker-system-df
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 37 13 15.15GB 12.63GB (83%)
Containers 18 18 3.176GB 0B (0%)
Local Volumes 8 3 225.3MB 49.33MB (21%)
Build Cache 268 0 14.37GB 14.37GB
ログファイルを見てみる
code:log
$ sudo bash -c "cd /var/lib/docker/containers; sudo du -h -t10M -d1 -a"
12M ./a58066d41578a96fbda962a0ed047e8a6372f5edf268090a4aee09931f1a3447
78M ./7c6839ba0132ca10d5b39debe1e7e092ee97f9bea89bcded9073f37d5e8b462f
198M ./518c977fc2e1bbe01695c6f3d49ad2d5c810ed4aeb526484771b450634767105
18M ./0f8b679d730f2faf99da151185b14fbc714ce160b13c5fa29370467dec6d957a
23G ./7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd
143M ./8e7313d17a97e1553bffcc79f0b5458ed41839a4a71d9af6e68197be5b5fa193
150M ./56a3348a5da15584b45d5b65e7843a2a9937cde0d3120bf30f4b66ddfb203027
101M ./814ddc7cd715386374e746e63de0cbc244f263239478470841b70fb4714470c0
26M ./8e3739bc50d08df746a169f927543fcced33f3cab0fcc73eccc158ce92ff1666
24G .
code:log
$ sudo bash -c "cd /var/lib/docker/containers; sudo du -h -t10M -a ./7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd"
23G ./7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd/7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd-json.log
23G ./7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd
うお、やべぇログファイル。。。
該当コンテナは searchnos の searcher だった。
/var/lib/docker/containers/7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd/7958a316b65db0912496b568ff09c36cf9865f94e6d99a27809325a3b9b5a7fd-json.log の内容を軽く眺めてみると、 req や filter の内容がそのまま載っている。そりゃ容量食うわ。
docker log rotation で調べる。
(デフォルトの) JSON Fileログドライバーはログローテーションをしないため、ローテーションさせたい場合は、Localログドライバーを使いましょう
Docker keeps the json-file logging driver (without log-rotation) as a default to remain backward compatibility with older versions of Docker, and for situations where Docker is used as runtime for Kubernetes.
ここに書かれた通りに /etc/docker/daemon.json で log-driver を local に設定して、 docker を再起動してから各ディレクトリで docker compose down && docker compose up -d する