綾小路龍之介の素人思考

[linux] 入れ子状にマウントされたディスクの使用量をduで確認

ディスクマウント位置よりも低い位置に別ディスクがマウントされている場合のディスク使用量をduでチェックする方法。例えば2つのブロックデバイスが/homeと/home/hogeにマウントされている場合、/home/hogeを除いた/homeの使用量をduでチェックする方法。dfを使えば一発なんだけど、それぞれのブロックデバイス中で多くの領域を調べたい場合は、du|sortするわけで、そのときには以下の方法を使う。マウントしたディスクに余裕が無くなってきたときにどうにかしてスペースを確保しておかないと何が起こるかわかったもんじゃない。

まずはdfで状況確認してみる。

$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2               264443    120329    130459  48% /
tmpfs                    62712         0     62712   0% /lib/init/rw
udev                     10240       120     10120   2% /dev
tmpfs                    62712         0     62712   0% /dev/shm
/dev/hda12             8546616   4406940   3705524  55% /home
/dev/hda11              381138     10300    351160   3% /tmp
/dev/hda9              4806904   3087488   1475232  68% /usr
/dev/hda10             2885780    346920   2392272  13% /var
/dev/md0              17302872  13242164   3181764  81% /home/hoge

この状態で/homeにマウントされているパーティション/dev/hda12にスペースを確保したいとする。まずはduとsortでそれぞれのディレクトリの使用量を少ない順に並べる。このとき/dev/hda12のスペース確保という観点からすれば不要な情報が含まれてしまう。その理由は/homeの下にある/home/hogeが/dev/md0からマウントされているため、単純なduでは/home/hogeの情報も拾ってしまうからだ。

# du /home | sort -k1n

このような場合はduに異なるファイルシステムのディレクトリは除外するためのオプション(-x)を付ける。このようにすることで/homeから見て別のファイルシステム、この場合は/dev/hda12に属さないものは除外される。

# du -x /home | sort -k1n

すると、/homeが属する/dev/hda12に含まれるディレクトリのみの使用量が表示される。このようにすれば、余分な情報が表示されない。/homeの使用量をチェックしたければ-xを付けてduを実行しすればよい。また、ディレクトリツリーの階層が深い場合、大量に表示されて結局どのディレクトリの使用量が多いのかわからなくなることがある。そのような場合は--max-depthを付けることで表示深さの制限をかけることが出来る。

# du -x --max-depth=1 /home | sort -k1n

例えば/homeから見た深さ1(--max-depth=1)とはそれぞれの各ユーザのホームディレクトリを意味している。これで各ユーザがホームディレクトリをどの程度使用しているかがわかる。使用量の多いユーザはに警告を出すことも簡単なはずだ。

  1. Manpage of DU

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-03-09T12:34:54+09:00
  2. Modified: 2009-03-09T16:38:01+09:00
  3. Generated: 2017-07-16T23:09:17+09:00