【Ubuntu】ディスクがいっぱい(No space left on device)になったときの調べ方
この記事で解決できること
- Ubuntuサーバで「ディスクがいっぱい」と言われたとき、どこが増えているかを素早く特定できます
dfとduの使い分けが分かります- ログ肥大(Nginx/Apache、WordPress周辺、Docker、systemd journal)を疑うときの確認手順が分かります
💡 結論(最短)
df -hで どの領域(マウントポイント)が埋まっているか を特定- 埋まっている領域で
duを使い、大きいディレクトリ → 大きいファイル の順に絞り込み /var/logとjournalctlの使用量を見て、ログ肥大かどうか を切り分け
⚠️ 前提(対象環境)
- OS:Ubuntu(サーバ)
- シェル:bash
- 権限:
sudoが使える想定(使えない場合は、読めない場所はスキップしてください)
1. まずは「どこが埋まっているか」を確認する(df)
$ df -h
注目ポイント
Use%が高い行(例:90%超)Mounted on(どこにマウントされているか)
よくあるパターン
/(ルート)が満杯/varが別パーティションで満杯(ログやサービスデータが溜まりやすい)- Docker利用で
/var/lib/docker配下が肥大
inode枯渇も確認(ファイル数が多すぎるケース)
容量が残っているのに「空きがない」系の症状は、inode枯渇の可能性があります。
$ df -ih
IUse% が高い(例:100%近い)場合は、小さいファイルが大量にある可能性が高いです。
2. 「何が増えているか」を上から探す(du)
df で埋まっているマウントポイントが分かったら、その配下で du を使って原因を絞ります。
ルート配下の大きいディレクトリをざっくり見る
(ルート / が満杯の場合)
$ sudo du -x -h -d 1 / | sort -h
-x:別マウントをまたがない(原因の切り分けがしやすい)-d 1:深さ1階層まで(まずは粗く)sort -h:サイズ順
ここで大きいディレクトリ(例:/var、/home)が見えたら、次はその中を掘ります。
/var が大きいとき(ログ・Docker・DBが溜まりやすい)
$ sudo du -x -h -d 1 /var | sort -h
よく肥大する候補
/var/log(ログ)/var/lib(DockerやDBなどのデータ)/var/cache(キャッシュ)
3. ログ肥大の切り分け(/var/log と systemd journal)
/var/log のサイズを見る
$ sudo du -h -d 1 /var/log | sort -h
さらに「ファイル単位」で大きいものを探します:
$ sudo find /var/log -type f -printf "%s %p\n" | sort -n | tail -n 20
ここで候補に上がりやすい例
- Nginx:
/var/log/nginx/access.logerror.log - Apache:
/var/log/apache2/access.logerror.log - システム:
/var/log/syslogauth.log
まずは「何が増えているか」を見つけるのが目的です。いきなり削除はしないでください。
systemd journal のサイズを見る(journalctl)
Ubuntuでは journal(バイナリログ)が肥大していることがあります。
$ sudo journalctl --disk-usage
4. Docker を使っている場合の確認(ログ/イメージ肥大の入口)
Docker環境だと、ログやイメージ、ボリュームで容量を使いがちです。
Docker全体の使用量を確認
$ docker system df
Images/Containers/Local Volumesのどれが大きいかの当たりを付けます
💡 詳細な削除は事故りやすいので、ここでは「原因の方向性を掴む」までに留めるのがおすすめです。
5. 応急処置(安全寄り):まず空きを作る
根本原因(ログが出続ける、エラーが止まらない等)を止めないと再発します。
ただし緊急時は、まず空きを作ってサービスを復旧させる必要があります。
古いjournalを削除して容量を制限(比較的安全)
最大1GBまでに抑える例:
$ sudo journalctl --vacuum-size=1G
日数ベース(例:7日より古いログを削除):
$ sudo journalctl --vacuum-time=7d
💡 迷う場合は --vacuum-size のほうが扱いやすいです。
ログが異常に増え続ける場合(根本原因の入口)
Nginx/Apache/WordPressでエラーが出続けると、ログが止まらず再発します。
- Nginx/Apacheのエラーログ(
error.log) - WordPress/PHP-FPMのエラーログ
- アプリの例外ログ
まずは「何のエラーが連続しているか」を確認し、原因のサービスを止める/直す方向に進めます。
6. 確認(直ったかチェック)
作業後は必ず df で改善を確認します。
$ df -h $ df -ih
⚠️ 事故らないための注意点
- 原因特定の前に削除しない(消すほど悪化することがあります)
/var/libはDocker/DBなどのデータがあるため、闇雲に触らない- ログ削除は「出続けている原因」が残っていると再発する(根本原因の修正が必要)
📋 検証環境
本記事のコマンドは Ubuntu 24.04 LTS / bash 5.2 で動作確認済みです。