`du --apparent-size`が90%を超える場合があるのはなぜですか?


8

私はPacmanパッケージ(基本的にいくつかの特別なメタデータファイルを含むtarballです)をビルドするソフトウェアに取り組んでいます。テストスイートはいくつかのパッケージをビルドし、結果のパッケージを記録された予想結果と比較します。

パッケージに記録されたメタデータのフィールドの1つは、パッケージのインストールサイズですdu -s --apparent-size。これは、tar変換する前にルートディレクトリで実行することによって決定されます。

これはすべて、私が開発しているローカルのArch Linuxボックスで問題なく動作します。インストールされたサイズ(キロバイト、バイトでさえも!)を含むパッケージは、テストを実行するたびに正確に再現されます。

これで、Ubuntu-12.04ベースのコンテナーで(Travisのドキュメントから理解できる限り)実行されるTravisでもこのテストを有効にしました。そこでは、テストはほとんどの場合合格しています。ほとんどの場合。場合によっては、インストールされているサイズが80〜99%ずれて計算されます。

次に、失敗したテストの例を示します。https//travis-ci.org/holocm/holo/builds/89326780直前のテスト成功しました。)

@@ -37,7 +37,7 @@
             pkgdesc = my foo bar package
             url = 
             packager = Unknown Packager
-            size = 37728
+            size = 1464
             arch = any
             license = custom:none
             replaces = foo-bar<2.1

これについての不可解なことは、それが時々発生するだけで、明らかなパターンがないということです。テストは常に同じファイルを配置du -s --apparent-sizeし、結果のツリーで実行し、完全に間違った結果に到達します。私はこれをUbuntu 12.04 VMで再現しようとしましたが、そこに1回または2回表示されるのを見ましたが、問題の再現に役立つパターンがそこに出現することも確認できませんでした。

たぶんここの誰かがこの問題を引き起こす可能性のあるアイデアを持っていますか?

編集:ああ、実際に私が観察した1つのパターンがあります。duテストケースごとに1回実行されます。最初のテストケースで失敗すると、この実行のすべてのテストケースで失敗します。


1
明確にするために、問題のファイルシステムツリーのすべてのエントリは、単純な連続したファイル、シンボリックリンク、およびディレクトリです。スパースファイルはありません。デバイスファイル、FIFO、またはその他のファンキーなビジネスはありません。
Stefan Majewsky、2015年

ファイルシステムとは何ですか?
Mark Wagner

@Mark Wagner:docs.travis-ci.com/user/workers/container-based-infrastructureによると、AUFS です
Stefan Majewsky

一部の可能性:(1)報告されたサイズは正しいが、一部のケースでは他の操作から古いファイルが残っている(2)AUFSが不明であるが、NFSでは、削除された古いファイルの名前が.nfsNNNNNNNNに変更され、これらがサイズの不一致。報告されたサイズが正しくないことをどのように確認しますか?個々のサブディレクトリとファイルでduを試して、不整合の正確な場所を確認できるようにすることはできますか?
2016年

1
あなたが抱えている問題はAUFSです。それに関連する問題を確認し、最新のカーネルにない理由を確認し、「安定性」であること、「POSIX完全性」であることを確認してください。
Hvisage 2016年

回答:


1

まあ、私はこれを@derobertによって答えとして置くように促されました

あなたが抱えている問題はAUFSです。それに関連する問題を確認し、最新のカーネルにない理由を確認し、「安定性」であること、「POSIX完全性」であることを確認してください。– Hvisage 1月24日20:55

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.