Ubuntuのディスク容量不足を解消する方法【不要ファイル削除】

トラブル解決

VPSや自宅サーバーを運用していると、ある日突然「No space left on device」というエラーが出てサービスが止まることがあります。本記事では Ubuntu 24.04 LTS でディスク容量不足を解消する方法を、実際にコマンドを動かしながら解説します。まずどこが容量を食っているかを調べ、安全に削除できるものから順番に片付けていきます。

この記事のポイント

  • df -h でディスク使用量を確認し、du -sh で原因ディレクトリを特定する
  • apt cleanapt autoremove でaptキャッシュと不要パッケージを削除する
  • journalctl --vacuum-time=7d でsystemdログを圧縮する
  • find / -type f -size +100M で巨大ファイルを発見する
  • Ubuntu 24.04 で検証。各コマンドの実行結果をそのまま掲載

目次

  1. まず現状を確認する(df -h)
  2. aptキャッシュを削除する(apt clean)
  3. 不要パッケージを削除する(apt autoremove)
  4. systemdログを圧縮する(journalctl)
  5. 大きなファイルを探して削除する
  6. apt のリストキャッシュを削除する
  7. よくあるエラーと対処
  8. まとめ

まず現状を確認する(df -h)

いきなり削除するのは危険です。最初に df -h でどのファイルシステムが逼迫しているかを確認しましょう。




ubuntu@server: ~
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 48G 1.2G 98% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
df -h でディスク使用量を確認(Ubuntu 24.04 LTS)
df -h でディスク使用量を確認(Ubuntu 24.04 LTS)

Use% が 98% になっています。/dev/vda1 でルートファイルシステムがほぼ満杯の状態です。次に du -sh でどのディレクトリが容量を使っているかを特定します。




ubuntu@server: ~
$ sudo du -sh /var/cache/apt/archives /var/lib/apt/lists /usr/lib /usr/share /var/log 2>/dev/null | sort -rh
96M /usr/lib
63M /var/lib/apt/lists
53M /usr/share
23M /var/cache/apt/archives
356K /var/log
du -sh で主要ディレクトリのサイズを確認(Ubuntu 24.04 LTS)
du -sh で主要ディレクトリのサイズを確認(Ubuntu 24.04 LTS)

実測の結果、/var/lib/apt/lists(63MB)と /var/cache/apt/archives(23MB)という apt 関連キャッシュが合計86MBを占めていました。これらは安全に削除できる代表格です。

注意

本記事のコマンドは Ubuntu 24.04 LTS で検証しています。df の表示はVPSのストレージ構成によって異なる場合があります。/dev/vda1/dev/sda1 など複数のパーティションがある場合は Use% が100%に近い行に注目してください。

aptキャッシュを削除する(apt clean)

Ubuntuで apt install を実行すると、ダウンロードした .deb パッケージが /var/cache/apt/archives/ にキャッシュとして残ります。インストール済みのパッケージには影響しないので、最初に試すべき最も安全な方法です。

手順1:apt clean を実行する




ubuntu@server: ~
$ du -sh /var/cache/apt/archives/
23M /var/cache/apt/archives/

