Linuxでディスク使用量を監視するためのガイド
1. 序章
このチュートリアルでは、ディスクスペースを監視するためのいくつかのLinuxツールについて説明します。
2. ファイルシステムとマウント
まず、ファイルシステムとマウントの違いを理解することが重要です。
ファイルシステムとは、オペレーティングシステムで使用できるハードディスクのパーティションを意味します。 ファイルシステムは、ネットワークベース、メモリ内、USBドライブ、および特別な一時スペースにすることもできます。
オペレーティングシステム上のファイルシステムにアクセスできる場合、ファイルシステムは「マウントされている」、つまりディレクトリで利用可能であると言います。 ファイルシステムがマウントされるディレクトリは、その「マウントポイント」と呼ばれます。
「ルート」ディレクトリはオペレーティングシステムのベースディレクトリであり、/にあります。 したがって、オペレーティングシステムには常に少なくとも1つのファイルシステムが/にマウントされています。
一般に、ルートディレクトリに関連するファイルシステム内のすべてのディレクトリについて説明します。
3. df –ファイルシステムの使用法
dfは、ファイルシステムの使用状況を確認するために使用するコマンドです。
これをシェルで実行してみましょう。
user@host:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1005792 0 1005792 0% /dev
tmpfs 204824 22140 182684 11% /run
/dev/sda 24543644 15646380 7635696 68% /
tmpfs 1024108 0 1024108 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 1024108 0 1024108 0% /sys/fs/cgroup
tmpfs 204824 0 204824 0% /run/user/1000
列ヘッダーから、各値の意味を確認できます。 重要なのは、サイズに関係する列は、dfに渡す引数に応じてスケールが変わることです。
たとえば、試してみましょう
Filesystem Size Used Avail Use% Mounted on
udev 983M 0 983M 0% /dev
tmpfs 201M 22M 179M 11% /run
/dev/sda 24G 15G 7.4G 67% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 201M 0 201M 0% /run/user/1000
上記の出力では、桁数を3桁以下に減らすために、サイズの後にバイト、キロバイト、メガバイト、ギガバイト、テラバイト、およびペタバイトの文字が付いていることがわかります。
df にはいくつかのオプションがあるので、manページを参照して何が利用できるかを確認できます。
4. du –ディレクトリの使用
duは、ディレクトリサイズを確認するために使用するコマンドです。
私たちの端末が3つのディレクトリと1つのファイルがある場所にあると想像してみましょう。
$ ls -l
total 20
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:15 one
-rw-r--r-- 1 mike sudo 6 Nov 4 12:37 test.txt
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:16 three
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:15 two
ls を使用すると、各ディレクトリのサイズが4096バイトであることがわかります。は、ディレクトリとその内容で使用されるサイズではなく、ディスク上のディレクトリのポインタのサイズです。
次に、 duを使用して、ディレクトリのサイズとその内容を確認します:
$ du
1024008 ./three
122888 ./two
10244 ./one
1157144 .
df と同様に、 du も、人間が読める形式の-hをサポートしています。
$ du -h
1001M ./three
121M ./two
11M ./one
1.2G .
du には、ここで説明されていない他の多くのオプションもあります。
5. 大きなファイルの検索
dfおよびduを使用して、システムで使用されているスペースの概要を取得する方法を見てきました。
ただし、マシンのスペースを解放するときは、どのファイルがすべてのスペースを占有しているかを具体的に知る必要があります。 ここで、lsおよびfindコマンドを使用できます。
5.1. サンプルファイル
まず、次の例で使用しているディレクトリツリーを見てみましょう。
Size Path and File
---- ------------------------------
6 ./test.txt
1000M ./three/output4.dat
10M ./two/output2.dat
100M ./two/two-a/more/output3.dat
10M ./two/output1.dat
10M ./one/output.dat
5.2. lsを使用する
上記のように、lsを使用してディレクトリの内容を表示できます。 l オプションを使用すると、ディレクトリ内のファイルサイズを表示できます。 これは便利ですが、調べるディレクトリがたくさんあるとすぐに面倒になる可能性があります。 ls -lh を使用して、この例の3つのディレクトリで大きなファイルを見つける方法を見てみましょう。
$ ls -lh one/
total 10M
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 output.dat
ディレクトリoneに1つの10メガバイトのファイルがあります。
次に、 du:によると121メガバイトを使用しているディレクトリtwoを見てみましょう。
$ ls -lh two
total 21M
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 output1.dat
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 output2.dat
drwxr-xr-x 3 mike sudo 4.0K Nov 4 13:29 two-a
two に2つの10メガバイトのファイルと、two-aというサブディレクトリがあります。 私たちはまだ100メガバイトのファイルを探しています。
two-a を見て、そこに何があるかを見てみましょう。
$ ls -lh two/two-a/
total 4.0K
drwxr-xr-x 2 mike sudo 4.0K Nov 4 13:30 more
two-a、には別のディレクトリがありますが、不足している100メガバイトはまだ見つかりません。
ファイルを見つけてそのサイズを印刷する再帰ツールがあればいいのにと思います。
5.3. findを使用する
findコマンドは、ディレクトリツリー内のすべてのファイルとそのサイズを表示する方法です。
ディレクトリの下にあるすべてのファイルとサイズを印刷するには、次のようにします。
$ find . -type f -exec ls -lh {} \;
-rw-r--r-- 1 mike sudo 6 Nov 4 12:37 ./test.txt
-rw-r--r-- 1 mike sudo 1000M Nov 3 20:16 ./three/output4.dat
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 ./two/output2.dat
-rw-r--r-- 1 mike sudo 100M Nov 3 20:15 ./two/two-a/more/output3.dat
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 ./two/output1.dat
-rw-r--r-- 1 mike sudo 10M Nov 3 20:15 ./one/output.dat
これにより、ディレクトリツリー内の各ファイルとそのサイズが表示されます。 もちろん、 find を使用してこれを行う方法はたくさんありますが、この単純な方法では、すべてのファイルとそのサイズが出力されます。
findを使用して、サイズが20メガバイトを超えるファイルのみを表示したいとします。
$ find . -type f -size +20M -exec ls -lh {} \;
-rw-r--r-- 1 mike sudo 1000M Nov 3 20:16 ./three/output4.dat
-rw-r--r-- 1 mike sudo 100M Nov 3 20:15 ./two/two-a/more/output3.dat
find は非常に強力なツールであるため、さらにオプションを見つける必要がある場合は、マニュアルページを確認できます。
6. 結論
このチュートリアルでは、ファイルシステムとファイルまたはディレクトリの両方のディスク容量を確認する方法を見てきました。 また、スペースを占有しているファイルに関する詳細を見つけるために、いくつかのユーティリティを調べました。