この章では、使用していないファイルや大きなディレクトリを見つけることにより、ディスク容量を最適化する方法を示します。この章で説明する手順は次のとおりです。
df コマンドとそのオプションを使用して、空きディスクブロック数とファイル数のレポートを得ることができます。詳細は、df(1M) のマニュアルページを参照してください。
次のように df コマンドを入力して、ディスク容量の利用状況に関する情報を表示します。
$ df [directory] [-F fstype] [-g] [-k] [-t]
df |
オプションを指定しない場合、マウントされている全ファイルシステム、それらの装置名、使用されている 512 バイトのブロックの合計数、ファイル数のリストを表示する |
directory |
ファイルシステムを確認したいディレクトリ。装置名、使用ブロック数、ファイル数を表示する |
-F fstype |
マウントされていないファイルシステム、それらの装置名、使用されている 512 バイトのブロック数、タイプ fstype のファイルシステム上のファイル数のリストを表示する |
-g |
マウントされている全ファイルシステムの statvfs 構造を表示する |
-k |
ファイルシステム、使用されている K バイト数、空き K バイト数、容量の利用率、マウントポイントのリストを表示する |
-t |
マウントされている全ファイルシステムの合計ブロック数と使用されているブロック数を表示する |
リモートでマウントされているファイルシステムに対しては、ファイル数の代わりに 「-1 files」 が表示されます。
次の例では、/usr/local を除き、すべてのファイルシステムがローカルでマウントされています。/usr/local はシステム mars からリモートにマウントされているため、ローカルのディスク資源を使用しません。
$ df / (/dev/dsk/c0t3d0s0 ): 30374 blocks 14002 files /usr (/dev/dsk/c0t3d0s6 ): 40714 blocks 80522 files /proc (/proc ): 0 blocks 429 files /dev/fd (fd ): 0 blocks 0 files /export/home (/dev/dsk/c0t3d0s7 ): 10712 blocks 10564 files /export/root (/dev/dsk/c0t3d0s3 ): 69180 blocks 18812 files /export/swap (/dev/dsk/c0t3d0s4 ): 61804 blocks 29563 files /opt (/dev/dsk/c0t3d0s5 ): 15722 blocks 13147 files /tmp (swap ): 57104 blocks 5653 files /usr/local (mars:/usr/local ): 435040 blocks -1 files $
次の例では、ファイルシステム、合計 K バイト数、使用されている K バイト数、使用可能な K バイト数、容量の利用率、マウントポイントが表示されています。
$ df -k Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t3d0s0 30991 15812 12089 57% / /dev/dsk/c0t3d0s6 185303 164946 1827 99% /usr /proc 0 0 0 0% /proc fd 0 0 0 0% /dev/fd /dev/dsk/c0t3d0s7 19095 13739 3456 80% /export/home /dev/dsk/c0t3d0s3 34599 9 31140 1% /export/root /dev/dsk/c0t3d0s4 55511 24609 25352 50% /export/swap /dev/dsk/c0t3d0s5 23063 15202 5561 74% /opt swap 29564 976 28588 4% /tmp mars:/usr/local 5353093 5135591 163972 97% /usr/local $
次の例は、上の例と同じシステムに関する情報を示していますが、表示されているのは UFS ファイルシステムの情報だけです。
$ df -F ufs / (/dev/dsk/c0t3d0s0 ): 30358 blocks 14002 files /usr (/dev/dsk/c0t3d0s6 ): 40714 blocks 80522 files /export/home (/dev/dsk/c0t3d0s7 ): 10712 blocks 10564 files /export/root (/dev/dsk/c0t3d0s3 ): 69180 blocks 18812 files /export/swap (/dev/dsk/c0t3d0s4 ): 61804 blocks 29563 files /opt (/dev/dsk/c0t3d0s5 ): 15722 blocks 13147 files $
/proc と /tmp はローカルファイルシステムですが、UFS ファイルシステムではありません (/proc は PROCFS ファイルシステムであり、/tmp は TMPFS ファイルシステムです)。
次の例は、マウントされているすべてのファイルシステム、装置名、使用されている 512 バイトブロックの合計数、ファイル数を示しています。2 行構成の各エントリの 2 行目は、それぞれのファイルシステムに割り当てられているブロックの合計数とファイルの合計数を示します。
$ df -t / (/dev/dsk/c0t3d0s0 ): 30358 blocks 14002 files total: 61982 blocks 16128 files /usr (/dev/dsk/c0t3d0s6 ): 40714 blocks 80522 files total: 370606 blocks 94080 files /proc (/proc ): 0 blocks 429 files total: 0 blocks 492 files /dev/fd (fd ): 0 blocks 0 files total: 0 blocks 26 files /export/home (/dev/dsk/c0t3d0s7 ): 10712 blocks 10564 files total: 38190 blocks 10752 files /export/root (/dev/dsk/c0t3d0s3 ): 69180 blocks 18812 files total: 69198 blocks 18816 files /export/swap (/dev/dsk/c0t3d0s4 ): 61804 blocks 29563 files total: 111022 blocks 29568 files /opt (/dev/dsk/c0t3d0s5 ): 15722 blocks 13147 files total: 46126 blocks 13440 files /tmp (swap ): 57144 blocks 5653 files total: 59096 blocks 5768 files /usr/local (mars:/usr/local ): 435008 blocks -1 files total: 10706186 blocks -1 files $
ls コマンドを使用して、ファイルサイズを調べたりソートしたりできます。また、find コマンドを使用して、サイズの制限を超えているファイルを探すことができます。詳細は、ls(1) と find(1) のマニュアルページを参照してください。
次のように入力して、ファイルのサイズを表示します。
$ ls [-l] [-s]
-l |
長形式でファイルとディレクトリのリストを表示し、それぞれのサイズをバイト単位で示す |
-s |
ファイルとディレクトリのリストを表示し、それぞれのサイズをブロック単位で示す |
次の例は、lastlog、wtmp、wtmpx が /var/adm ディレクトリ内のその他のファイルよりも相当大きいことを示します。
venus% cd /var/adm venus% ls -l total 434 -r--r--r-- 1 root other 585872 Jan 28 14:53 lastlog drwxrwxr-x 2 adm adm 512 Dec 1 16:35 log -rw-r--r-- 1 root other 408 Jan 28 14:15 messages -rw-r--r-- 1 root other 177 Jan 24 16:56 messages.0 -rw-r--r-- 1 root other 177 Jan 17 16:13 messages.1 -rw-r--r-- 1 root other 0 Jan 4 04:05 messages.2 -rw-r--r-- 1 root other 562 Jan 2 13:13 messages.3 drwxrwxr-x 2 adm adm 512 Dec 1 16:35 passwd drwxrwxr-x 2 adm sys 512 Jan 28 11:38 sa -rw-rw-rw- 1 bin bin 0 Nov 26 10:56 spellhist -rw------- 1 root root 1319 Jan 28 14:58 sulog -rw-r--r-- 1 root bin 288 Jan 28 14:53 utmp -rw-r--r-- 1 root bin 2976 Jan 28 14:53 utmpx -rw-rw-r-- 1 adm adm 12168 Jan 28 14:53 wtmp -rw-rw-r-- 1 adm adm 125736 Jan 28 14:53 wtmpx
次の例は、lpsched-2 が 2 ブロックを使用していることを示します。
% cd /var/lp/logs % ls -s total 2 0 lpsched 0 lpsched.1 2 lpsched.2%
次のように入力して、ファイルのサイズをブロック単位に、最も大きいものから降順に表示します。
$ ls -s | sort -nr | more
sort -nr |
ファイルのリストをブロックサイズの最も大きなものから降順に並べる |
次の例では、wtmpx と lastlog が /var/adm ディレクトリ内で最も大きなファイルです。
$ cd /var/adm $ ls -s | sort -nr | more 320 wtmpx 128 lastlog 74 pacct 56 messages 30 wtmp 6 utmpx 2 utmp 2 sulog 2 sa 2 passwd 2 log 0 spellhist total 624
次のように 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(1M) と quot(1M) のマニュアルページを参照してください。
次のように du コマンドを入力して、1 つ以上のディレクトリ、サブディレクトリ、ファイルのサイズを表示します。サイズは 512 バイトブロック単位で表示されます。
$ du [-as] [directory ...]
du |
指定した各ディレクトリとそれらの下の各サブディレクトリのサイズを合わせて表示する |
-a |
指定したディレクトリ内の各ファイルと各サブディレクトリのサイズと合計ブロック数を表示する |
-s |
指定したディレクトリ内の合計ブロック数を表示する |
directory ... |
調べたい 1 つ以上のディレクトリを指定する |
次の例は、2 つのディレクトリとそれらのすべてのサブディレクトリのサイズを表示します。
$ du /var/log /var/cron 4 /var/log 3250 /var/cron
次の例は、2 つのディレクトリとそれらのすべてのサブディレクトリとファイルのサイズ、および各ディレクトリ内の合計ブロック数を表示します。
$ du -a /var/log /var/cron 0 /var/log/authlog 0 /var/log/syslog 2 /var/log/sysidconfig.log 4 /var/log 3248 /var/cron/log 3250 /var/cron
次の例は 2 つのディレクトリの合計サイズを表示します。
$ du -s /var/log /var/cron 4 /var/log 3250 /var/cron
次のように入力して、ユーザー、ディレクトリまたはファイルシステム、1024 バイト単位のブロック数を表示します。
# quot [-a] [filesystem]
-a |
マウントされている各 UFS ファイルシステムの全ユーザーと 1024 バイト単位のブロック数を表示する |
filesystem |
UFS ファイルシステム。ユーザーと使用されているブロック数が表示される |
quot コマンドは、ローカル UFS ファイルシステムに対してだけ使用できます。
次の例では、ルート (/) ファイルシステムのユーザーが表示され、次にマウントされているすべての UFS ファイルシステムのユーザーが表示されます。
# quot / /dev/rdsk/c0t0d0s0: 35400 bin 183 adm 49 lp 47 uucp 37 bob 28 sys 2 mary # quot -a /dev/rdsk/c0t0d0s0 (/): 35400 bin 183 adm 49 lp 47 uucp 37 bob 28 sys 2 mary /dev/rdsk/c0t0d0s6 (/usr): 56567 bin 2000 lp 698 uucp 1 adm /dev/rdsk/c0t0d0s7 (/export/home): 617 ken
ファイルの数が非常に多くなったファイルシステムを整理する場合、最近使用されていないファイルを見つけて削除します。使用されていないファイルは ls または find コマンドを使用して見つけることができます。詳細は、ls(1) と find(1) のマニュアルページを参照してください。
ディスク容量を節約するその他の方法としては、/var/tmp または /var/spool 内にあるような一時ファイルを空にしたり、core ファイルやクラッシュダンプファイルを削除したりするなどが含まれます。これらのファイルの詳細は、第 31 章「システムクラッシュ情報の生成と保存」を参照してください。
次のように ls -t コマンドを使用して、最も最近に作成または変更されたファイルから順番にファイルのリストを表示します。
$ ls -t [directory]
-t |
最新タイムスタンプをリストの最初としてソートする |
directory |
ファイルを探したいディレクトリ |
次の例は、ls -t をどのように使用して /var/adm ディレクトリ内の最新のファイルを見つけるかを示しています。sulog、messages、utmpx、wtmpx、utmp、 lastlog が最も最近に作成または変更されたファイルです。これは、ls -l からの出力を使用して確認できます。この出力では、それら 6 つのファイルは 3 月に作成または変更されているのに対して、/var/spool 内のその他のファイルは 3 月よりも前に作成または変更されています。
$ ls -t /var/adm sulog wtmpx wtmp messages.1 vold.log spellhist messages utmp sa messages.2 log aculog utmpx lastlog messages.0 messages.3 acct passwd $ ls -l /var/adm total 686 drwxr-xr-x 5 adm adm 512 Feb 13 16:20 acct -rw------- 1 uucp bin 0 Feb 13 16:04 aculog -r--r--r-- 1 root other 8456 Mar 27 10:34 lastlog drwxr-xr-x 2 adm adm 512 Feb 13 16:36 log -rw-r--r-- 1 root other 117376 Mar 27 13:11 messages -rw-r--r-- 1 root other 4620 Jan 30 08:30 messages.0 -rw-r--r-- 1 root other 11176 Jan 23 04:30 messages.1 -rw-r--r-- 1 root other 60 Jan 13 09:45 messages.2 -rw-r--r-- 1 root other 0 Jan 31 04:05 messages.3 drwxr-xr-x 2 adm adm 512 Feb 13 16:03 passwd drwxr-xr-x 2 adm sys 512 Mar 20 06:59 sa -rw-rw-rw- 1 bin bin 0 Feb 13 16:04 spellhist -rw------- 1 root root 1647 Mar 27 13:28 sulog -rw-r--r-- 1 root bin 504 Mar 27 10:34 utmp -rw-r--r-- 1 root bin 5208 Mar 27 10:34 utmpx -rw-rw-rw- 1 root root 500 Jan 11 14:40 vold.log -rw-rw-r-- 1 adm adm 14724 Mar 27 10:34 wtmp -rw-rw-r-- 1 adm adm 151404 Mar 27 10:34 wtmpx
スーパーユーザーになります。
次のように入力して、指定した日数の間アクセスのないファイルを見つけて、ファイルにそれらのリストを書き込みます。
# find directory -type f [-atime +nnn] [-mtime +nnn] -print > filename
directory |
ファイルを調べたいディレクトリ。この下のディレクトリも調べられる |
-atime +nnn |
指定した日数の間アクセスのないファイルを見つける |
-mtime +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/log/asppp.log /var/adm/aculog /var/adm/spellhist /var/adm/wtmp /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`
次のように入力して、/var/tmp ディレクトリに移動します。
# cd /var/tmp
次の手順を実行する前に、正しいディレクトリにいることを確認してください。次の手順はカレントディレクトリ内のすべてのファイルを削除します。
カレントディレクトリ内のファイルとサブディレクトリを削除します。
# rm -r *
一時サブディレクトリやファイル、または古いサブディレクトリやファイル (たとえば、mail、lost+found、quotas など) が入っている他のディレクトリに変更し、上の手順 3 を繰り返してそれらを削除します。
次の例は、どのように /var/tmp ディレクトリを整理するかを示し、すべてのファイルとサブディレクトリが削除されたことを確認しています。
# cd /var/tmp # ls deadfiles wxconAAAa0003r:0.0 wxconAAAa000NA:0.0 test_dir wxconAAAa0003u:0.0 wxconAAAa000cc:0.0 wxconAAAa000zs:0.0 # 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 |
クラッシュダンプファイルを生成したシステム |
次の手順を実行する前に、正しいディレクトリにいることを確認してください。次の手順はカレントディレクトリ内のすべてのファイルを削除します。
クラッシュダンプファイルを削除します。
# rm *
クラッシュダンプファイルが削除されていることを確認します。
# ls
次の例は、システム venus からどのようにクラッシュダンプファイルを削除するかと、クラッシュダンプファイルが削除されているかを確認する方法を示します。
# cd /var/crash/venus # rm * # ls #