👻

Linuxのディスク使用率/ファイル容量の確認方法とは??

11 min read

はじめに

今回は、Linuxのディスク使用率とファイル容量の確認方法についてアウトプットしていきたいと思います。

https://youtu.be/xCH1zLTZ9LI

今回のトピック

  • ディスク使用率確認
  • ファイル容量確認
  • ディスク使用率逼迫原因のファイルを特定する方法

ディスク使用率確認

Linuxのディスク使用率を確認するためのコマンドについて解説していきたいと思います。

dfコマンド

Linuxのディスク使用率を確認するコマンドになります。
dfコマンドの略称はdisk freeになります。

コマンド
df
コマンド実行例
[root@storage ~]# df
ファイルシス            1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/centos-root    49250820 1169452 48081368    3% /
devtmpfs                    1011628       0  1011628    0% /dev
tmpfs                       1023848       0  1023848    0% /dev/shm
tmpfs                       1023848    8732  1015116    1% /run
tmpfs                       1023848       0  1023848    0% /sys/fs/cgroup
/dev/sda1                   1038336  132388   905948   13% /boot
tmpfs                        204772       0   204772    0% /run/user/0
[root@storage ~]#

コマンド実行例にあるそれぞれの項目の意味はこちらになります。

項目 意味 表示例
ファイルシステム 各ファイルシステム(ディスク名) /dev/mapper/centos-root
1K-ブロック 使用できるディスク容量
デフォルトでは、1K(1024バイト)のブロックサイズの表示
49250820
使用 使用しているディスク容量 1169452
使用可 使用可能であるディスク容量 48081368
使用% ディスク使用率 3%
マウント位置 ファイルシステムがマウントされているディレクトリ /

現場で業務をする中で一番注目する必要がある項目は以下になります。

  • 使用%
  • マウント位置

※ファイルシステム等はストレージから切り出したボリュームをマウントする際に確認します。

dfコマンドのオプション

僕が実際の現場でよく使用するdfコマンドのオプションをまとめました。

オプション 意味 備考
-a 全てのファイルシステムを表示する。 ダミーのファイルシステム等も表示する。
-P POSIX出力形式(サイズではなくブロックで表示) 「1024-ブロック」→ 「1K-ブロック」
-h 単位を付けて表示する。 M(メガ)やK(キロ)等

使用例①

以下の形式で表示する。
・POSIX出力形式
・単位を付けて表示

使用例①
[root@terraform-sv ~]# df -Ph
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    50G  2.8G   48G    6% /
devtmpfs                  876M     0  876M    0% /dev
tmpfs                     887M     0  887M    0% /dev/shm
tmpfs                     887M  9.0M  879M    2% /run
tmpfs                     887M     0  887M    0% /sys/fs/cgroup
/dev/sda1                1014M  145M  870M   15% /boot
/dev/mapper/centos-home    74G   33M   74G    1% /home
tmpfs                     178M     0  178M    0% /run/user/0
[root@terraform-sv ~]#

使用例②

全てのファイルシステムを表示。

