この章では、使用していないファイルや大きなディレクトリを見つけることにより、ディスク容量を最適化する方法を示します。この章で説明する手順は次のとおりです。
この章で説明する手順は次のとおりです。
次の表は、サイズとディスク容量の情報を表示するコマンドをまとめたものです。
コマンド |
マニュアルページ |
説明 |
---|---|---|
df |
df(1M) |
空きディスクブロック数とファイル数を表示する。 |
du |
du(1) |
各サブディレクトリに割り当てられたディスク容量を表示する。 |
find -size |
find(1) |
-size オプションで指定したサイズに基づいて、ディレクトリを再帰的に検索する。 |
ls - lh |
ls(1) |
ファイルのサイズを 1024 の累乗でリストする。 |
次のように df コマンドを入力して、ディスク容量の利用状況に関する情報を表示します。
$ df [directory] [-h] [-t] [-t] |
df |
オプションを指定しない場合、マウントされている全ファイルシステム、それらの装置名、使用されている 512 バイトのブロック数、ファイル数のリストを表示する |
directory |
チェックするファイルシステムのディレクトリを指定する |
-h |
ディスク容量を 1024 の累乗で表示する |
-t |
マウントされている全ファイルシステムの合計ブロック数と使用されているブロック数を表示する |
次の例では、/usr/dist を除き、すべてのファイルシステムがローカルでマウントされています。/usr/dist はシステム venus からリモートにマウントされています。
$ df / (/dev/dsk/c0t0d0s0 ): 287530 blocks 92028 files /usr (/dev/dsk/c0t0d0s6 ): 1020214 blocks 268550 files /proc (/proc ): 0 blocks 878 files /dev/fd (fd ): 0 blocks 0 files /etc/mnttab (mnttab ): 0 blocks 0 files /var/run (swap ): 396016 blocks 9375 files /tmp (swap ): 396016 blocks 9375 files /opt (/dev/dsk/c0t0d0s5 ): 381552 blocks 96649 files /export/home (/dev/dsk/c0t0d0s7 ): 434364 blocks 108220 files /usr/dist (venus:/usr/dist ):14750510 blocks 2130134 files |
次の例は、ファイルシステム情報が 1024 バイト単位で表示されています。
$ df -h Filesystem size used avail capacity Mounted on /dev/dsk/c0t0d0s0 1.9G 58M 1.8G 4% / /dev/dsk/c0t0d0s6 2.5G 765M 1.7G 1% /usr /proc 0K 0K 0K 0% /proc fd 0K 0K 0K 0% /dev/fd mnttab 0K 0K 0K 0% /etc/mnttab swap 2.1G 24K 2.1G 1% /var/run swap 2.1G 0K 2.1G 0% /tmp /dev/dsk/c0t0d0s5 1.9G 12M 1.8G 1% /opt /dev/dsk/c0t0d0s7 1.9G 10K 1.8G 1% /export/home |
/proc と /tmp は、ローカルファイルシステムですが、UFS ファイルシステムではありません。/proc は PROCFS ファイルシステムであり、/var/run と /tmp は TMPFS ファイルシステムであり、/etc/mnttab は MNTFS ファイルシステムです。
次の例は、マウントされているすべてのファイルシステム、装置名、使用されている 512 バイトブロックの合計数、ファイル数を示しています。2 行構成の各エントリの 2 行目は、それぞれのファイルシステムに割り当てられているブロックの合計数とファイルの合計数を示します。
$ df -t / (/dev/dsk/c0t0d0s0 ): 287530 blocks 92028 files total: 385614 blocks 96832 files /usr (/dev/dsk/c0t0d0s6 ): 1020214 blocks 268550 files total: 2381102 blocks 300288 files /proc (/proc ): 0 blocks 879 files total: 0 blocks 924 files /dev/fd (fd ): 0 blocks 0 files total: 0 blocks 72 files /etc/mnttab (mnttab ): 0 blocks 0 files total: 0 blocks 1 files /var/run (swap ): 396112 blocks 9375 files total: 396112 blocks 9395 files /tmp (swap ): 396112 blocks 9375 files total: 396128 blocks 9395 files /opt (/dev/dsk/c0t0d0s5 ): 381552 blocks 96649 files total: 385614 blocks 96832 files /export/home (/dev/dsk/c0t0d0s7 ): 434364 blocks 108220 files total: 434382 blocks 108224 files /usr/dist (venus:/usr/dist ): 14750510 blocks 2130134 files total: 41225162 blocks 2482176 files |
ls コマンドを使用して、ファイルサイズを調べたりソートしたりできます。また、find コマンドを使用して、サイズの制限を超えているファイルを探すことができます。詳細は、ls(1) と find(1) のマニュアルページを参照してください。
次のように入力して、ファイルのサイズを表示します。
$ ls [-lh] [-s] |
-l |
長形式でファイルとディレクトリのリストを表示し、それぞれのサイズをバイト単位で示す(次の例を参照) |
-h |
ファイルやディレクトリのサイズが 1024 バイトより大きい場合、ファイルとディレクトリのサイズをキロバイト、メガバイト、ギガバイト、テラバイト単位で示す。 このオプションは、-o、- n、-@、-g オプションで表示された出力を修正して、ファイルやディレクトリのサイズを新しい形式で表示する。詳細は ls(1) を参照してください。 |
-s |
ファイルとディレクトリのリストを表示し、それぞれのサイズをブロック単位で示す |
次の例は、lastlog と messages が /var/adm ディレクトリ内のその他のファイルよりも大きいことを示します。
$ cd /var/adm $ ls -lh total 148 drwxrwxr-x 5 adm adm 512 Nov 26 09:39 acct/ -rw------- 1 uucp bin 0 Nov 26 09:25 aculog drwxr-xr-x 2 adm adm 512 Nov 26 09:25 exacct/ -r--r--r-- 1 root other 342K Nov 26 13:56 lastlog drwxr-xr-x 2 adm adm 512 Nov 26 09:25 log/ -rw-r--r-- 1 root root 20K Nov 26 13:55 messages drwxr-xr-x 2 adm adm 512 Nov 26 09:25 passwd/ drwxrwxr-x 2 adm sys 512 Nov 26 09:39 sa/ drwxr-xr-x 2 root sys 512 Nov 26 09:49 sm.bin/ -rw-rw-rw- 1 root bin 0 Nov 26 09:25 spellhist drwxr-xr-x 2 root sys 512 Nov 26 09:25 streams/ -rw-r--r-- 1 root bin 3.3K Nov 26 13:56 utmpx -rw-r--r-- 1 root root 0 Nov 26 10:17 vold.log -rw-r--r-- 1 adm adm 19K Nov 26 13:56 wtmpx |
次の例は、lpsched.1 ファイルが 2 ブロックを使用していることを示します。
$ cd /var/lp/logs $ ls -s total 2 0 lpsched 2 lpsched.1 |
次のように入力して、ファイルのサイズをブロック単位に、最も大きいものから降順に表示します。
$ ls -s | sort -nr | more |
sort -nr |
ファイルのリストをブロックサイズの最も大きなものから降順に並べる |
次の例では、lastlog と messages が /var/adm ディレクトリ内で最も大きなファイルです。
$ cd /var/adm $ ls -s | sort -nr | more 48 lastlog 30 messages 24 wtmpx 18 pacct 8 utmpx 2 vold.log 2 sulog 2 sm.bin/ 2 sa/ 2 passwd/ 2 pacct1 2 log/ 2 acct/ 0 spellhist 0 aculog total 144 |
次のように find コマンドを使用して、指定したサイズを超えるファイルを見つけてファイル名を表示します。
$ find directory -size +nnn |
directory |
ファイルを検索するディレクトリ |
-size +nnn |
512 バイトブロック数。このサイズを上回るファイルがリストされる。 |
次の例は、作業中のカレントディレクトリ内の 400 ブロックを超えるファイルをどのように見つけるかを示します。
$ find . -size +400 -print ./Howto/howto.doc ./Howto/howto.doc.backup ./Howto/howtotest.doc ./Routine/routineBackupconcepts.doc ./Routine/routineIntro.doc ./Routine/routineTroublefsck.doc ./.record ./Mail/pagination ./Config/configPrintadmin.doc ./Config/configPrintsetup.doc ./Config/configMailappx.doc ./Config/configMailconcepts.doc ./snapshot.rs |
du コマンドとそのオプションを使用してディレクトリのサイズを表示できます。さらに quot コマンドを使用すれば、ユーザーアカウントによって占められるローカル UFS ファイルシステム上のディスク容量のサイズを知ることができます。これらのコマンドについては、du(1) および quot(1M) のマニュアルページを参照してください。
次のように du コマンドを入力して、1 つ以上のディレクトリ、サブディレクトリ、ファイルのサイズを表示します。サイズは 512 バイトブロック単位で表示されます。
$ du [-as] [directory ...] |
du |
指定した各ディレクトリとそれらの下の各サブディレクトリのサイズを合わせて表示する |
-a |
指定したディレクトリ内の各ファイルと各サブディレクトリのサイズと合計ブロック数を表示する |
-s |
指定したディレクトリ内の合計ブロック数を表示する |
-h |
各ディレクトリを 1024 バイト単位で表示する |
-H |
各ディレクトリを 1000 バイト単位で表示する |
directory ... |
調べたい 1 つ以上のディレクトリを指定する |
次の例は、2 つのディレクトリの合計サイズを示しています。
$ du -s /var/adm /var/spool/lp 130 /var/adm 40 /var/spool/lp |
次の例は、2 つのディレクトリとそれらのすべてのサブディレクトリとファイルのサイズ、および各ディレクトリ内の合計ブロック数を表示します。
$ du /var/adm /var/spool/lp 2 /var/adm/log 2 /var/adm/passwd 2 /var/adm/acct/fiscal 2 /var/adm/acct/nite 2 /var/adm/acct/sum 8 /var/adm/acct 2 /var/adm/sa 2 /var/adm/sm.bin 130 /var/adm 4 /var/spool/lp/admins 2 /var/spool/lp/fifos/private 2 /var/spool/lp/fifos/public 6 /var/spool/lp/fifos 2 /var/spool/lp/requests/starbug 4 /var/spool/lp/requests 2 /var/spool/lp/system 2 /var/spool/lp/tmp/starbug 2 /var/spool/lp/tmp/.net/tmp/starbug 4 /var/spool/lp/tmp/.net/tmp 2 /var/spool/lp/tmp/.net/requests/starbug 4 /var/spool/lp/tmp/.net/requests 10 /var/spool/lp/tmp/.net 14 /var/spool/lp/tmp 40 /var/spool/lp |
次の例は、ディレクトリのサイズを 1024 バイト単位で示しています。
du -h /usr/share/audio 796K /usr/share/audio/samples/au 797K /usr/share/audio/samples 798K /usr/share/audio |
次のように入力して、ユーザー、ディレクトリまたはファイルシステム、1024 バイト単位のブロック数を表示します。
# quot [-a] [filesystem] |
-a |
マウントされている各 UFS ファイルシステムの全ユーザーと 1024 バイト単位のブロック数を表示する |
filesystem |
UFS ファイルシステムを指定する。ユーザーと使用されているブロック数が表示される |
quot コマンドは、ローカル UFS ファイルシステムに対してだけ使用できます。
次の例では、ルート (/) ファイルシステムのユーザーが表示されています。次に、マウントされた全 UFS ファイルシステムのユーザーが表示されています。
# quot / /dev/rdsk/c0t0d0s0: 43340 root 3142 rimmer 47 uucp 35 lp 30 adm 4 bin 4 daemon # quot -a /dev/rdsk/c0t0d0s0 (/): 43340 root 3150 rimmer 47 uucp 35 lp 30 adm 4 bin 4 daemon /dev/rdsk/c0t0d0s6 (/usr): 460651 root 206632 bin 791 uucp 46 lp 4 daemon 1 adm /dev/rdsk/c0t0d0s7 (/export/home): 9 root |
非常に負荷がかかったファイルシステムを整理する作業として、最近使用されていないファイルの特定と削除があります。使用されていないファイルは ls または find コマンドを使用して見つけることができます。詳細は、ls(1) と find(1) のマニュアルページを参照してください。
ディスク容量を節約するその他の方法としては、/var/tmp または /var/spool 内にあるような一時ファイルを空にしたり、core ファイルやクラッシュダンプファイルを削除したりするなどが含まれます。クラッシュダンプファイルの詳細は、第 28 章「システムクラッシュ情報の管理 (手順)」を参照してください。
次のように ls -t コマンドを使用して、最も新しく作成または変更されたファイルから順番にファイルのリストを表示します。
$ ls -t [directory] |
-t |
最新タイムスタンプのファイルを最初にしてソートする |
directory |
検索するディレクトリを指定します。 |
次の例は、ls -tl コマンドを使用して、 /var/adm ディレクトリ内で作成または変更された最新のファイルを検索する方法を示しています。 sulog が最も新しく作成または変更されたファイルです。
$ ls -tl /var/adm total 134 -rw------- 1 root root 315 Sep 24 14:00 sulog -r--r--r-- 1 root other 350700 Sep 22 11:04 lastlog -rw-r--r-- 1 root bin 4464 Sep 22 11:04 utmpx -rw-r--r-- 1 adm adm 20088 Sep 22 11:04 wtmpx -rw-r--r-- 1 root other 0 Sep 19 03:10 messages -rw-r--r-- 1 root other 0 Sep 12 03:10 messages.0 -rw-r--r-- 1 root root 11510 Sep 10 16:13 messages.1 -rw-r--r-- 1 root root 0 Sep 10 16:12 vold.log drwxr-xr-x 2 root sys 512 Sep 10 15:33 sm.bin drwxrwxr-x 5 adm adm 512 Sep 10 15:19 acct drwxrwxr-x 2 adm sys 512 Sep 10 15:19 sa -rw------- 1 uucp bin 0 Sep 10 15:17 aculog -rw-rw-rw- 1 root bin 0 Sep 10 15:17 spellhist drwxr-xr-x 2 adm adm 512 Sep 10 15:17 log drwxr-xr-x 2 adm adm 512 Sep 10 15:17 passwd |
スーパーユーザーになります。
次のように入力して、指定した日数の間アクセスのないファイルを見つけて、ファイルにそれらのリストを書き込みます。
# find directory -type f [-atime +nnn] [-mtime +nnn] -print > filename |
directory |
ファイルを検索するディレクトリを指定する。このディレクトリの下にあるディレクトリも検索する。 |
-atime + nnn |
指定した日数 (nnn) の間アクセスのないファイルを見つける |
-mtime + nnn |
指定した日数 (nnn) の間変更のないファイルを見つける |
filename |
上の手順でリストに書き込んだ使用されていないファイルを削除します。
# rm `cat filename` |
filename は、前の手順で作成した、使用されていないファイルのリストが入っているファイル
次の例は、/var/adm ディレクトリとサブディレクトリ中の過去 60 日にわたってアクセスされていないファイルを示しています。/var/tmp/deadfiles ファイルには、使用されていないファイルのリストが含まれます。rm コマンドは、これらの使用されていないファイルを削除します。
# find /var/adm -type f -atime +60 -print > /var/tmp/deadfiles & # more /var/tmp/deadfiles /var/adm/aculog /var/adm/spellhist /var/adm/wtmpx /var/adm/sa/sa13 /var/adm/sa/sa27 /var/adm/sa/sa11 /var/adm/sa/sa23 /var/adm/sulog /var/adm/vold.log /var/adm/messages.1 /var/adm/messages.2 /var/adm/messages.3 # rm `cat /var/tmp/deadfiles` # |
整理するディレクトリに移動します。
# cd directory |
手順 3 を実行する前に、正しいディレクトリにいることを確認してください。手順 3 はカレントディレクトリ内のすべてのファイルを削除します。
カレントディレクトリ内のファイルとサブディレクトリを削除します。
# rm -r * |
不要な一時サブディレクトリやファイル、または古いサブディレクトリやファイルがある他のディレクトリに移動して、手順 3 を繰り返してサブディレクトリやファイルを削除します。
次の例は、どのように mywork ディレクトリを整理するかを示し、すべてのファイルとサブディレクトリが削除されたことを確認する方法を示しています。
# cd mywork # ls filea.000 fileb.000 filec.001 # rm -r * # ls # |
core ファイルを検索したいディレクトリに移動します。
次のように入力して、ディレクトリとサブディレクトリ内のすべての core ファイルを見つけて削除します。
# find . -name core -exec rm {} \; |
次の例は、どのように find コマンドを使用して jones のユーザーアカウントから core ファイルを見つけて削除するかを示します。
# cd /home/jones # find . -name core -exec rm {} \; |
クラッシュダンプファイルは非常に大きくなる可能性があります。したがって、必要以上に長期間保存しないでください。
次のように入力して、クラッシュダンプファイルが格納されているディレクトリに移動します。
# cd /var/crash/system |
system は、クラッシュダンプファイルを作成したシステムのことです。
手順 3 を実行する前に、正しいディレクトリにいることを確認してください。手順 3 はカレントディレクトリ内のすべてのファイルを削除します。
クラッシュダンプファイルを削除します。
# rm * |
クラッシュダンプファイルが削除されていることを確認します。
# ls |
次の例は、システム venus からどのようにクラッシュダンプファイルを削除するかと、クラッシュダンプファイルが削除されているかを確認する方法を示します。
# cd /var/crash/venus # rm * # ls # |