為什麼 `du --apparent-size` 有時會相差 90% 以上?

為什麼 `du --apparent-size` 有時會相差 90% 以上?

我正在開發一個建立 Pacman 套件的軟體(基本上是帶有一些特殊元資料檔案的 tarball)。測試套件建立一些包,然後將產生的包與記錄的預期結果進行比較。

包中記錄的元資料中的欄位之一是包的安裝大小,該大小是透過du -s --apparent-size在打包之前在根目錄上運行來確定的。

所有這些在我開發的本機 Arch Linux 機器上都運作得很好。每次執行測試時,都會準確地再現這些包,包括其安裝的大小(以位元組為單位)(甚至不是千字節,位元組!)。

現在我還在 Travis 上啟用了此測試,它在基於 Ubuntu-12.04 的容器上運行(據我從 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 上重現此問題,雖然我看到它在那裡出現一兩次,但我也看不到那裡出現任何可以幫助我重現問題的模式。

也許這裡有人知道什麼可能導致這個問題?

編輯:哦,實際上我觀察到了一種模式。du每個測試用例運行一次。當第一個測試案例失敗時,本次運行中的所有測試案例都將失敗。

答案1

嗯,@derobert 提示我將此作為答案

你遇到的問題是 AUFS ....檢查與之相關的問題,檢查它不在最新核心中的原因,檢查它的“穩定性”,檢查它的“POSIX 完整性”。 – Hvisage 1 月 24 日 20:55

相關內容