使用例②
[root@terraform-sv ~]# df -a
ファイルシス            1K-ブロック    使用   使用可 使用% マウント位置
rootfs                            -       -        -     - /
sysfs                             0       0        0     - /sys
proc                              0       0        0     - /proc
devtmpfs                     896372       0   896372    0% /dev
securityfs                        0       0        0     - /sys/kernel/security
tmpfs                        908256       0   908256    0% /dev/shm
devpts                            0       0        0     - /dev/pts
tmpfs                        908256    9148   899108    2% /run
tmpfs                        908256       0   908256    0% /sys/fs/cgroup
cgroup                            0       0        0     - /sys/fs/cgroup/systemd
pstore                            0       0        0     - /sys/fs/pstore
cgroup                            0       0        0     - /sys/fs/cgroup/blkio
cgroup                            0       0        0     - /sys/fs/cgroup/perf_event
cgroup                            0       0        0     - /sys/fs/cgroup/cpu,cpuacct
cgroup                            0       0        0     - /sys/fs/cgroup/net_cls,net_prio
cgroup                            0       0        0     - /sys/fs/cgroup/memory
cgroup                            0       0        0     - /sys/fs/cgroup/devices
cgroup                            0       0        0     - /sys/fs/cgroup/pids
cgroup                            0       0        0     - /sys/fs/cgroup/freezer
cgroup                            0       0        0     - /sys/fs/cgroup/cpuset
cgroup                            0       0        0     - /sys/fs/cgroup/hugetlb
configfs                          0       0        0     - /sys/kernel/config
/dev/mapper/centos-root    52403200 2935252 49467948    6% /
debugfs                           0       0        0     - /sys/kernel/debug
mqueue                            0       0        0     - /dev/mqueue
systemd-1                         -       -        -     - /proc/sys/fs/binfmt_misc
hugetlbfs                         0       0        0     - /dev/hugepages
/dev/sda1                   1038336  147704   890632   15% /boot
/dev/mapper/centos-home    77548548   33056 77515492    1% /home
tmpfs                        181652       0   181652    0% /run/user/0
binfmt_misc                       0       0        0     - /proc/sys/fs/binfmt_misc
[root@terraform-sv ~]#

ファイル使用率確認

Linuxのファイル容量を確認するためのコマンドについて解説していきたいと思います。

duコマンド

Linuxのファイル容量を確認するコマンドになります。
duコマンドの略称はdisk usageになります。

コマンド
du ディレクトリ名
コマンド実行例
[root@terraform-sv home]# du /home
0       /home/terraform/test
16      /home/terraform
16      /home
[root@terraform-sv home]#

コマンド実行例にあるそれぞれの項目の意味はこちらになります。

項目 意味 表示例
容量 それぞれのファイル容量
デフォルトの場合は、kByte単位
16
ディレクトリ 対象のディレクトリ内に格納されているディレクトリ名 /home/terraform

duコマンドのオプション

僕が実際の現場でよく使用するduコマンドのオプションをまとめました。

オプション 意味
-a ディレクトリだけではなく、ファイルのディスク使用量も表示します。
-h ディスク容量が読みやすいように単位をつけて表示します。(例:10K 1M 2G)
-s 指定したディレクトリのディスク使用量のみを表示する。
サブディレクトリのディスク使用量は表示しない。

使用例①

ディレクトリ/ファイルのディスク使用量を表示。

使用例①
[terraform@terraform-sv test]$ du -a /home
4       /home/terraform/.bash_logout
4       /home/terraform/.bash_profile
4       /home/terraform/.bashrc
4       /home/terraform/.bash_history
0       /home/terraform/test/test
0       /home/terraform/test/test1
0       /home/terraform/test/test2
4       /home/terraform/test/testdir/test.txt
4       /home/terraform/test/testdir
4       /home/terraform/test
20      /home/terraform
20      /home
[terraform@terraform-sv test]$

使用例②

読みやすい単位で表示させる。

使用例②
[terraform@terraform-sv test]$ du -ah /home
4.0K    /home/terraform/.bash_logout
4.0K    /home/terraform/.bash_profile
4.0K    /home/terraform/.bashrc
4.0K    /home/terraform/.bash_history
0       /home/terraform/test/test
0       /home/terraform/test/test1
0       /home/terraform/test/test2
4.0K    /home/terraform/test/testdir/test.txt
4.0K    /home/terraform/test/testdir
4.0K    /home/terraform/test
20K     /home/terraform
20K     /home
[terraform@terraform-sv test]$

使用例③

指定したディレクトリの使用量のみ表示

使用例③
[terraform@terraform-sv test]$ du -s /home
20      /home
[terraform@terraform-sv test]$

ディスク使用率逼迫原因のファイルを特定する方法

疑似的に大容量のファイルを作成し、場所を特定して削除する迄をやってみます。

①ダミーファイル作成

今回使用するダミーファイルを作成する。

コマンド
dd if=/dev/zero of=dummy bs=1G count=70

