Linux には、ストレージの使用状況を調べるコマンドがいくつかあります。この記事では、ファイルシステム全体の使用量を見る df、ディレクトリごとの使用量を見る du、画面を操作しながら使用量を調べる NCurses Disk Usage(ncdu)の使い方を、実行結果を見ながら確認します。
dfでファイルシステムの容量と inode の使用状況を確認する方法duでディレクトリごとの使用量を調べ、多い順に並べる方法ncduで、画面を操作しながら容量を使っている場所を探す方法
ホスト名は ubuntu-1、ユーザー名は hirotano で、OS は Ubuntu です。以降の実行結果は、この環境のものです。
df、場所の絞り込みを du、画面での確認を ncdu で行うこの記事の画面は、実際の画面ではなく、実行時の画面から見るポイントを抜き出して描いたイメージです。長い出力は途中を省略しています。
df コマンドの概要
df は disk free の略で、システムにマウントされているすべてのファイルシステムの使用状況を表示します。ファイルシステムの総容量、使用量、空き容量を確認できます。
df -h:容量を読みやすい単位で表示する
-h オプションを付けると、サイズが K、M、G などの単位で表示され、読みやすくなります。この単位は 1024 のべき乗で、たとえば M は 1,048,576 バイトです。
$ df -h
1hirotano@ubuntu-1:~$ df -hFilesystem Size Used Avail Use% Mounted ontmpfs 198M 1.1M 197M 1% /run2/dev/mapper/ubuntu--vg-ubuntu--lv 12G 4.8G 5.9G 45% /tmpfs 988M 0 988M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/lock/dev/sda2 2.0G 130M 1.7G 8% /boottmpfs 198M 4.0K 198M 1% /run/user/1000
| No. | 表示 | 意味 |
|---|---|---|
| 1 | df -h | ファイルシステムの使用状況を、読みやすい単位で表示するコマンド |
| 2 | /dev/mapper/ubuntu--vg-ubuntu--lv | システムのメインのファイルシステム。マウント先は / |
列の意味は次のとおりです。
| 列 | 意味 |
|---|---|
| Filesystem | ファイルシステムの名前 |
| Size | ファイルシステムの総サイズ |
| Used | 現在使っている容量 |
| Avail | 残りの利用可能な容量 |
| Use% | 使用率 |
| Mounted on | マウント先(マウントポイント) |
メインのファイルシステム /dev/mapper/ubuntu--vg-ubuntu--lv は、総サイズが 12G、使用量が 4.8G、空きが 5.9G で、使用率は 45% です。
Use% は、Used を Size で割った値ではなく、Used ÷(Used + Avail)で求められます。この例では 4.8 ÷(4.8 + 5.9)≒ 45% です。Size(12G)と Used + Avail(10.7G)が一致しないため、Size で割ると 40% になり、表示と合いません。
df -h –total:合計も表示する
--total オプションを付けると、最後に、表示したファイルシステムの合計(サイズ、使用量、空き容量)が追加されます。
$ df -h --total
hirotano@ubuntu-1:~$ df -h --totalFilesystem Size Used Avail Use% Mounted ontmpfs 198M 1.1M 197M 1% /run/dev/mapper/ubuntu--vg-ubuntu--lv 12G 4.8G 5.9G 45% /tmpfs 988M 0 988M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/lock/dev/sda2 2.0G 130M 1.7G 8% /boottmpfs 198M 4.0K 198M 1% /run/user/10001total 15G 4.9G 8.9G 36% -
| No. | 表示 | 意味 |
|---|---|---|
| 1 | total の行 | すべての行の合計。サイズ 15G、使用量 4.9G、空き 8.9G、使用率 36%。マウント先の列は - |
この合計には、tmpfs のようにメモリ上のファイルシステムも含まれています。
df -i:inode の使用状況を確認する
容量が空いていても、新しいファイルを作れなくなることがあります。Linux のファイルシステムには、保存できるデータの量だけでなく、inode の数にも上限があるためです。inode は、ファイルの所有者、アクセス権、タイムスタンプ、データの場所などの情報を持つ管理用のデータで、ファイルやディレクトリ1つにつき1つ使われます。inode を使い切ると、空き容量があっても、新しいファイルを作れません。
inode の数を確認するには、df に -i オプションを付けます。
$ df -i
1hirotano@ubuntu-1:~$ df -iFilesystem Inodes IUsed IFree IUse% Mounted ontmpfs 252720 806 251914 1% /run2/dev/mapper/ubuntu--vg-ubuntu--lv 753664 81448 672216 11% /tmpfs 252720 1 252719 1% /dev/shmtmpfs 252720 3 252717 1% /run/lock/dev/sda2 131072 316 130756 1% /boottmpfs 50544 25 50519 1% /run/user/1000
| No. | 表示 | 意味 |
|---|---|---|
| 1 | df -i | inode の使用状況を表示するコマンド |
| 2 | /dev/mapper/ubuntu--vg-ubuntu--lv の行 | メインのファイルシステムの inode。使用できる数が 753664、使用中が 81448、空きが 672216、使用率が 11% |
| 列 | 意味 |
|---|---|
| Inodes | ファイルシステムで使用できる inode の総数 |
| IUsed | 使用中の inode の数 |
| IFree | 空いている inode の数 |
| IUse% | inode の使用率 |
メインのファイルシステムでは、使用できる inode が合計 753,664 個、そのうち 81,448 個が使用中で、672,216 個が空いています。使用率は 11% なので、まだ余裕があります。
du コマンドの概要
du は disk usage の略で、ディレクトリとそのサブディレクトリが使っている容量を調べるコマンドです。ファイルシステム全体の情報を表示する df と違い、du は指定したディレクトリの情報を表示します。どのディレクトリが容量を使っているかを調べるときに使います。
du の後ろに、調べたいディレクトリを指定します。表示される単位は、既定では 1024 バイトです。実行するユーザーが読めるディレクトリしか調べられないため、sudo を付けて実行することが多くあります。
du:ディレクトリごとの使用量を表示する
$ sudo du /var/log
1hirotano@ubuntu-1:/$ sudo du /var/log232 /var/log/installer/block936 /var/log/installer16392 /var/log/journal/(伏せています)16396 /var/log/journal120 /var/log/unattended-upgrades4 /var/log/landscape4 /var/log/dist-upgrade100 /var/log/apt4 /var/log/private19152 /var/log(先頭と末尾の行は省略しています)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | sudo du /var/log | /var/log とその下のディレクトリの使用量を表示するコマンド |
| 2 | 左の数字 | 使用量。単位は 1024 バイト。/var/log の合計は 19152(約 19MB) |
表示されるのは、左が使用量、右がディレクトリのパスです。最後の行 /var/log が、その下をすべて合わせた合計です。
du が表示するのは、ファイルが実際に使っているディスク上の領域です。ファイルの見かけのサイズ(wc -c で数えたバイト数)とは、異なる場合があります。見かけのサイズで表示したいときは、--apparent-size オプションを使います。
du -h:読みやすい単位で表示する
-h オプションを付けると、使用量が K、M、G などの単位で表示されます。
$ sudo du -h /var/log
1hirotano@ubuntu-1:/$ sudo du -h /var/log232K /var/log/installer/block936K /var/log/installer17M /var/log/journal/(伏せています)17M /var/log/journal120K /var/log/unattended-upgrades4.0K /var/log/landscape4.0K /var/log/dist-upgrade100K /var/log/apt4.0K /var/log/private19M /var/log(先頭と末尾の行は省略しています)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | sudo du -h /var/log | 使用量を読みやすい単位で表示するコマンド |
| 2 | 32K のような値 | K、M などの単位が付いた使用量。/var/log の合計は 19M |
du -hs:合計だけを表示する
-s オプション(summarize の略)を付けると、サブディレクトリの内訳は表示されず、指定したディレクトリの合計だけが表示されます。
$ sudo du -hs /var/log
1hirotano@ubuntu-1:/$ sudo du -hs /var/log219M /var/log
| No. | 表示 | 意味 |
|---|---|---|
| 1 | sudo du -hs /var/log | 合計だけを表示するコマンド |
| 2 | 19M | /var/log 全体の使用量 |
このように、du を使うと、どのディレクトリやサブディレクトリが容量を使っているかを確認できます。
du と sort:使用量の多い順に並べる
du の結果を sort コマンドに渡すと、使用量の多い順に並べられます。たとえば、/var/log の直下にあるファイルやディレクトリを、使用量の多い順に並べるには、次のコマンドを使います。
$ sudo du -sh /var/log/* | sort -hr
| 部分 | 意味 |
|---|---|
du -sh /var/log/* | /var/log 直下の項目ごとに、使用量の合計を読みやすい単位で表示する。* は、シェルが /var/log 直下の名前に展開する |
| | 左のコマンドの出力を、右のコマンドに渡す |
sort -hr | -h で 17M や 936K のような単位付きの数を大きさで比較し、-r で降順(大きい順)に並べる |
1hirotano@ubuntu-1:/$ sudo du -sh /var/log/* | sort -hr217M /var/log/journal936K /var/log/installer600K /var/log/dpkg.log300K /var/log/syslog248K /var/log/cloud-init.log168K /var/log/kern.log120K /var/log/unattended-upgrades100K /var/log/apt64K /var/log/bootstrap.log48K /var/log/dmesg.048K /var/log/dmesg36K /var/log/alternatives.log(以降の行は省略しています)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | sudo du -sh /var/log/* | sort -hr | 使用量の多い順に並べて表示するコマンド |
| 2 | 左の列(17M、936K、600K …) | 使用量。上から順に小さくなっている。いちばん大きいのは /var/log/journal |
NCurses Disk Usage(ncdu)の概要
もう1つ便利なツールが、NCurses Disk Usage(ncdu)です。du の対話型で、使用量を画面に表示し、カーソルを動かしながらサブディレクトリを掘り下げて、どのファイルやディレクトリが容量を使っているかを調べられます。
ncdu をインストールする
今回使用している Ubuntu には、ncdu が標準では入っていないので、インストールします。
$ sudo apt install ncdu
1hirotano@ubuntu-1:/$ sudo apt install ncdu[sudo] password for hirotano:Reading package lists... DoneBuilding dependency tree... DoneReading state information... DoneThe following NEW packages will be installed: ncdu0 upgraded, 1 newly installed, 0 to remove and 77 not upgraded.Need to get 43.4 kB of archives.After this operation, 106 kB of additional disk space will be used.Get:1 http://jp.archive.ubuntu.com/ubuntu jammy/universe amd64 ncdu amd64 1.15.1-1 [43.4 kB]Fetched 43.4 kB in 3s (13.7 kB/s)Selecting previously unselected package ncdu.(Reading database ... 73671 files and directories currently installed.)Preparing to unpack .../ncdu_1.15.1-1_amd64.deb ...Unpacking ncdu (1.15.1-1) ...Setting up ncdu (1.15.1-1) ...Processing triggers for man-db (2.10.2-1) ...Scanning processes...Scanning linux images... Running kernel seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.hirotano@ubuntu-1:/$
| No. | 表示 | 意味 |
|---|---|---|
| 1 | sudo apt install ncdu | ncdu をインストールするコマンド。出力の ncdu 1.15.1-1 が、インストールされたバージョン |
ncdu で使用量を表示する
ルートディレクトリ(/)に移動して ncdu を実行すると、ルートディレクトリの下の使用量が、大きい順に表示されます。
--- / ------------------------------------------1 2.3 GiB [##########] /usr 2.0 GiB [######## ] swap.img. 625.6 MiB [## ] /snap. 482.5 MiB [## ] /var. 129.6 MiB [ ] /boot. 5.2 MiB [ ] /etc. 1.1 MiB [ ] /run. 44.0 KiB [ ] /tmp 32.0 KiB [ ] /home! 16.0 KiB [ ] /lost+founde 4.0 KiB [ ] /srv! 4.0 KiB [ ] /roote 4.0 KiB [ ] /opte 4.0 KiB [ ] /mnte 4.0 KiB [ ] /media. 0.0 B [ ] /proc. 0.0 B [ ] /sys 0.0 B [ ] /dev@ 0.0 B [ ] libx32@ 0.0 B [ ] lib64@ 0.0 B [ ] lib32@ 0.0 B [ ] sbin@ 0.0 B [ ] lib@ 0.0 B [ ] bin
| No. | 表示 | 意味 |
|---|---|---|
| 1 | /usr の行 | カーソルがある行。使用量は 2.3 GiB で、ルートディレクトリの下でいちばん大きい |
| 表示 | 意味 |
|---|---|
左端の1文字(! . e @) | 項目の状態を示すフラグ。! はディレクトリの読み取りエラー、. は下のディレクトリの読み取りエラー(表示のサイズが実際と異なる場合がある)、e は空のディレクトリ、@ はファイルでもディレクトリでもないもの(シンボリックリンクなど) |
使用量(2.3 GiB など) | その項目の使用量 |
[##########] | 同じ階層でいちばん大きい項目を基準にした、使用量の棒グラフ |
! や . の付いた項目は、権限がなくて中身を読めなかった可能性があります。そのような項目も含めて調べるときは、sudo を付けて実行します。
ディレクトリを掘り下げる
上の画面では、カーソルが /usr にあります。たとえば /var の下のディレクトリを調べたいときは、カーソルを /var まで動かして、Enter キーを押します。
--- / ------------------------------------------ 2.3 GiB [##########] /usr 2.0 GiB [######## ] swap.img. 625.6 MiB [## ] /snap1. 482.5 MiB [## ] /var. 129.6 MiB [ ] /boot. 5.2 MiB [ ] /etc. 1.1 MiB [ ] /run. 44.0 KiB [ ] /tmp 32.0 KiB [ ] /home! 16.0 KiB [ ] /lost+founde 4.0 KiB [ ] /srv! 4.0 KiB [ ] /roote 4.0 KiB [ ] /opte 4.0 KiB [ ] /mnte 4.0 KiB [ ] /media. 0.0 B [ ] /proc. 0.0 B [ ] /sys 0.0 B [ ] /dev@ 0.0 B [ ] libx32@ 0.0 B [ ] lib64@ 0.0 B [ ] lib32@ 0.0 B [ ] sbin@ 0.0 B [ ] lib@ 0.0 B [ ] bin
| No. | 表示 | 意味 |
|---|---|---|
| 1 | /var の行 | カーソルを動かした先。使用量は 482.5 MiB。ここで Enter キーを押す |
Enter キーを押すと、/var の下のディレクトリが表示されます。
--- /var -----------------------------------------1 /..2. 367.2 MiB [##########] /lib. 96.5 MiB [## ] /cache. 18.7 MiB [ ] /log. 52.0 KiB [ ] /snap. 20.0 KiB [ ] /tmp. 16.0 KiB [ ] /spoole 4.0 KiB [ ] /opte 4.0 KiB [ ] /maile 4.0 KiB [ ] /locale 4.0 KiB [ ] /crashe 4.0 KiB [ ] /backups@ 0.0 B [ ] lock@ 0.0 B [ ] run
| No. | 表示 | 意味 |
|---|---|---|
| 1 | /.. | 1つ上のディレクトリに戻る項目 |
| 2 | /lib | /var の下でいちばん大きいディレクトリ。使用量は 367.2 MiB |
ヘルプを表示して終了する
? キーを押すと、ヘルプが表示されます。キーの一覧には、選択したファイルやディレクトリを削除するキー(d)もあり、このツールの中から空き容量を確保できます。
ncdu help ------------------------- 1:Keys -- 2:Format -- 3:About up, k Move cursor up down, j Move cursor downright/enter Open selected directory left, <, h Open parent directory n Sort by name (ascending/descending) s Sort by size (ascending/descending) C Sort by items (ascending/descending) M Sort by mtime (-e flag)1 d Delete selected file or directory t Toggle dirs before files when sorting -- more -- Press q to close
| No. | 表示 | 意味 |
|---|---|---|
| 1 | d Delete selected file or directory | 選択したファイルやディレクトリを削除するキー。削除すると元に戻せないので、内容を確かめてから使う |
ヘルプ画面は、q キーで閉じます。ncdu 自体を終了するときも、q キーを押します。
| キー | 動作 |
|---|---|
↑ ↓(k j) | カーソルを上下に動かす |
Enter(→) | 選択したディレクトリを開く |
←(h) | 1つ上のディレクトリに戻る |
n s | 名前順、サイズ順に並べ替える(もう一度押すと昇順と降順が切り替わる) |
d | 選択したファイルやディレクトリを削除する |
? | ヘルプを表示する |
q | 終了する(ヘルプ画面では、ヘルプを閉じる) |
まとめ
ディスクの使用量は、まず df でファイルシステム全体の空き容量と inode を確認し、容量を使っている場所を du や ncdu で絞り込むと調べやすくなります。使うコマンドを、次の表にまとめます。
| コマンド | 用途 |
|---|---|
df -h | ファイルシステムごとの容量と使用率を、読みやすい単位で表示する |
df -h --total | 合計の行を追加して表示する |
df -i | inode の使用状況を表示する |
du -h | ディレクトリごとの使用量を、読みやすい単位で表示する |
du -hs | 指定したディレクトリの合計だけを表示する |
du -sh * | sort -hr | ディレクトリごとの使用量を、多い順に並べる |
ncdu | 画面を操作しながら、容量を使っている場所を探す |
ストレージを効率よく管理するには、これらのコマンドで使用量を定期的に確認し、不要なファイルの削除やデータの圧縮を行います。必要に応じて、より大きなストレージにデータを移すことも検討します。
コメント