Esta pergunta foi feita anteriormente no estouro de pilha, mas as pessoas boas recomendaram que eu tentasse a comunidade por aqui.
Estou pesquisando sobre arquivos esparsos em relação a vários sistemas de arquivos e estou tentando encontrar algo concreto que indique que os arquivos esparsos são suportados pelo Network File Systems (NFS) ou pelo Server Message Block (SMB).
Entendo que o SMB é amplamente usado no Windows e que, de acordo com esta entrada , um servidor SMB pode oferecer suporte a arquivos esparsos, mesmo que o sistema de arquivos subjacente não. No entanto, se eu estiver certo, o sistema de arquivos que não suporta arquivos esparsos preencheria os 'buracos' com zeros e isso pode levar a um problema de desempenho.
Com relação ao NFS, não consegui descobrir nada sobre o uso do NFS que suporta arquivos esparsos.
Portanto, minhas perguntas são,
Os arquivos esparsos são suportados no NFS e SMB?
fonte
dd
lê bloco por bloco e, se o sistema de arquivos subjacente suporta arquivos esparsos ou não, os buracos são transformados em zeros pelo sistema operacional. Experimente no ext4 e você verá os mesmos números.dd
comando em um arquivo esparso local dará resultados muito mais rápidos. Veja aqui um exemplo :,root@hubble:~# truncate -s 1G test.img root@hubble:~# dd if=test.img of=/dev/null bs=1M iflag=direct 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.10478 s, 10.2 GB/s
Como você pode ver, ler um arquivo esparso locais dou O norte / velocidade de 10 GB / sdu -s
vsls -l
, mas você está certo que não ajuda na transmissão pela rede; mas em ambos os casos (comostrace
confirmará)dd
está lendo o arquivo inteiro, incluindo 'buracos' como zeros, a diferença é apenas onde os 'zeros' se originam (servidor ou cliente). No entanto, observe (conforme minha resposta) que o NFS 4.2 oferece suporte total a arquivos esparsos.NFS
Sim, o NFS 4.2 suporta totalmente arquivos esparsos (consulte este documento canônico e esta apresentação ).
Antes do NFS 4.2, o modelo de cliente / servidor do NFS suportava arquivos esparsos no sentido de que a API suportava todas as operações de arquivo POSIX. Isso significava que a gravação de arquivos esparsos em um servidor que suportava arquivos esparsos no sistema de arquivos de backup resultou na criação de um arquivo esparso (em vez de armazenar muitos zeros). Mas a leitura do arquivo resultaria na transmissão de muitos zeros para o elemento esparso. Ou seja, a resposta é 'parcialmente'.
O NFS 4.2 adiciona a capacidade do cliente de 'ver' falhas nos arquivos e, portanto, o servidor não precisa transmitir todos esses zeros. A partir do ID:
Apesar de a especificação suportar arquivos esparsos, seria possível para um implementador lento evitar a implementação de suporte para arquivos esparsos no cliente ou no servidor.
SMB
Eu sei menos sobre SMB, mas acredito que ele também suporta arquivos esparsos, se o bit de capacidade FS relevante estiver definido. Veja aqui para mais informações.
fonte