※ファイル容量が70GBのdummyという名前のダミーファイルを作成する。

実行例
[terraform@terraform-sv test]$ dd if=/dev/zero of=dummy bs=1G count=70
70+0 レコード入力
70+0 レコード出力
75161927680 バイト (75 GB) コピーされました、 43.2146 秒、 1.7 GB/秒
[terraform@terraform-sv test]$ ls -la
合計 73400320
drwxrwxr-x  2 terraform terraform          19  516 15:33 .
drwx------. 3 terraform terraform          95  516 15:03 ..
-rw-rw-r--  1 terraform terraform 75161927680  516 15:33 dummy
[terraform@terraform-sv test]$

②ディスク使用率確認

dfコマンドにてディスク使用率を確認する。

コマンド
df -Ph

/homeのディスク使用率が95%になっていることを確認。
※運用監視の現場であれば、アラートが発砲している。

実行例
[terraform@terraform-sv test]$ df -Ph
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    50G  2.9G   48G    6% /
devtmpfs                  876M     0  876M    0% /dev
tmpfs                     887M     0  887M    0% /dev/shm
tmpfs                     887M  9.0M  879M    2% /run
tmpfs                     887M     0  887M    0% /sys/fs/cgroup
/dev/sda1                1014M  145M  870M   15% /boot
/dev/mapper/centos-home    74G   71G  4.0G   95% /home ← ここ
tmpfs                     178M     0  178M    0% /run/user/0
[terraform@terraform-sv test]$

③ファイル特定

duコマンドを用いて、原因のファイルを特定する。

  • /home直下のファイルを確認する。
実行例
[terraform@terraform-sv test]$ du -ah /home | sort -hr
71G     /home/terraform
71G     /home
70G     /home/terraform/test/dummy
70G     /home/terraform/test
4.0K    /home/terraform/.bashrc
4.0K    /home/terraform/.bash_profile
4.0K    /home/terraform/.bash_logout
4.0K    /home/terraform/.bash_history
[terraform@terraform-sv test]$

→ 一番階層が深い/home/terraform/test/dummyが怪しいことを確認。
sort -hrは降順にソートするコマンドになります。

  • /home/terraform/test/dummy直下のファイルを確認する。
実行例
[terraform@terraform-sv ~]$ du -ah /home/terraform/test/dummy
70G     /home/terraform/test/dummy
[terraform@terraform-sv ~]$ ls -l /home/terraform/test/dummy
-rw-rw-r-- 1 terraform terraform 75161927680  516 15:33 /home/terraform/test/dummy
[terraform@terraform-sv ~]$

dummyファイルが原因であることを確認

④dummyファイルの削除

容量逼迫の原因である、dummyファイルを削除する。

実行例
[terraform@terraform-sv ~]$ cd /home/terraform/test/
[terraform@terraform-sv test]$ ls
dummy
[terraform@terraform-sv test]$ rm -i dummy
rm: 通常ファイル `dummy' を削除しますか? y
[terraform@terraform-sv test]$ ls
[terraform@terraform-sv test]$

⑤ディスク使用率確認

ディスク使用率を再度確認。

実行例
[terraform@terraform-sv test]$ df -Ph
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    50G  2.9G   48G    6% /
devtmpfs                  876M     0  876M    0% /dev
tmpfs                     887M     0  887M    0% /dev/shm
tmpfs                     887M  9.0M  879M    2% /run
tmpfs                     887M     0  887M    0% /sys/fs/cgroup
/dev/sda1                1014M  145M  870M   15% /boot
/dev/mapper/centos-home    74G   33M   74G    1% /home ← 容量が減っている。
tmpfs                     178M     0  178M    0% /run/user/0
[terraform@terraform-sv test]$

/homeの使用率が1%になっていることを確認。

参考

【Linuxコマンド】dfでディスクの空き容量を確認する
duコマンドについてまとめました 【Linuxコマンド集】
Linuxでのダミーファイルの作成

Discussion

ログインするとコメントできます