é suportada através de SEEK_SET
, o suporte para fallocate
será adicionado na versão 4.2 (atualmente em desenvolvimento) [ link
Eu criei um arquivo esparso com
truncate -s 4T image.img
em um sistema de arquivos ext4 que eu montei sobre o NFS. O teste a seguir mostra que o sistema tem problemas com o reconhecimento de arquivos esparsos: ambos
cp --sparse=always /mnt/data_extension/a.img /tmp/a.img # where a.img is created the same way image.img is
rsync --sparse /mnt/data_extension/a.img /tmp/a.img
demore muito e eu nunca deixo terminar, levando mais de um segundo para o comando mostrar que o arquivo esparso não é reconhecido como tal e os furos de cópia / movimentação consomem E / S, o que não deveria ser o caso.
tar --sparse -c -v -f /tmp/a.tar /mnt/data_extension/a.img
retorna imediatamente e produz um tar que pode ser descompactado se a.img estiver vazio, se eu escrever algo dentro (por exemplo, criar um sistema de arquivos bogus btrfs com sudo mkfs.btrfs /mnt/data_extension/a.img
), ele parará de funcionar, ou seja, demora para sempre como os comandos acima .
Tudo funciona bem no sistema de arquivos ext4 de destino local, ou seja, copiar e mover a imagem demo a.img
acontece em 1 segundo ou muito menos.
Quando eu aplico os comandos acima à imagem real image.img
e watch du -h /local/image.img
, o tamanho de 0 nunca é atualizado, mas depois do primeiro byte ter sido escrito.
informações de montagem para /mnt/data_extension
:
$ mount | grep /mnt/data_extension
192.168.178.76:/volume1/data_extension on /mnt/data_extension type nfs (rw,addr=192.168.178.76)
Como posso mover / copiar image.img
da montagem NFS para um sistema de arquivos local sem a necessidade de ler 4 TB?!
EDIT: especificando sparse-version=1.0
faz tar
funcionar no cliente, mas não no NFS (e cifs
que eu tentei entretanto com o mesmo comportamento). Isso permite pelo menos tar o arquivo esparso no servidor e transferir o resultado com o custo de uma ação untar desnecessária no cliente.
é suportada através de SEEK_SET
, o suporte para fallocate
será adicionado na versão 4.2 (atualmente em desenvolvimento) [ link