Mengapa `du --apparent-size` terkadang dimatikan lebih dari 90%?

8

Saya sedang mengerjakan perangkat lunak yang membangun paket Pacman (yang pada dasarnya adalah tarball dengan beberapa file metadata khusus). Test suite membangun beberapa paket, lalu membandingkan paket yang dihasilkan dengan hasil yang diharapkan.

Salah satu bidang dalam metadata yang dicatat dalam paket adalah ukuran paket yang diinstal, ditentukan dengan menjalankan du -s --apparent-sizepada direktori root sebelum tar'ing itu.

Semua ini berfungsi dengan baik pada kotak Arch Linux lokal tempat saya mengembangkan. Paket-paket, termasuk ukurannya yang terinstal dalam byte (bahkan tidak kilobyte, byte!) Direproduksi tepat setiap kali saya menjalankan tes.

Sekarang saya juga mengaktifkan tes ini pada Travis, di mana ia berjalan (sejauh yang saya mengerti dari dokumen Travis) pada wadah berbasis Ubuntu-12,04. Di sana, tes melewati sebagian besar waktu. Sebagian besar waktu. Terkadang, ia menghitung ukuran yang dipasang yang tidak aktif sebesar 80-99%.

Berikut ini adalah contoh tes yang gagal: https://travis-ci.org/holocm/holo/builds/89326780 (Tes sebelum itu berhasil.) Salah satu perbedaan yang relevan adalah

@@ -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

Hal yang membingungkan tentang ini adalah bahwa hal itu hanya terjadi pada suatu waktu, tanpa pola yang jelas. Tes mengatur file yang sama seperti biasanya, berjalan du -s --apparent-sizedi pohon yang dihasilkan, dan tiba di hasil yang sepenuhnya salah. Saya telah mencoba mereproduksi ini di Ubuntu 12,04 VM, dan sementara saya telah melihatnya muncul di sana sekali atau dua kali, saya tidak bisa melihat ada pola yang muncul di sana yang akan membantu saya mereproduksi masalah.

Mungkin seseorang di sini punya ide apa yang bisa menyebabkan masalah ini?

EDIT: Oh, sebenarnya ada satu pola yang saya amati. duberjalan satu kali untuk setiap testcase. Ketika gagal untuk testcase pertama, itu akan gagal untuk semua testcases dalam menjalankan ini.

Stefan Majewsky
sumber
1
Untuk memperjelas, semua entri dalam hierarki sistem file yang dimaksud adalah file yang berdekatan, symlink, dan direktori. Tidak ada file jarang. Tidak ada file perangkat, FIFO, atau bisnis funky lainnya.
Stefan Majewsky
Apa sajakah sistem file?
Mark Wagner
@ Mark Wagner: Ini AUFS, menurut docs.travis-ci.com/user/workers/container-based-infrastructure
Stefan Majewsky
Beberapa Kemungkinan: (1) ukuran yang dilaporkan sudah benar, tetapi dalam beberapa kasus masih ada beberapa file yang basi dari operasi lain (2) Tidak yakin dengan AUFS, tetapi di NFS, file yang sudah dihapus akan dinamai .nfsNNNNNNNNNN dan ini mungkin diperhitungkan untuk ukuran tidak konsisten. Bagaimana Anda yakin bahwa ukuran yang dilaporkan salah? Bisakah Anda mencoba du pada SubDirektori dan File individual, sehingga lokasi yang tepat dari ketidakkonsistenan dapat diperiksa?
Prem
1
Masalah yang Anda miliki adalah AUFS .... periksa masalah yang terkait dengannya, periksa alasannya bukan pada kernel terbaru, periksa "stabilitas", periksa "kelengkapan POSIX".
Hvisage

Jawaban:

1

Yah, saya telah diminta untuk menempatkan ini sebagai jawaban oleh @derobert

Masalah yang Anda miliki adalah AUFS .... periksa masalah yang terkait dengannya, periksa alasannya bukan pada kernel terbaru, periksa "stabilitas", periksa "kelengkapan POSIX". - Hvisage 24 Jan pukul 20:55

Keriangan
sumber