- PR -

df と du にて容量が違う

1
投稿者投稿内容
まっく
会議室デビュー日: 2005/05/27
投稿数: 4
投稿日時: 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

この場合は何が考えらますでしょうか?
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2005-05-27 11:44
どもです。

1. df はディスクの空き容量が確認できるが、du はファイルの使用量を
確認するので、du を実行したユーザに参照権限がないファイルは
確認できない。

2. プロセスがファイルを open したままの状態でファイルを削除しても、
プロセスが close しない限りディスクの領域を解放しない。

...とか。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-05-27 11:44
前に、どっかで同じような人がおって、 root でやったら大体一致したような事言うてました。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-05-27 11:50
こんにちは。
思いついた候補としては、

1. 権限の不足
 パーミッションの具合により、参照できないディレクトリの分、容量が計算されていない。

2. プロセスが掴んでいる幽霊ファイル
 rm コマンド等で削除したため、見かけ上は消えている ( du ではカウントされない ) が、プロセスが掴んでいるため kernel上ではまだ残っている扱いになる ( df の方でカウントされる ) ファイルがある。

1 は念のためです。
2 は、確かこういうことがあったように記憶しています。うろ覚えで申し訳無いですが。
※ 再起動できるのであれば、再起動前後での容量を比べるのも手ですね
※ もしくは、/proc/〜/fd/ の下を徹底的に調べるとか

以上、ご参考まで。

追記:おっと、もしもしさんの投稿とカブりましたね。

[ メッセージ編集済み 編集者: angel 編集日時 2005-05-27 11:57 ]
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-05-27 13:15
引用:

angelさんの書き込み (2005-05-27 11:50) より:
2. プロセスが掴んでいる幽霊ファイル
 rm コマンド等で削除したため、見かけ上は消えている ( du ではカウントされない ) が、プロセスが掴んでいるため kernel上ではまだ残っている扱いになる ( df の方でカウントされる ) ファイルがある。


上で、もしもしさんが書かれていますが、ちょっと補足しますと...
unlinkシステムコールが発行されるとディレクトリエントリは直ちに
削除されますが(lsで見えなくなる)、openしているプロセスが
ある限りファイル本体は残っています。
「必ず消える一時ファイル」を作るときなどに利用されるテクニック
ですね(一時ファイルを作ったプロセスが異常終了しても確実に消える)。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-05-27 13:28
引用:
「必ず消える一時ファイル」を作るときなどに利用されるテクニック
ですね(一時ファイルを作ったプロセスが異常終了しても確実に消える)。


ぽんすさん、ありがとうございます。テクニックとして利用されることもあるのですね。

open したまま close していないファイルの、unlink ( renameも ) については、ログローテートに関連して結構悩まされたので、トラブルの種との記憶しか残っていませんでした…。
※ 新しいログファイルにログが書き込まれてないとか ( solaris2.6 の newsyslog )、消えたはずのログファイルが肥大化して残っているとか…
まっく
会議室デビュー日: 2005/05/27
投稿数: 4
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)