Por que o 'du --apparent-size' às vezes é desligado em mais de 90%?

7

Estou trabalhando em um software que cria pacotes Pacman (que basicamente são pacotes com alguns arquivos de metadados especiais). O conjunto de testes constrói alguns pacotes e compara o pacote resultante com um resultado esperado registrado.

Um dos campos nos metadados registrados no pacote é o tamanho instalado do pacote, determinado pela execução de du -s --apparent-size no diretório raiz antes de tará-lo.

Tudo isso funciona perfeitamente nas minhas caixas locais do Arch Linux onde desenvolvo. Os pacotes, incluindo seu tamanho instalado em bytes (nem mesmo kilobytes, bytes!), São reproduzidos exatamente toda vez que eu executo o teste.

Agora eu também habilitei este teste no Travis, onde ele roda (até onde eu entendo dos documentos do Travis) em um container baseado no Ubuntu-12.04. Lá, o teste passa na maioria das vezes. Mais das vezes. Às vezes, calcula os tamanhos instalados que estão desativados em 80 a 99%.

Aqui está um exemplo de um teste que falha: link (O teste just before that teve sucesso.) Um dos diffs relevantes é

@@ -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
A coisa intrigante sobre isso é que isso acontece apenas algumas vezes, sem nenhum padrão aparente. O teste organiza os mesmos arquivos como sempre, executa du -s --apparent-size na árvore resultante e chega a um resultado completamente errado. Eu tentei reproduzir isso em uma VM Ubuntu 12.04 e, embora eu tenha visto aparecer lá uma ou duas vezes, não pude ver nenhum padrão que pudesse me ajudar a reproduzir o problema.

Talvez alguém tenha uma ideia do que poderia causar esse problema?

EDIT: Oh, há um padrão que eu observei, na verdade. du é executado uma vez para cada testcase. Quando falhar para o primeiro testcase, falhará para todos os testcassos nesta execução.

    
por Stefan Majewsky 04.11.2015 / 23:56

1 resposta

2

Bem, fui solicitado a colocar isso como uma resposta por @derobert

The problem you have is AUFS.... check the problems associated with it, check the reasons it's not in the latest kernels, check it's "stability", check it's "POSIX completeness". – Hvisage Jan 24 at 20:55

    
por 23.03.2016 / 21:36