Ubuntu でファイル整理メモ

Ubuntu 18.04 でエラー発生

ある日、突然 Let's Encrypt から証明書の期限が切れるメールが届きました。
その証明書は、開発サーバ( Ubuntu 18.04 )で利用していたドメインでした。 cron で自動更新できるようにしていたのに、なぜか更新できていない状態になっていたようでした。

実際にサーバに SSH で接続し、手動で証明書の更新を試みます。
しかし、「No space left on device」とエラーが表示され、実行できないようでした。そのほか、何か処理を行おうとしても同様なエラーが発生します。

ディスク使用量の確認

そのためディスク使用量の確認をしてみます。

*****:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            977M     0  977M   0% /dev
tmpfs           199M   21M  178M  11% /run
/dev/xvda1      7.7G  7.7G     0 100% /
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           991M     0  991M   0% /sys/fs/cgroup
 :
tmpfs           199M     0  199M   0% /run/user/1000

ルートが100%ですね。しばらく放置していました。。。ディスクの整理をしたいと思います。

*****:~$ sudo du -sh /*
15M     /bin
159M    /boot
0       /dev
9.3M    /etc
178M    /home
0       /initrd.img
0       /initrd.img.old
408M    /lib
4.0K    /lib64
16K     /lost+found
4.0K    /media
4.0K    /mnt
4.0K    /opt
0       /proc
60K     /root
21M     /run
15M     /sbin
1.3G    /snap
4.0K    /srv
0       /sys
48K     /tmp
4.8G    /usr
2.2G    /var
0       /vmlinuz
0       /vmlinuz.old

「/usr」や「/var」が使用量が高いですね。何かしようとするとエラーが発生するので、手っ取り早くログファイルの削除から行います。

Journal ログの削除

もう少し具体的に掘り下げて確認します。

*****:~$ sudo du -sh /var/*
576K    /var/backups
131M    /var/cache
4.0K    /var/crash
1.1G    /var/lib
4.0K    /var/local
0       /var/lock
812M    /var/log
4.0K    /var/mail
4.0K    /var/opt
0       /var/run
52K     /var/snap
36K     /var/spool
32K     /var/tmp
206M    /var/www

「/var/log」は比較的削除しやすいので、さらにこちらを掘り下げましょう。

*****:~$ sudo du -sh /var/log/*
0       /var/log/alternatives.log
4.0K    /var/log/alternatives.log.1
 :
120K    /var/log/amazon
212K    /var/log/apache2
128K    /var/log/apt
1.3M    /var/log/auth.log
2.4M    /var/log/auth.log.1
 :
340K    /var/log/btmp
2.4M    /var/log/btmp.1
28K     /var/log/cloud-init-output.log
840K    /var/log/cloud-init.log
4.0K    /var/log/dist-upgrade
0       /var/log/dpkg.log
8.0K    /var/log/dpkg.log.1
 :
802M    /var/log/journal
0       /var/log/kern.log
4.0K    /var/log/kern.log.1
 :
4.0K    /var/log/landscape
4.0K    /var/log/lastlog
252K    /var/log/letsencrypt
68K     /var/log/letsencrypt-renew.log
4.0K    /var/log/lxd
52K     /var/log/syslog
328K    /var/log/syslog.1
 :
4.0K    /var/log/tallylog
64K     /var/log/unattended-upgrades
0       /var/log/wtmp
4.0K    /var/log/wtmp.1

「/var/log/journal」が大きいですね。これは「journalctl」でログを整理します。念のため使用量を確認します。

*****:~$ journalctl --disk-usage
Archived and active journals take up 801.8M in the file system.

3日分ほど残してあとは削除します。

*****:~$ sudo journalctl --vacuum-time=3d
Vacuuming done, freed 0B of archived journals from /run/log/journal/901443452bfb4bef949b03319d972dc3.
Vacuuming done, freed 0B of archived journals from /var/log/journal.
Vacuuming done, freed 0B of archived journals from /run/log/journal.
Deleted empty archived journal /var/log/journal/901443452bfb4bef949b03319d972dc3/system@0005e81cf21a7900-2a0f744923fd9632.journal~ (704.0K).
Deleted empty archived journal /var/log/journal/901443452bfb4bef949b03319d972dc3/system@0005e8452dc39da4-c42f2a2d4a1d0662.journal~ (4.0K).
 :

再度使用量を確認します。

*****:~$ journalctl --disk-usage
Archived and active journals take up 32.0M in the file system.

サイズが小さくなりました。これでディスクに余裕ができたので、いろいろなコマンドを入力してもエラーが出なくなりました。

apt の整理

あと「/usr」もサイズが大きいので、更に掘り下げます。

*****:~$ sudo du -sh /usr/*
113M    /usr/bin
4.0K    /usr/games
28M     /usr/include
526M    /usr/lib
56K     /usr/local
13M     /usr/sbin
222M    /usr/share
3.9G    /usr/src

「/usr/src」が圧迫していますね。このフォルダには「linux-aws-5.*-headers-5.*.0-****」などの古いカーネルが溜まります。そのためキレイにしてあげる必要があります。手っ取り早く apt にお任せします。

*****:~$ sudo apt autoremove

整理完了

再度ディスクの使用量を確認してみます。

*****:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            977M     0  977M   0% /dev
tmpfs           199M  768K  198M   1% /run
/dev/xvda1      7.7G  3.4G  4.4G  44% /
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           991M     0  991M   0% /sys/fs/cgroup
 :
tmpfs           199M     0  199M   0% /run/user/1000

ルートは 44% まで減りました。これでまたしばらくは大丈夫でしょう。

まとめ

今回ディスクを整理するきっかけとなった最初のメールは、比較的時間に余裕のある時に届いたものでした。コマンドがエラーになっても焦らずに対処できましたが、忙しいときだと思うと怖いですね。
開発サーバなので放置気味だったのですが、ディスク容量を監視しておいたほうがいいと思いました。