Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
Linuxサーバーを運用していて、最も頻繁に遭遇するトラブルの一つが「ディスク容量の逼迫(フルアップ)」です。サービスが突然停止したり、ログが書き込めなくなったりした際、どこが原因かを素早く突き止める必要があります。
今回は、ストレージトラブルが発生した瞬間に役立つ、実務直結の「逆引き」コマンドテクニックを解説します。
ディスク容量の調査は、全体から詳細へと掘り下げていくのが鉄則です。まずはシステム全体の概要を把握します。
# -h (human-readable) で、GBやMBなど見やすい単位で表示
df -h
df で怪しいパーティション(例: /var)を見つけたら、その中でどのディレクトリがディスクを圧迫しているかを特定します。
# -h で単位を表示、-d 1 で現在の階層から1階層下(深さ1)までを合計
sudo du -h -d 1 /var 2>/dev/null
Note:
2>/dev/nullを末尾につけることで、権限のないファイルへのアクセス警告(エラーメッセージ)を非表示にすることができます。
特定のディレクトリ内で、とにかくサイズが大きいファイルだけをリストアップしたい時に有効な組み合わせです。
# 指定ディレクトリ内のファイルを検索し、サイズ順に並び替えて上位10件を表示
sudo find /var/log -type f -exec du -h {} + | sort -hr | head -n 10
| 実現したいこと(目的) | 実行するコマンド例 | 説明 |
|---|---|---|
| 空き容量を1秒で確認したい | df -h |
全マウントポイントの使用率(%)を一覧表示する基本コマンド |
| 容量の大きい順に並び替えたい | `du -hx -d 1 / | sort -hr` |
| 100MB以上のファイルだけを探したい | find / -type f -size +100M |
システム全体から、100MBを超える巨大なファイルだけをピンポイントで検索 |
| iノード(ファイル数)の限界を調べたい | df -i |
容量(バイト数)ではなく、作成可能な「ファイル数」の限界(iノード使用率)を表示 |
「ファイルを消したのに容量が空かない」問題:
プロセスが開きっぱなしの(掴んでいる)ファイルを rm で削除しても、プロセスが終了するまでディスク領域は解放されません。
sudo lsof \| grep '(deleted)' を実行し、削除済みのファイルを掴んでいるプロセスを特定して再起動(または kill)します。ログファイルの「肥大化」に注意:
調査の結果、大抵の犯人は /var/log 配下のログ(nginxのアクセスログやアプリログ)です。一時しのぎで消すのではなく、次回からは logrotate などの設定を見直しましょう。
iノードの枯渇という盲点:
df -h で容量に余裕があるのに「Disk full」が出る場合、小さなファイル(セッションファイル等)が大量に作られ、ファイル数の上限(iノード)に達している可能性が高いです。必ず df -i を確認してください。
ストレージのトラブルも、ログ調査と同様に「推測」ではなく「計測(コマンドによる数値化)」が最速の解決策です。
df -h でアタリをつけ、du や find で犯人を絞り込む。この2ステップをマスターしておけば、夜間に「ディスク容量アラート」が飛んできても、1分で原因を特定できるようになります。
この記事がLinux運用管理の一助となれば幸いです。
ご覧いただきありがとうございました。