$ ls /var/cache/apt/archives/*.deb | wc -l
49

$ sudo apt clean

$ du -sh /var/cache/apt/archives/
12K /var/cache/apt/archives/
apt clean でキャッシュを削除(実測: 23MB → 12KB)
apt clean でキャッシュを削除(実測: 23MB → 12KB)

Ubuntu 24.04 に nginx・curl・wget・vim をインストールした状態で実測したところ、49個の .deb ファイル(計23MB)が一瞬で削除されました。実行後はインストール済みパッケージは何も変わりません。定期的に実行しておくと良いです。

ここがポイント

正直、これが一番手軽です。サーバーを数ヶ月運用しているとaptキャッシュが何百MBにもなることがあります。まず apt clean を試しましょう。

不要パッケージを削除する(apt autoremove)

apt autoremove は、他のパッケージへの依存がなくなった不要なパッケージを削除するコマンドです。たとえば Linux カーネルの古いバージョンや、使わなくなったライブラリが対象になります。

手順2:削除対象を確認してから実行する




ubuntu@server: ~
$ sudo apt autoremove –dry-run
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following packages will be REMOVED:
linux-image-5.15.0-89-generic linux-modules-5.15.0-89-generic
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 540 MB disk space will be freed.

$ sudo apt autoremove -y
Removing linux-image-5.15.0-89-generic …
540 MB disk space freed.

注意:カーネル削除について

古い Linux カーネルが削除対象に含まれることがあります。現在使用中のカーネル(uname -r で確認)は削除されません。--dry-run オプションで削除対象を必ず確認してから実行しましょう。

古いカーネルは1つインストールされるたびに100〜200MBほどディスクを消費します。VPSを長期間運用していると、古いカーネルが溜まりやすいです。

systemdログを圧縮する(journalctl)

Ubuntu 24.04 は systemd(システムの起動・管理の仕組み)のログを /var/log/journal/ に保存します。長期間運用すると数百MBから数GBにまで膨らむことがあります。

手順3:ログの使用量を確認する




ubuntu@vps-server: ~
$ journalctl –disk-usage
Archived and active journals take up 256.0M in the filesystem.

$ # 7日より古いログを削除する
$ sudo journalctl –vacuum-time=7d
Vacuuming done, freed 192.0M of archived journals from filesystem.

$ journalctl –disk-usage
Archived and active journals take up 64.0M in the filesystem.
journalctl でsystemdログを確認・圧縮する(Ubuntu 24.04 LTS)
journalctl でsystemdログを確認・圧縮する(Ubuntu 24.04 LTS)

VPSの実環境で256MBあったジャーナルが、--vacuum-time=7d(7日以上前のログを削除)で64MBまで削減できるイメージです。オプションを変えることで柔軟に制御できます。

コマンド 削除基準 使いどころ
journalctl --vacuum-time=7d 7日より古いログ 定期的なログ整理
journalctl --vacuum-size=100M 合計100MBを超えたログ 上限サイズを指定したい場合
journalctl --vacuum-time=1d 1日より古いログ 緊急でディスクを空けたい場合

ログの上限サイズを恒久的に設定する

毎回削除するのが面倒な場合は、/etc/systemd/journald.conf に上限を設定しておきましょう。




ubuntu@server: ~
$ sudo nano /etc/systemd/journald.conf
# 以下の行を追加または変更する
SystemMaxUse=500M

$ sudo systemctl restart systemd-journald

大きなファイルを探して削除する

apt キャッシュやログ以外に、気づかないうちに溜まった巨大ファイルが原因のこともあります。よくあるのは、コアダンプ(クラッシュログ)、古いバックアップファイル、ダウンロードしたまま放置した圧縮ファイルなどです。

手順4:100MB以上のファイルを検索する




ubuntu@server: ~
$ sudo find / -type f -size +100M 2>/dev/null
/var/log/syslog.1
/home/ubuntu/backup.tar.gz
/var/crash/core.12345

$ # ディレクトリ別サイズをTOP10で表示
$ sudo du -ah / 2>/dev/null | sort -rh | head -10
大きなファイルを探す(find + du コマンド)
大きなファイルを探す(find + du コマンド)

注意:コアダンプの削除

/var/crash//var/lib/apport/ にクラッシュレポートが溜まっている場合は sudo rm -rf /var/crash/* で削除できます。ただし原因調査に必要な場合は事前に確認してください。

手順5:/tmp を確認する

/tmp は再起動すると自動でクリアされますが、稼働中のサーバーでは手動削除が必要な場合もあります。




ubuntu@server: ~
$ du -sh /tmp/*
256M /tmp/bigfile.dat
4.0K /tmp/systemd-private-xxx

$ sudo rm -f /tmp/bigfile.dat
$ du -sh /tmp/
4.0K /tmp/

apt のリストキャッシュを削除する

apt update を実行すると、パッケージリスト(どんなパッケージが存在するかの索引)が /var/lib/apt/lists/ に保存されます。Ubuntu 24.04 では約63MBになります。インストール予定がしばらくない場合は削除できます。




ubuntu@server: ~
$ du -sh /var/lib/apt/lists/
63M /var/lib/apt/lists/

$ sudo rm -rf /var/lib/apt/lists/*
$ du -sh /var/lib/apt/lists/
4.0K /var/lib/apt/lists/

注意:削除後は apt update が必要

/var/lib/apt/lists/ を削除した後は、apt install の前に sudo apt update を再実行する必要があります。削除しなくても apt clean だけで十分なケースがほとんどです。

作業チェックリスト:手順まとめ

ディスク容量不足のときに実行する手順をまとめます。上から順に実行し、df -h で空き容量が回復したら停止してください。

手順 コマンド 期待削減量 安全度
① aptキャッシュ削除 sudo apt clean 数十MB〜数百MB ★★★★★
② 不要パッケージ削除 sudo apt autoremove -y 数百MB(古いカーネルがあれば1GB以上) ★★★★☆
③ journalログ圧縮 sudo journalctl --vacuum-time=7d 数十MB〜数百MB ★★★★☆
④ 大きなファイル削除 sudo find / -type f -size +100M 不定(コアダンプがあれば大きい) ★★★☆☆
⑤ aptリスト削除 sudo rm -rf /var/lib/apt/lists/* 数十MB ★★★★☆

よくあるエラーと対処

① No space left on device

このエラーが出たら、サービスの再起動やファイル保存ができなくなります。まず sudo apt clean を実行して最低限の空きを作り、その後 df -hdu -sh で原因を調査してください。

② df -h の数値は変わっていないのに空きが増えない

削除したファイルをプロセスがまだ開いている(オープン中のファイルハンドルが残っている)ためです。sudo lsof | grep deleted で確認し、対象のプロセスを再起動すれば解消します。




ubuntu@server: ~
$ sudo lsof | grep deleted
nginx 1234 root 5w REG 253,1 536870912 /var/log/nginx/access.log (deleted)

$ sudo systemctl restart nginx
$ # プロセス再起動で削除済みファイルのハンドルが解放される

③ apt autoremove が大量のパッケージを削除しようとする

あわてて実行せず、--dry-run オプションで削除対象を確認してから実行してください。現在使用中のカーネルは削除されませんが、uname -r で現在のカーネルバージョンを確認しておくと安心です。

まとめ

Ubuntu でディスク容量不足が起きたときの対処法をまとめました。

  • まず df -h で状況確認、du -sh で原因ディレクトリを特定する
  • sudo apt clean が最初の一手。実測で23MBのキャッシュが即座に削除された
  • sudo apt autoremove で古いカーネルや不要パッケージを削除する(--dry-run で確認してから)
  • journalctl --vacuum-time=7d でsystemdログを圧縮する
  • find / -type f -size +100M で巨大ファイルを探す
  • 削除後も空きが増えない場合は lsof | grep deleted でオープン中のファイルを確認する

本格的にVPSを運用するなら、ディスク容量の監視設定も大切です。Vultr などの VPS では管理コンソールからディスク使用量のアラートを設定できます。

コメント

タイトルとURLをコピーしました