- 更新日: 2016年4月12日
- CentOS & Linux
Linuxサーバー容量を確認するコマンドdf,duをマスターする!
Linux サーバーが空き容量不足だったり、容量の大きいディレクトリ・ファイルを突き止める必要がある時には、df コマンドと du コマンドを使います。先日、rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)の作業を行った時に、これらの Linux サーバーの容量を調べるコマンドを使ったので、そのまとめです。
df コマンドの使い方
df コマンドは、ファイルシステム(パーティション)ごとのディスク容量を確認できます。まず最初に調査に着手するときには、この df コマンドを使うと良いかと思う。
1 2 3 4 5 6 |
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 98G 8.1G 85G 9% / tmpfs 938M 0 938M 0% /dev/shm |
-h オプションは、容量を適切な単位で表示するためのオプションです。これで、ディスクがどのくらい使われているのか(Used)、またどのくらい空き容量があるのか(Avail)を確認できます。
du コマンドの基本的な使い方
df コマンドでディスク全体の使用量を確認した後は、どのディレクトリの容量が大きいのか、調査を進める必要があります。この時に使うのが du コマンド。du コマンドは、以下のように使って容量を確認します。
ルートパス以下を対象に調査。
1 2 3 |
$ sudo du -h / |
カレントディレクトリ以下を対象に調査。
1 2 3 |
$ sudo du -h ./ |
/var ディレクトリ以下を対象に調査。
1 2 3 |
$ sudo du -h /var/ |
-h オプションは、容量を適切な単位で表示するためのオプションです。ただし、上記のコマンド実行法ですと、再帰的にディレクトリが表示されてちょっと見にくくなります。
du コマンドで表示するディレクトリ階層を指定
du コマンドで表示するディレクトリ階層を指定するには、–max-depth オプションを使う。以下は、1階層ぶんのディレクトリを表示する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$ sudo du -h --max-depth=1 / [sudo] password for *****: 8.0K /cgroup 8.0K /media 1.5G /usr 0 /selinux 7.5M /bin 164K /dev 32M /etc 20K /lost+found 3.0G /var 172M /opt 20M /lib64 1.5M /tmp 8.0K /srv 463M /lib 75M /boot 8.0K /mnt 9.8M /sbin 2.6M /root 3.2G /home 0 /proc 0 /sys 8.3G / |
–max-depth に指定した数値の階層分のディレクトリ容量が表示されます。
du コマンドの結果を容量の大きい順にソート
du コマンドで調査した結果を、容量の大きいディレクトリ順にソートするには、パイプで sort コマンドをつなげてやる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sudo du --max-depth=1 /var/ | sort -nr 3074224 /var/ 2592284 /var/lib 156756 /var/log 113184 /var/clamav 83304 /var/backup 79108 /var/cache 48328 /var/tmp 496 /var/spool 256 /var/run 192 /var/chef 120 /var/db 96 /var/lock 24 /var/monit 16 /var/empty 8 /var/yp 8 /var/preserve 8 /var/opt 8 /var/nis 8 /var/local 8 /var/games |
こうすると、容量の大きいディレクトリ順に並んで確認しやすくなります。du と sort を組み合わせる場合、sort コマンドの -n オプションでファイルサイズを数値としてソートさせるために、-h オプションは付けていません。またファイルサイズの降順(大きい順)でソートするために、sort コマンドに -r オプション(逆順にソート)も付けました。
基本的には、この du と sort を組み合わせたこのコマンドで、調査対象のディレクトリを絞り込んでいくことで、容量の大きいディレクトリ・ファイルを突き止めることが可能です。
du コマンドの負荷を抑える
du コマンドを使う場合、ディレクトリを再帰的に調査しますので、ディレクトリやファイルの量が多ければ調査に時間がかかります。またディスクI/Oが発生しますので、負荷がかかります。
ですので、予測が付く場合は、最初から調査対象のディレクトリパスを絞り込む、などを行ったほうが良いかと思います。
1 2 3 |
$ sudo du -h --max-depth=1 /var/ |
のように /var ディレクトリ以下のみを調査の対象にするなど。
あるいは、負荷がかかるのを回避するために、du コマンド実行の前に nice や ionice コマンドを付けて優先度を低くして実行するようにします。
nice コマンドを使う例。
1 2 3 |
$ sudo nice -n 19 du --max-depth=1 /var/ | sort -nr |
nice コマンドは -n オプションに -20 から 19 の数値を渡せ、-20 が最も優先度が高く、19 がもっとも優先度が低い。ここでは、優先度を低くするために nice コマンドに -n 19 のオプションを渡しています。
または、ionice コマンドを使う。
1 2 3 |
$ sudo ionice -c 2 -n 7 du --max-depth=1 /var/ | sort -nr |
ionice コマンドは、ディスクI/Oの優先度を指定してコマンドを実行できます。-n オプションで 0 から 7 が指定でき、0 が優先度が最も高く、7 が優先度が最も低い。また、-c オプションで 1(Real Time)、2(Best Effort)、3(Idle)を指定できる。
nice, ionice コマンドの詳細については以下等を参考。
重い処理はniceコマンドを使って安全に実行すべし。 – (゚∀゚)o彡 sasata299’s blog
Linux で実行優先度を指定してコマンドを実行する
Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか – 元RX-7乗りの適当な日々
ls コマンドでファイルサイズ順にソート
du コマンドによる調査が進み調査の最終段階となり、容量の大きいディレクトリを絞り込めてきたら、ls コマンドも併用しました。ls コマンドの -S オプションを使うと、ディレクトリ内のファイルをファイルサイズが大きい順にソートできます。
1 2 3 4 5 6 7 8 9 |
$ ls -lS 合計 11376 -rw-rw-r--. 1 root utmp 1247616 5月 25 13:27 2015 wtmp-20150526 -rw-------. 1 root root 148422 1月 24 03:14 2016 cron-20160124 -rw-------. 1 root root 147965 1月 17 03:51 2016 cron-20160117 -rw-------. 1 root root 147863 1月 24 03:14 2016 messages-20160124 ... |
du コマンドで容量の大きいディレクトリを絞り込み、-S オプション付きの ls コマンドで容量の大きいファイルを探しだす、という作業手順です。以上のように df, du, ls コマンドを使うことで、無事に容量の大きいディレクトリ・ファイルを探しだすことができました!
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
- Bash脆弱性に対してChefでbashをアップデートしてパッチ適用
Leave Your Message!