Dois casos:
1.Se estiver fazendo o hdd usando o dd e copie-o pelo nfs para outro servidor:
mount -o ro,remount /
dd if=/dev/sda bs=64K | gzip -c > /share/test.img.gz
depois do gunzip eu recebo 20Gb (por ex.) arquivo, preenchido com zeros no final:
du -h /md/share/test.img
21G /md/share/test.img
2. Se eu criar uma imagem vazia usando o dd:
dd if=/dev/zero of=/md/share/test2.img bs=1024k seek=20480 count=0
Eu tenho:
du -h /md/share/test2.img
0 /md/share/test2.img
ls -lah /md/share/test2.img
-rw-r--r-- 1 root root 20G Aug 2 14:46 /md/share/test2.img
Após montar isso para guest, posso usar todos os 20G da maneira que eu quiser, e o tamanho IMG é sempre igual ao conteúdo real, sem "zeros" comendo meu espaço de array.
Pergunta: como posso reduzir o tamanho da imagem do disco para o caso 1?
Resposta: se dd suportar o atributo conv=sparse
, ele deve ser usado além de tar --sparse
. Caso contrário, atualize coreutils
e tente novamente. Ou então, instale o pacote libguestfs-tools
e execute virt-sparcify /md/share/test.img /md/share/test_sparse.img