Почему `du --apparent-size` иногда имеет погрешность более 90%?

Почему `du --apparent-size` иногда имеет погрешность более 90%?

Я работаю над программным обеспечением, которое собирает пакеты Pacman (которые по сути являются tarballs с некоторыми специальными файлами метаданных). Тестовый набор собирает некоторые пакеты, затем сравнивает полученный пакет с записанным ожидаемым результатом.

Одним из полей метаданных, записанных в пакете, является установленный размер пакета, определяемый путем запуска du -s --apparent-sizeв корневом каталоге перед его упаковкой в ​​tar.

Все это прекрасно работает на моих локальных Arch Linux-боксах, где я разрабатываю. Пакеты, включая их установленный размер в байтах (даже не в килобайтах, а в байтах!), воспроизводятся в точности каждый раз, когда я запускаю тест.

Теперь я также включил этот тест в Travis, где он запускается (насколько я понимаю из документации Travis) на контейнере на базе Ubuntu-12.04. Там тест проходит большую часть времени.Большинствоиз раз. Иногда он вычисляет установленные размеры, которые ошибаются на 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, и хотя я видел, как это появлялось там один или два раза, я не смог увидеть никаких закономерностей, которые помогли бы мне воспроизвести проблему.

Может быть, у кого-то есть идеи, что может быть причиной этой проблемы?

EDIT: О, на самом деле, я заметил один шаблон. duзапускается один раз для каждого тестового случая. Если он не сработает для первого тестового случая, он не сработает для всех тестовых случаев в этом запуске.

решение1

Ну, разместить это в качестве ответа меня побудил @derobert

Проблема у вас в AUFS... проверьте проблемы, связанные с ней, проверьте причины, по которым ее нет в последних ядрах, проверьте ее «стабильность», проверьте ее «полноту POSIX». – Hvisage 24 янв. в 20:55

Связанный контент