Linuxのストレージ容量を確認する全方法!dfコマンドから可視化ツールまで完全ガイド

Linux

「ディスクの空き容量が残りわずかです」 「どのフォルダが容量を食っているか分からない…」 「ログファイルが知らないうちに巨大化していた!」

Linuxサーバーを運用していると、必ず遭遇するストレージ問題。 容量不足は、システムダウンやサービス停止につながる重大な問題です。

でも、Linuxには強力な容量確認コマンドがたくさんあります。 dfduncdubaobab… 使い方を知れば、容量管理は怖くありません。

この記事では、Linuxのストレージ容量を確認する全方法を、 初心者にも分かりやすく、実例たっぷりで解説します。

容量不足でシステムが止まる前に、適切な監視と管理を始めましょう!


スポンサーリンク
  1. 1. 【基本】dfコマンド:ディスク全体の使用状況
    1. 💾 dfコマンドの基本
    2. 💾 人間が読みやすい形式で表示(-h オプション)
    3. 💾 便利なオプション一覧
    4. 💾 実用的な使い方
  2. 2. duコマンド:ディレクトリごとの使用量
    1. 📁 duコマンドの基本
    2. 📁 階層を指定して調査
    3. 📁 大きいディレクトリを見つける
    4. 📁 特定ファイルの容量確認
  3. 3. 【応用】便利な容量確認ツール
    1. 🔧 ncdu:インタラクティブな容量分析
    2. 🔧 dust:Rustで書かれた高速ツール
    3. 🔧 duf:モダンなdf代替ツール
  4. 4. GUI(グラフィカル)ツールでの確認
    1. 🖥️ GNOME Disks(ディスク)
    2. 🖥️ Baobab(ディスク使用量アナライザー)
    3. 🖥️ KDE Filelight
  5. 5. システム全体の容量分析
    1. 📊 どこが容量を使っているか特定
    2. 📊 隠れた大容量ファイルを見つける
  6. 6. 容量監視の自動化
    1. 🤖 シェルスクリプトで監視
    2. 🤖 cronで定期実行
    3. 🤖 ZabbixやNagiosでの監視
  7. 7. 容量不足時の対処法
    1. 🧹 不要ファイルのクリーンアップ
    2. 🧹 Dockerの容量削減
    3. 🧹 大容量ファイルの圧縮
  8. 8. ファイルシステム別の確認方法
    1. 🗄️ ext4ファイルシステム
    2. 🗄️ XFSファイルシステム
    3. 🗄️ Btrfsファイルシステム
    4. 🗄️ ZFSファイルシステム
  9. 9. トラブルシューティング
    1. ❌ dfとduの結果が一致しない
    2. ❌ “No space left on device”なのに容量がある
    3. ❌ 容量があるのに書き込めない
  10. 10. ベストプラクティスとTips
    1. 💡 定期的な監視
    2. 💡 容量計画
    3. 💡 便利なエイリアス
  11. まとめ:容量管理は予防が大切!

1. 【基本】dfコマンド:ディスク全体の使用状況

💾 dfコマンドの基本

df = disk free(ディスクの空き容量)

最も基本的で、最もよく使うコマンドです。

# 基本形
df

# 実行結果例
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       20511312 8123456  11339280  42% /
/dev/sda2      103081248 45678912 52161672  47% /home
tmpfs            2097152       0   2097152   0% /dev/shm

💾 人間が読みやすい形式で表示(-h オプション)

最もよく使う形式:

df -h

# 実行結果(読みやすい!)
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G  7.8G   11G  42% /
/dev/sda2        99G   44G   50G  47% /home
tmpfs           2.0G     0  2.0G   0% /dev/shm
/dev/sdb1       500G  380G  95G   80% /data

単位の意味:

  • K:キロバイト
  • M:メガバイト
  • G:ギガバイト
  • T:テラバイト

💾 便利なオプション一覧

# ファイルシステムタイプも表示
df -T

# 結果
Filesystem     Type     Size  Used Avail Use% Mounted on
/dev/sda1      ext4      20G  7.8G   11G  42% /
/dev/sda2      ext4      99G   44G   50G  47% /home
tmpfs          tmpfs    2.0G     0  2.0G   0% /dev/shm

# 特定のファイルシステムタイプのみ
df -t ext4

