¿Por qué a veces `du --apparent-size` tiene un error de más del 90%?

¿Por qué a veces `du --apparent-size` tiene un error de más del 90%?

Estoy trabajando en un software que crea paquetes Pacman (que básicamente son archivos comprimidos con algunos archivos de metadatos especiales). El conjunto de pruebas crea algunos paquetes y luego compara el paquete resultante con un resultado esperado registrado.

Uno de los campos de los metadatos registrados en el paquete es el tamaño instalado del paquete, determinado ejecutándolo du -s --apparent-sizeen el directorio raíz antes de tarearlo.

Todo esto funciona perfectamente bien en mis cajas Arch Linux locales donde desarrollo. Los paquetes, incluido su tamaño instalado en bytes (¡ni siquiera en kilobytes, sino en bytes!) se reproducen exactamente cada vez que ejecuto la prueba.

Ahora también habilité esta prueba en Travis, donde se ejecuta (según tengo entendido por los documentos de Travis) en un contenedor basado en Ubuntu-12.04. Allí la prueba pasa la mayoría de las veces.Mayoríade los tiempos. A veces, calcula tamaños instalados que tienen un error de entre un 80 % y un 99 %.

A continuación se muestra un ejemplo de una prueba que falla:https://travis-ci.org/holocm/holo/builds/89326780(La pruebajusto antes de esotuvo éxito.) Una de las diferencias relevantes es

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

Lo desconcertante de esto es que sólo ocurre algunas veces, sin un patrón aparente. La prueba organiza los mismos archivos como siempre, se ejecuta du -s --apparent-sizeen el árbol resultante y llega a un resultado completamente incorrecto. Intenté reproducir esto en una máquina virtual Ubuntu 12.04 y, aunque lo vi aparecer allí una o dos veces, tampoco pude ver que surgiera ningún patrón que me ayudara a reproducir el problema.

¿Quizás alguien aquí tenga una idea de qué podría causar este problema?

EDITAR: Oh, en realidad hay un patrón que observé. duse ejecuta una vez para cada caso de prueba. Cuando falla en el primer caso de prueba, fallará en todos los casos de prueba en esta ejecución.

Respuesta1

Bueno, @derobert me pidió que pusiera esto como respuesta.

El problema que tiene es AUFS.... verifique los problemas asociados con él, verifique las razones por las que no está en los kernels más recientes, verifique su "estabilidad", verifique su "integridad POSIX". – Hvisage 24 de enero a las 20:55

información relacionada