Ubuntuにおけるディスク容量の削減について
#Ubuntu #Linux #du #df #ncdu #logrotate #journald
はじめに
しばらくUbuntuをデスクトップ用途で利用していたところ、いつの間にかディスク容量が枯渇してしまっていました...
色々試してみたところ、かなり容量を節約できたのでメモしておきます
ディスク使用量の調査
1. dfで各ファイルシステムの使用量を調べられます
$ df -Th
2. duで特定のディレクトリの使用量を調べられます
$ du -sh ディレクトリ
また、ncduを使うと対話的に確認ができます
3. journalctlでjournaldによって蓄積されたログの使用量などを調べられます
参考
Linuxディスク容量不足の調査と対策法まとめ
Linux Ubuntu の無駄なファイルを確認し、お掃除しよう (おまけでvirtualbox イメージサイズ圧縮方法)
ディスク容量確認コマンドについて
各種ログについて
#/var/log の使用量の調査
code:shell
$ sudo du -h /var/log | sort -hr | head -n 20
logrotateで作成された圧縮済みログファイルの削除
code:shell
$ find /var/log/ -type f -name "*.gz" -delete
ジャーナルの確認 (journald)
journalctlコマンドで使用量の確認
code:shell
$ sudo journalctl --disk-usage
指定した容量まで削減する
code:shell
# 例)
$ sudo journalctl --vacuum-size=500M
必要に応じてjournaldの設定を見直しておく
code:shell
$ sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.d/00-journal-size.conf
# 必要に応じてSystemMaxUse/RuntimeMaxUseあたりを設定する
$ cat /etc/systemd/journald.conf.d/00-journal-size.conf
Journal
SystemMaxUse=1G
RuntimeMaxUse=1G
# journaldを再起動する
$ sudo systemctl restart systemd-journald
# ステータスの確認
$ systemctl status systemd-journald
#/var/log/syslog の確認
これはjournaldを介してrsyslogによって作成されているため、journaldのSystemMaxUseなどの設定が適用されず、肥大化していることがある模様
こちらではrsyslogに関するlogrotateの設定 (/etc/logrotate.d/rsyslog) やrsyslog本体の設定 (/etc/rsyslog.d/50-default.conf)の見直しに関して解説されており、参考になりそうです
logrotateの設定や動作の確認
#/etc/logrotate.conf でcompressを設定しておくと、古いログファイルがgzipで圧縮されるため、必要に応じて有効化しておくと良さそうです
以下のファイルを確認することで、ローテーションが実施された日付などを確認できるようです
code:shell
$ cat /var/lib/logrotate/status
参考
/var/log/journal 以下を掃除する - Shohei Yoshida's Diary
journal ログをきちんと記録・保存する
logging - Difference between /var/log/messages, /var/log/syslog, and /var/log/kern.log? - Ask Ubuntu
Ubuntu 22.04でのsyslog肥大化問題の解消方法
disk usage - How can I free space from a massive 39.5GB /var/log/ folder? - Ask Ubuntu
ubuntu - How can I monitor what logrotate is doing? - Server Fault
logrotate daily and size? - Server Fault
usbfs - How do I limit the size of my syslog? - Ask Ubuntu
Ubuntu 21.10 - Syslog.1 is 23GB in size! - Ask Ubuntu
logging - /var/log/syslog.1 => 60GB | I seem to have stopped the cause, but don't know how to cleanly deal with the size of the logfile - Super User
kernel - How do I stop /var/log/kern.log.1 from consuming all my disk space? - Ask Ubuntu
snap
/var/lib/snapdがかなりの容量を占めているケースがありそうです
不要なパッケージの削除
下記参考ページに記載されている方法で、古いパッケージを削除できそうです
設定
code:shell
$ snap set system refresh.retain=2
参考
Docker
Dockerを多用している場合は、以下のページで紹介されている内容を実施すると、かなり容量を削減できそうです
古いLinuxイメージの削除
1. 現在のカーネルを確認
$ uname -a
2. インストールされているカーネルの確認
$ dpkg --list | egrep 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }'
3. 2で列挙されたものから不要なパッケージを削除
code:shell
# NOTE: 現在のバージョンは消さないよう注意
# NOTE: 2の表示内容を元に、引数は適宜変更する必要があります
$ sudo apt purge apt purge 'linux-image-4.15.0-*-generic' 'linux-modules-extra-4.15.0-*-generic' 'linux-modules-4.15.0-*-generic'
/icons/hr.icon
参考:
XDG_CACHE_HOMEについて
以下で使用量を確認
$ ncdu ~/.cache
ここに各種ツールに関するキャッシュが作成されているため、必要に応じて各ツールに応じた対応を実施する
pre-commitのキャッシュの整理
pre-commit gcを実行すると未使用のフックを削除できます
Homebrewに関するお掃除
以下コマンドでフォーミュラを削除できる
$ brew cleanup -s
/icons/hr.icon
参考:
Node.js関連のキャッシュの削除
npm
npmのキャッシュを削除
$ npm cache clean --force
npxのキャッシュを削除
$ rm -rf ~/.npm/_npx
yarn
1. yarnのキャッシュの使用量を確認
code:shell
$ du -hs $(yarn cache dir)
2. yarnのキャッシュを削除
code:shell
$ yarn cache clean
pnpm
以下のコマンドを実行すると参照されていないパッケージをキャッシュから削除できます
$ pnpm store prune
Bun
以下のコマンドでグローバルキャッシュを削除できます
$ bun pm cache rm
/icons/hr.icon
参考:
Deno
deno cleanを実行すると、DENO_DIRを削除できます
esbuild
~/.cache/esbuild/binにバイナリがキャッシュされているため、古いものは削除するとよさそうです
/icons/hr.icon
参考:
Playwright
~/.cache/ms-playwrightにダウンロードされたブラウザーが保存されている ()
Chrome
~/.config/google-chromeに結構な量のデータが貯まっていることがあります (ブラウザーの履歴やCookieなどの情報が格納されている模様)
chrome://settings/clearBrowserDataからデータを削除すると、容量を削減できます
参考
Brave
~/.config/BraveSoftwareが容量を消費している場合、brave://settings/clearBrowserDataから履歴などを削除可能
その他の参考情報
CheatSheet to Check and clear space on linux - ncduの導入やaptパッケージキャッシュの削除、/var/logの掃除について