# iノード使用状況
df -i

# 特定のディレクトリの情報
df -h /var/log

# すべてのファイルシステム(仮想FSも含む)
df -a

💾 実用的な使い方

容量が逼迫しているパーティションを見つける:

# 使用率でソート(80%以上を警告)
df -h | awk '$5+0 > 80 {print $0}'

# 使用率が高い順に表示
df -h | grep -v "Filesystem" | sort -k5 -rn

# 残り容量が少ない順
df -h | grep -v "Filesystem" | sort -k4 -h

2. duコマンド:ディレクトリごとの使用量

📁 duコマンドの基本

du = disk usage(ディスク使用量)

どのディレクトリが容量を使っているか調べる時に使います。

# カレントディレクトリの使用量
du

# 人間が読みやすい形式
du -h

# サマリーのみ(合計だけ)
du -sh

# 実行例
du -sh /var/log
# 結果:1.5G    /var/log

📁 階層を指定して調査

# 1階層のみ表示(最もよく使う)
du -h --max-depth=1 /

# または
du -h -d 1 /

# 実行結果例
8.0K    /srv
4.0K    /media
16K     /lost+found
7.8G    /usr
1.5G    /var
234M    /boot
456M    /opt
2.3G    /home

📁 大きいディレクトリを見つける

容量を食っているディレクトリTOP10:

# TOP10を表示
du -h --max-depth=1 / 2>/dev/null | sort -rh | head -10

# /var配下で大きいフォルダを探す
du -h --max-depth=2 /var | sort -rh | head -10

# 100MB以上のディレクトリのみ表示
du -h --threshold=100M /

📁 特定ファイルの容量確認

