VPSのディスク容量が限界に達したとき
ある日、システムから警告が届きます。VPSのディスク使用率が95%に達しています。これは、Ubuntuをメンテナンスなしで3〜6ヶ月運用していると非常に高い確率で発生する状況です。Linuxのクリーンアップは単に一時ファイルを削除するだけではありません。容量を圧迫している本当の「犯人」は、不要な依存パッケージ、古いカーネル、そして密かに蓄積された数GBものログである場合がほとんどです。
20以上のVPSクラスターを管理してきた経験に基づき、わずか数分で2GBから10GBの容量を取り戻すためのクリーンアップ手順をまとめました。これにより,ストレージが解放されるだけでなく、将来のソフトウェアアップグレード時の不要な競合も防ぐことができます。
なぜUbuntuのディスク使用量は時間とともに増え続けるのか?
孤立したパッケージ(Orphaned Packages)
例えばNginxをインストールすると、システムは10個の依存ライブラリも同時にインストールします。しかし、Nginxを削除しても、Ubuntuは他のソフトウェアがこれらを必要とする可能性を考慮して、その10個のライブラリを残したままにすることがよくあります。その結果、誰にも使われない残骸がシステム内に溢れることになります。
古いカーネルの蓄積
カーネル(Kernel)を更新するたびに、Ubuntuは起動トラブルに備えて古いバージョンを保持します。しかし、各カーネルとその関連ファイルは約300MB〜500MBを占有します。5〜7個も溜まってしまえば、それだけで数GBの容量を無駄にすることになります。
残存する設定ファイル(Residual Config)
通常のapt removeコマンドは実行ファイルのみを削除し、/etc内の設定ファイルは保持します。そのソフトウェアを二度と使わない場合、これらのファイルはシステムを煩雑にするだけで、何の役にも立ちません。
システムを徹底的にクリーンアップする手順
1. APTパッケージマネージャーの最適化
基本的なautoremoveだけでなく、--purgeフラグを追加して、依存パッケージに付随する不要な設定ファイルまで一掃しましょう。
sudo apt update
sudo apt autoremove --purge -y
sudo apt autoclean
- autoremove –purge: どのプログラムからも使用されていないライブラリを完全に削除します。
- autoclean: ローカルキャッシュにある古いインストールファイル(.deb)をクリーンアップします。
2. 専用ツールによる孤立したパッケージのスキャン
APTが「必要かもしれない」と判断して見逃してしまうライブラリもあります。deborphanを使用すると、これらをより正確に見つけることができます。
インストールと実行の手順:
sudo apt install deborphan -y
sudo apt purge $(deborphan) -y
ヒント:このコマンドは2〜3回実行することをお勧めします。一段階目の孤立パッケージを削除すると、それらに依存していたパッケージが新たに孤立することがあるからです。
3. 設定ファイルの残骸(rc状態)を完全に削除
dpkgでパッケージを一覧表示すると、多くのパッケージがrc状態(削除済みだが設定ファイルが残っている状態)になっていることがあります。以下のコマンドでこれらを一括削除できます。
dpkg -l | grep '^rc' | awk '{print $2}' | xargs sudo dpkg --purge
このコマンドはリストをフィルタリングしてパッケージ名を取得し、完全に削除を実行します。これは/etcディレクトリをクリーンにする最速の方法です。
4. 古いカーネルの安全な管理
まず、誤って削除しないように現在使用中のカーネルバージョンを確認します。
uname -r
新しいUbuntu(20.04以降)は、autoremoveによる自動クリーンアップが賢くなっています。しかし、特定のバージョンを手動で削除して容量を確保したい場合は、以下を使用します。
sudo apt purge linux-image-5.x.x-generic -y
注意: 最新バージョンでブートエラーが発生した場合に備えて、安定動作する古いカーネルを少なくとも1つは残しておいてください。
5. Systemdログによる容量消費の制限
Journald(システムログ)は、デフォルトでディスクの最大10%または4GBまで消費することがあります。長期間運用しているサーバーで最も容量を回復できるのはここです。
現在のログ使用量を確認する:
journalctl --disk-usage
ログを過去3日分のみ保持、または最大500MBに制限する設定:
sudo journalctl --vacuum-time=3d
sudo journalctl --vacuum-size=500M
6. Snapキャッシュのクリーンアップ
Snap経由でソフトウェアをインストールしている場合、システムは各アプリの古いバージョンを少なくとも2つ保存します。以下のスクリプトを実行して、無効化(disabled)されたバージョンを削除します。
Snap経由でソフトウェアをインストールしている場合、以下のスクリプトを実行して、無効化(disabled)されたバージョンを削除します。
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
まとめ
Ubuntuのクリーンアップは毎月の定期的な習慣にするべきです。忙しい場合は、ログの削除や基本的なAPTコマンドを自動実行する cron ジョブを設定しましょう。システムをクリーンに保つことは、VPSのアップグレード費用を節約するだけでなく、サーバーのパフォーマンス維持にもつながります。
さあ、df -hと入力して、どれくらいの容量が回復したか確認してみましょう。効率的なシステム管理を!

