- - PR -
df と du にて容量が違う
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-27 11:21
初めましてまっくと申します。
Solaris 8 にて df と du の返す容量が違う現象が生じてます。 % df -k ファイルシステム kbytes 使用済み 使用可能 capacity マウント先 /dev/dsk/c0t2d0s1 2055463 1890985 102815 95% /var % du -sk /var 13555 /var この場合は何が考えらますでしょうか? | ||||
|
投稿日時: 2005-05-27 11:44
どもです。
1. df はディスクの空き容量が確認できるが、du はファイルの使用量を 確認するので、du を実行したユーザに参照権限がないファイルは 確認できない。 2. プロセスがファイルを open したままの状態でファイルを削除しても、 プロセスが close しない限りディスクの領域を解放しない。 ...とか。 | ||||
|
投稿日時: 2005-05-27 11:44
前に、どっかで同じような人がおって、 root でやったら大体一致したような事言うてました。
| ||||
|
投稿日時: 2005-05-27 11:50
こんにちは。
思いついた候補としては、 1. 権限の不足 パーミッションの具合により、参照できないディレクトリの分、容量が計算されていない。 2. プロセスが掴んでいる幽霊ファイル rm コマンド等で削除したため、見かけ上は消えている ( du ではカウントされない ) が、プロセスが掴んでいるため kernel上ではまだ残っている扱いになる ( df の方でカウントされる ) ファイルがある。 1 は念のためです。 2 は、確かこういうことがあったように記憶しています。うろ覚えで申し訳無いですが。 ※ 再起動できるのであれば、再起動前後での容量を比べるのも手ですね ※ もしくは、/proc/〜/fd/ の下を徹底的に調べるとか 以上、ご参考まで。 追記:おっと、もしもしさんの投稿とカブりましたね。 [ メッセージ編集済み 編集者: angel 編集日時 2005-05-27 11:57 ] | ||||
|
投稿日時: 2005-05-27 13:15
上で、もしもしさんが書かれていますが、ちょっと補足しますと... unlinkシステムコールが発行されるとディレクトリエントリは直ちに 削除されますが(lsで見えなくなる)、openしているプロセスが ある限りファイル本体は残っています。 「必ず消える一時ファイル」を作るときなどに利用されるテクニック ですね(一時ファイルを作ったプロセスが異常終了しても確実に消える)。 | ||||
|
投稿日時: 2005-05-27 13:28
ぽんすさん、ありがとうございます。テクニックとして利用されることもあるのですね。 open したまま close していないファイルの、unlink ( renameも ) については、ログローテートに関連して結構悩まされたので、トラブルの種との記憶しか残っていませんでした…。 ※ 新しいログファイルにログが書き込まれてないとか ( solaris2.6 の newsyslog )、消えたはずのログファイルが肥大化して残っているとか… | ||||
|
投稿日時: 2005-05-30 13:42
まっくと申します。皆様返答ありがとうございます。 皆様のご指摘の通り、後日root権限にて確認したところ一致しました。 # df -k Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t2d0s1 2055463 23132 1970668 2% /var # du -sk /var 20675 /var どうもありがとうございました。 |
1