NFS: ele tem um suporte parcial para arquivos esparsos. Basicamente, ele suporta a criação de um arquivo esparso mas, ao ler, o arquivo é expandido para incluir zeros. Isso significa que, enquanto você pode criar um arquivo esparso via NFS, ao ler de volta o mesmo arquivo, os dados da rede de trânsito incluirão zeros encontrados no arquivo original. Um teste simples mostra esse comportamento:
cd /mnt/nfs
truncate test.img -s 1G
ls -lh test.img
-rw-r--r--. 1 root root 1.0G Oct 26 11:29 test.img
du -hs test.img
0 test.img
Como você pode ver, o arquivo test.img tem um tamanho de disco de 0 bytes. No entanto, lendo de volta usando dd if=test.img of=/dev/null bs=1M iflag=direct
mostra
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 10.2269 s, 105 MB/s
É claro que ao transferir o arquivo esparso, ele é expandido para incluir todos os zeros.
O NFSv4.2 expandirá incluindo o tratamento especial para transferência de rede de arquivos esparsos. Em outras palavras, com o NFSv4.2, o dd
acima será concluído quase instantaneamente.
SMB: ele tem o mesmo comportamento do NFS , pelo menos nos meus ambientes de teste, usando um servidor Samba v3.6.x com CIFS v1 e um cliente Linux usando o mount.cifs. Talvez no Windows se comporte de maneira diferente ...