Tại sao `du --apparent-size` đôi khi lại giảm hơn 90%?


8

Tôi đang làm việc trên một phần mềm xây dựng các gói Pacman (về cơ bản là tarball với một số tệp siêu dữ liệu đặc biệt). Bộ kiểm thử xây dựng một số gói, sau đó so sánh gói kết quả với kết quả mong đợi được ghi lại.

Một trong các trường trong siêu dữ liệu được ghi trong gói là kích thước đã cài đặt của gói, được xác định bằng cách chạy du -s --apparent-sizetrên thư mục gốc trước khi thực hiện.

Tất cả điều này hoạt động hoàn toàn tốt trên các hộp Arch Linux địa phương nơi tôi phát triển. Các gói, bao gồm kích thước được cài đặt của chúng tính bằng byte (thậm chí không phải kilobyte, byte!) Được sao chép chính xác mỗi khi tôi chạy thử nghiệm.

Bây giờ tôi cũng đã kích hoạt thử nghiệm này trên Travis, nơi nó chạy (theo như tôi hiểu từ các tài liệu của Travis) trên một thùng chứa dựa trên Ubuntu-12.04. Ở đó, bài kiểm tra vượt qua hầu hết thời gian. Hầu hết thời gian. Đôi khi, nó tính toán kích thước đã cài đặt giảm 80-99%.

Dưới đây là một ví dụ về một bài kiểm tra thất bại: https://travis-ci.org/holocm/holo/builds/89326780 (Bài kiểm tra ngay trước khi thành công.) Một trong những khác biệt có liên quan là

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

Điều khó hiểu về điều này là nó chỉ xảy ra một số thời gian, không có mô hình rõ ràng. Thử nghiệm sắp xếp các tệp giống như mọi khi, chạy du -s --apparent-sizetrên cây kết quả và đi đến một kết quả hoàn toàn sai. Tôi đã cố gắng tái tạo điều này trên máy ảo Ubuntu 12.04 và trong khi tôi thấy nó xuất hiện ở đó một hoặc hai lần, tôi không thể thấy bất kỳ mẫu nào xuất hiện ở đó, điều đó sẽ giúp tôi tái tạo vấn đề.

Có lẽ ai đó ở đây có một ý tưởng những gì có thể gây ra vấn đề này?

EDIT: Ồ, thực sự có một mẫu mà tôi đã quan sát. duchạy một lần cho mỗi testcase. Khi thất bại cho testcase đầu tiên, nó sẽ thất bại cho tất cả các testcase trong lần chạy này.


1
Để làm rõ, tất cả các mục trong cây hệ thống tập tin được đề cập là các tệp, liên kết tượng trưng và thư mục đơn giản. Không có tập tin thưa thớt. Không có tập tin thiết bị, FIFO hoặc bất kỳ doanh nghiệp sôi nổi nào khác.
Stefan Majewsky 04/11/2015

Các hệ thống tập tin là gì?
Đánh dấu Wagner


Một số Khả năng: (1) kích thước được báo cáo là chính xác, nhưng trong một số trường hợp, một số tệp còn tồn tại từ các hoạt động khác (2) Không chắc chắn về AUFS, nhưng trong NFS, các tệp cũ bị xóa sẽ được đổi tên thành .nfsNNNNNNNN và những tệp này có thể được tính cho kích thước không thống nhất. Làm thế nào bạn chắc chắn rằng kích thước báo cáo là không chính xác? Bạn có thể thử du trên SubDirectories và Files riêng lẻ để có thể kiểm tra vị trí chính xác của sự không nhất quán không?
Prem

1
Vấn đề bạn gặp phải là AUFS .... kiểm tra các vấn đề liên quan đến nó, kiểm tra lý do nó không có trong các hạt nhân mới nhất, kiểm tra "tính ổn định", kiểm tra xem nó có "tính hoàn chỉnh POSIX" không.
Hvisage

Câu trả lời:


1

Chà, tôi đã được nhắc nhở đặt câu hỏi này như một câu trả lời của @derobert

Vấn đề bạn gặp phải là AUFS .... kiểm tra các vấn đề liên quan đến nó, kiểm tra lý do nó không có trong các hạt nhân mới nhất, kiểm tra "tính ổn định", kiểm tra xem nó có "tính hoàn chỉnh POSIX" không. - Hvisage ngày 24 tháng 1 lúc 20:55

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.