プロが教えるわが家の防犯対策術!

dfコマンドが表示する使用領域サイズは、何の情報?

お世話になります。
ファイルシステムのディスクの使用状況について、ご教授ください。

以下のディレクトリに対し、ディスクを割り当てています。

ディレクトリ名    割り当てサイズ
/home         100(KB)
/home/tmp      100(KB)

/home直下には、tmpというディレクトリのみが存在する状態です。

サブディレクトリ(/home/tmp)配下に10KBのファイルを置いたとき、
ディスクの使用状況を見るには
df -k /home/tmp
で取得できると思います。

df -k /home
としないのは、サブディレクトリに対してディスクを割り当てているため、
親ディレクトリに対して取得(df -k /home)しても使用状況に変化がなかったからです。

ここで質問なのですが、親ディレクトリに対してdfして得られる情報は、
具体的には何を意味しているのでしょうか?
数値に変化がないということが、何の情報を取得しているからなのかがわかりません。

参考サイトなど調べましたが、見つけることができませんでした。
ご教授いただければ幸いです。

A 回答 (3件)

UNIXの基礎的な話になるのですが、


OSから見ればディレクトリも1ファイルでしかありません。
よって以下の通りです
>/homeのパーティーションには各ディレクトリの定義情報(名前や権限など)に
>必要な容量のみ含むことになるのでしょうか?
    • good
    • 0

 df -k /homeが返す容量は、/homeというディレクトリーポイントでマウントされているブロックデバイスにおける容量だ。



 そいでは次のようなディレクトリーツリーを考えてみましょう。

/
/home/
/home/tmp/
/home/tmp/aaa 20KB
/home/tmp2/
/home/tmp2/bbb 10KB

 けつがスラッシュになっているのがディレクトリーでそうでないのがファイルだ。ディレクトリーツリーだけを見ると、homeの下にはtmpとtmp2の2つのディレクトリーが「属している」ように見える。ところがどっこい、質問者の状況では、/と/home/と/home/tmp/は全て別のパーティーションがマウントされている。
 ここでdf -k /homeとすると、使用領域は20KBで、df -k /home/tmpとすると使用領域は10KBになる。

 つまり、dfはディレクトリーではなく、あくまでもパーティーションに対して容量を計算して表示しているのだ。試しにdf -aとしてみると(マウントされている)パーティーション一覧が出てくるだろう。

 /home/tmp/はディレクトリーツリー上では/home/の下に居るように見えるが、ディスク領域としては別計算になるために、/home/tmp/にいくらものを入れてもdf -k /homeとした時に結果が変わらなかったのだ。なぜ別計算になるかというとあなたがそう設定した(/homeにパーティションをマウントして/home/tmpにパーティションをマウントした)からだ。

 これに対して、パーティションが変わってもディレクトリーツリーの下にあるものの容量を調べるにはdfではなくってduを使うと良いだろう。

この回答への補足

ご回答ありがとうございます。

df -k /homeとすると、使用領域は10KBで、
df -k /home/tmpとすると使用領域は20KBになる。

と読み変えて質問させていただきます。

もし
/home/tmp2/bbb 10KB
というファイルが存在しない状態でdf -k /homeとしたとき、
使用領域は0KBという理解でいいのでしょうか?

それとも、
/home/tmp/
/home/tmp2/
というディレクトリは存在するので、
/homeのパーティーションには各ディレクトリの定義情報(名前や権限など)に
必要な容量のみ含むことになるのでしょうか?

/home/tmp2/bbbのファイルサイズとdf -k /homeの結果表示される数値が違うので、
そういった情報も保持しているのかと考えました。

補足日時:2010/02/21 20:34
    • good
    • 0

/homeが所属するパーティションの情報です。



参考URL:http://www.linux.or.jp/JM/html/GNU_fileutils/man …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!