今回は、ストレージの逼迫時の状況把握に使える df コマンドと du コマンドについて解説します。
df コマンドと見方
df コマンドは、ストレージの総量と使用量、および残量の把握ができます。h オプションは、メガ(M)やギガ(G)、テラ(T)等の単位で表示してくれるので、一目で把握しやすいようになります。
主に見るべきは、マウント位置が / のルートディレクトリの「残り」と「使用%」で、使用の増加量次第ではありますが、一般に残りが10GBを切っている場合は、早急な対処が必要と判断して良いかと思います。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 705M 15G 5% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/nvme0n1p2 200G 56G 145G 28% /
tmpfs 3.1G 0 3.1G 0% /run/user/1000
du コマンドの使い方とテクニック
df コマンドでは、ストレージ全体の概要を見ることはできるのですが、ストレージ全体のどの領域での利用が多いのかは分からず、削減の可否もわかりません。そういった時に使えるのが du コマンドです。du コマンドは、指定ディレクトリ以下のサイズを計測することができ、使用量の多いディレクトリを洗い出すことができます。
KUSANAGIの場合、プロビジョンされてWebサイトのファイルが配置される /home/kusanagi 以下とデータベースのデータファイルが格納される /var/lib/mysql、各種ログが格納される /var/log 以下が肥大しやすいので、重点的に計測してみると良いかと思います。
h オプションで df コマンド同様、単位での表示で分かりやすい表示となり、s オプションで指定ディレクトリのサマリ表示となります。
私は、ディレクトリの指定をワイルドカードにして、hs オプションで指定したディレクトリ直下のファイル、ディレクトリ毎に使用量を確認するという使い方をよくします。
# du -hs /var/*
0 /var/adm
93M /var/cache
0 /var/crash
0 /var/db
0 /var/empty
0 /var/ftp
0 /var/games
さらに、sort コマンドをパイプでつなぎ、大きい順に並び替えると、サイズの大きいディレクトリの把握に全ての表示を精査する必要がありませんし、対処すべき優先度も把握しやすくなります。
# du -hs /var/* | sort -hr
4.4G /var/lib
572M /var/opt
217M /var/log
93M /var/cache
24K /var/spool
0 /var/yp
0 /var/tmp
表示行数が多く、表示が切れてしまう場合は、sort コマンドの r オプションを省いて昇順としても良いですし、head コマンドを更にパイプで繋いで、最初の行のみ表示するのも良いと思います。
# du -hs /var/* | sort -hr | head -5
4.4G /var/lib
571M /var/opt
217M /var/log
93M /var/cache
24K /var/spool
このようにして、使用量の多いディレクトリを洗い出し、その中で肥大化しているファイルがないか、そのファイルは削除 or 圧縮可能かなどを検討し、ストレージ使用量の削減を計るようにしましょう。