rsync da imagem qemu esparsa aumenta o tamanho do disco

rsync da imagem qemu esparsa aumenta o tamanho do disco

Eu tenho uma imagem qemu bruta esparsa que desejo transferir para outro servidor. qemu-img infome dá:

image: sparse.img
file format: raw
virtual size: 50G
disk size: 16G

Eu transfiro com:

rsync -azhP --sparse origin:/path/to/img/sparse.img .

Agora, no servidor de destino eu tenho:

image: sparse.img
file format: raw
virtual size: 50G
disk size: 40G

No entanto, depois de executar virt-sparsifynovamente na imagem copiada, recebo o seguinte:

image: sparse.img
file format: raw
virtual size: 50G
disk size: 16G

Ambos os servidores estão executando o CentOS 7.2 em um sistema de arquivos XFS. Então o que aconteceu?

Atualizar:

Depois de mais pesquisas, encontrei vários posts indicando que o rsync não lida bem com arquivos esparsos e que é melhor usar uma ferramenta diferente,feito uma estrela, para transferir arquivos esparsos.

Você pode acompanhar a tartransferência com rsync --inplace, para garantir que o arquivo foi transferido sem erros, conforme explicadoaqui.

OutrosoluçãoO que foi proposto foi criar um arquivo esparso vazio do mesmo tamanho no destino e depois usá-lo rsync --inplacepara transferir os dados reais.

Não escrevi isso como uma solução, porque realmente não explica por que rsync --sparseestá se comportando dessa maneira.

Responder1

Aposto que isso se deve às disparidades de FS entre a origem e o destino.

Deixe-me elaborar com um exemplo. Arquivos esparsos são arquivos cujos blocos vazios (ou seja, cheios de 0) não são alocados no disco. Quanto menor o tamanho do bloco no FS, maior a probabilidade de tal bloco ser encontrado. Portanto, seu problema pode ser devido ao tamanho do bloco ser maior no destino do que na origem.

Pode haver outros parâmetros XFS que eu não conheço.

Veja tambémesta pergunta no ServerFault

Responder2

A solução que descobri que funciona melhor para mim é primeiro executar

virt-sparsify imagename

Leva algum tempo. Isso produz uma imagem de tamanho menor que relata o mesmo tamanho em ls -he . Mas quando você monta a imagem ela informa o tamanho correto (e cresce conforme o esperado).du -hdu -h --apparent-size

Em seguida, sincronize novamente essa imagem.

informação relacionada