# ログファイルの容量確認
du -sh /var/log/*.log

# 拡張子別に集計
find /home -type f -name "*.jpg" -exec du -ch {} + | grep total$

# 古いファイルの容量
find /var/log -type f -mtime +30 -exec du -ch {} + | grep total$

3. 【応用】便利な容量確認ツール

🔧 ncdu:インタラクティブな容量分析

ncduのインストール:

# Ubuntu/Debian
sudo apt-get install ncdu

# CentOS/RHEL/Fedora
sudo yum install ncdu
# または
sudo dnf install ncdu

# Arch Linux
sudo pacman -S ncdu

使い方:

# 基本的な使用
ncdu /

# 読み取り専用モード(削除を防ぐ)
ncdu -r /

# エクスポート機能
ncdu -o report.json /

操作方法:

  • 矢印キー:ナビゲーション
  • Enter:ディレクトリに入る
  • d:削除(確認あり)
  • q:終了
  • ?:ヘルプ

🔧 dust:Rustで書かれた高速ツール

# インストール(cargo必要)
cargo install du-dust

# 使用例
dust /home
dust -d 3 /  # 3階層まで表示

🔧 duf:モダンなdf代替ツール

# インストール
# Ubuntu/Debian (snap)
sudo snap install duf

# 使用例
duf

# 出力例(カラフルで見やすい)
╭───────────────────────────────────────────────────────────╮
│ 5 local devices                                          │
├───────────────┬────────┬────────┬────────┬──────┬────────┤
│ MOUNTED ON    │   SIZE │   USED │  AVAIL │ USE% │ TYPE   │
├───────────────┼────────┼────────┼────────┼──────┼────────┤
│ /             │  20.0G │   7.8G │  11.0G │ 42%  │ ext4   │
│ /home         │  99.0G │  44.0G │  50.0G │ 47%  │ ext4   │
╰───────────────┴────────┴────────┴────────┴──────┴────────╯

4. GUI(グラフィカル)ツールでの確認

🖥️ GNOME Disks(ディスク)

Ubuntu/Fedora標準搭載:

# 起動方法
gnome-disks

# インストール(必要な場合)
sudo apt-get install gnome-disk-utility

特徴:

  • パーティション管理も可能
  • S.M.A.R.T.情報表示
  • ベンチマーク機能

🖥️ Baobab(ディスク使用量アナライザー)

# 起動
baobab

# インストール
sudo apt-get install baobab

特徴:

  • 円グラフで視覚化
  • リングチャート表示
  • リモートフォルダ対応

🖥️ KDE Filelight

# KDE環境向け
sudo apt-get install filelight

特徴:

  • 同心円グラフ
  • 直感的な操作
  • 高速スキャン

5. システム全体の容量分析

📊 どこが容量を使っているか特定

よくある容量消費元:

# 1. ログファイル
du -sh /var/log/*

# 2. パッケージキャッシュ
# APT (Debian/Ubuntu)
du -sh /var/cache/apt/archives

# YUM/DNF (RHEL/CentOS)
du -sh /var/cache/yum
du -sh /var/cache/dnf

# 3. テンポラリファイル
du -sh /tmp
du -sh /var/tmp

# 4. データベース
du -sh /var/lib/mysql
du -sh /var/lib/postgresql

# 5. Dockerイメージ/コンテナ
docker system df
du -sh /var/lib/docker

# 6. ユーザーホーム
du -sh /home/*

# 7. snapパッケージ
du -sh /var/lib/snapd

📊 隠れた大容量ファイルを見つける

# 1GB以上のファイルを探す
find / -type f -size +1G 2>/dev/null

# サイズ順に表示
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh

# 削除されたが開いているファイル
lsof | grep deleted | awk '{print $2}' | xargs -I {} ls -lh /proc/{}/fd/ 2>/dev/null

6. 容量監視の自動化

🤖 シェルスクリプトで監視

容量監視スクリプト:

#!/bin/bash
# disk_monitor.sh

THRESHOLD=80  # 警告閾値(%)
EMAIL="admin@example.com"

# 各パーティションをチェック
df -h | grep -v "Filesystem" | while read line; do
    usage=$(echo $line | awk '{print $5}' | sed 's/%//')
    partition=$(echo $line | awk '{print $1}')
    
    if [ $usage -ge $THRESHOLD ]; then
        echo "警告: $partition の使用率が ${usage}% に達しています" | \
        mail -s "ディスク容量警告" $EMAIL
    fi
done

🤖 cronで定期実行

# crontabに追加
crontab -e

# 毎日朝9時に実行
0 9 * * * /home/user/disk_monitor.sh

# 1時間ごとに実行
0 * * * * /home/user/disk_monitor.sh

# 容量レポートを毎週月曜日に生成
0 0 * * 1 df -h > /var/log/disk_report_$(date +\%Y\%m\%d).log

🤖 ZabbixやNagiosでの監視

Zabbixテンプレート例:

# ディスク使用率監視
- key: vfs.fs.size[/,pused]
  trigger: "{host:vfs.fs.size[/,pused].last()}>80"
  severity: WARNING
  
- key: vfs.fs.size[/,pused]
  trigger: "{host:vfs.fs.size[/,pused].last()}>90"
  severity: HIGH

7. 容量不足時の対処法

🧹 不要ファイルのクリーンアップ

1. パッケージキャッシュのクリア:

# Debian/Ubuntu
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove

# RHEL/CentOS
sudo yum clean all
sudo dnf clean all

# Arch
sudo pacman -Sc

2. ログファイルの整理:

# 古いログを削除
find /var/log -type f -name "*.log" -mtime +30 -delete

# ログローテーション強制実行
sudo logrotate -f /etc/logrotate.conf

# journalログのクリーンアップ
sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=500M

3. テンポラリファイルの削除:

# /tmpのクリーンアップ(要注意)
find /tmp -type f -atime +7 -delete

# システムテンポラリ
sudo rm -rf /var/tmp/*

🧹 Dockerの容量削減

# 未使用のコンテナ、イメージ、ボリューム削除
docker system prune -a

# より詳細な削除
docker container prune  # 停止コンテナ
docker image prune -a   # 未使用イメージ
docker volume prune     # 未使用ボリューム
docker network prune    # 未使用ネットワーク

# 容量確認
docker system df

🧹 大容量ファイルの圧縮

# ログファイルを圧縮
gzip /var/log/oldlog.log  # .gzファイルになる

# tarでアーカイブ化
tar -czf backup.tar.gz /path/to/directory

# 圧縮率の高いxz形式
tar -cJf backup.tar.xz /path/to/directory

8. ファイルシステム別の確認方法

🗄️ ext4ファイルシステム

# ファイルシステム情報
sudo tune2fs -l /dev/sda1

# 使用ブロック数
sudo dumpe2fs /dev/sda1 | grep -i "block count"

# フラグメンテーション確認
sudo e4defrag -c /dev/sda1

🗄️ XFSファイルシステム

# 容量情報
sudo xfs_info /dev/sda1

# 詳細な使用状況
sudo xfs_db -r -c "freesp -s" /dev/sda1

# フラグメンテーション
sudo xfs_db -r -c frag /dev/sda1

🗄️ Btrfsファイルシステム

# 容量使用状況
sudo btrfs filesystem show
sudo btrfs filesystem df /

# デバイスごとの使用量
sudo btrfs device stats /

# スナップショットの容量
sudo btrfs subvolume list /

🗄️ ZFSファイルシステム

# プールの状態
zpool list
zpool status

# データセットの使用量
zfs list
zfs list -t snapshot  # スナップショット

# 詳細情報
zfs get all poolname/dataset

9. トラブルシューティング

❌ dfとduの結果が一致しない

原因と対策:

# 1. 削除されたが開いているファイル
lsof | grep deleted

# プロセスを再起動して解放
sudo systemctl restart サービス名

# 2. マウントポイントの隠れたファイル
# 一時的にアンマウントして確認
sudo umount /mount/point
ls -la /mount/point
sudo mount /mount/point

# 3. 予約ブロック(ext4)
# 予約領域を確認
sudo tune2fs -l /dev/sda1 | grep "Reserved"

# 予約領域を減らす(1%に)
sudo tune2fs -m 1 /dev/sda1

❌ “No space left on device”なのに容量がある

iノード不足の可能性:

# iノード使用状況確認
df -i

# iノードを多く使っているディレクトリを探す
for i in /*; do 
    echo "$i: $(find $i -xdev -type f | wc -l)"
done

# 小さいファイルが大量にある場合の対処
# セッションファイルなどをクリーンアップ
find /var/lib/php/sessions -type f -delete

❌ 容量があるのに書き込めない

# 1. Read-onlyマウントの確認
mount | grep " ro,"

# 再マウント
sudo mount -o remount,rw /

# 2. クォータ制限の確認
quota -v
repquota -a

# 3. SELinuxの確認(RHEL系)
getenforce
# 一時的に無効化
sudo setenforce 0

10. ベストプラクティスとTips

💡 定期的な監視

推奨する監視頻度:

# 日次チェック項目
- ルートパーティション使用率
- /varの増加率
- ログファイルサイズ

# 週次チェック項目
- 各ユーザーの使用量
- バックアップ領域
- データベースサイズ

# 月次チェック項目
- 全体的な増加傾向
- 不要ファイルのクリーンアップ
- パーティション再構成の検討

💡 容量計画

容量見積もりの目安:

# システム領域(/)
最小:10GB
推奨:20-30GB

# /var
ログが多い:50GB以上
通常:20GB

# /home
ユーザー数 × 5-10GB

# 余裕率
常に20-30%の空きを維持

💡 便利なエイリアス

# ~/.bashrcに追加
alias df='df -h'
alias du='du -h'
alias dus='du -sh * | sort -h'
alias duf='du -sh * | sort -rh | head -10'

# ディスク使用量TOP10
alias disktop='du -hs * | sort -rh | head -10'

# 容量確認関数
checkdisk() {
    echo "=== Disk Usage ==="
    df -h
    echo ""
    echo "=== Top 10 Directories ==="
    du -h --max-depth=1 / 2>/dev/null | sort -rh | head -10
}

まとめ:容量管理は予防が大切!

Linuxのストレージ容量確認、意外と多くの方法がありましたね。 でも、基本はdfduの2つのコマンドです。

重要ポイントのおさらい:

基本コマンド

  • df -h:全体の使用状況
  • du -sh:ディレクトリごとの使用量
  • 組み合わせて原因特定

便利なツール

  • ncdu:インタラクティブ分析
  • baobab:GUI可視化
  • duf:モダンな表示

監視の自動化

  • スクリプト+cron
  • 閾値を超えたら通知
  • 定期的なレポート生成

トラブル対処

  • ログローテーション
  • キャッシュクリア
  • 不要ファイル削除

黄金律:

使用率80%で警告
使用率90%で緊急対応
常に20%以上の空きを維持

コメント

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