Poucos dias atrás, notei algo bastante estranho (pelo menos para mim). Corri o rsync copiando os mesmos dados e os excluindo posteriormente para a montagem do NFS, chamada /nfs_mount/TEST. Este /nfs_mount/TESTé hospedado / exportado de nfs_server-eth1. O MTU em ambas as interfaces de rede é 9000, o comutador entre também suporta quadros jumbo. Se eu rsync -av dir /nfs_mount/TEST/obtiver velocidade de transferência de rede X MBps. Se eu rsync -av dir nfs_server-eth1:/nfs_mount/TEST/conseguir velocidade de transferência de rede, pelo menos, 2X MBps. Minhas opções de montagem do NFS são nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp.
Conclusão: ambas as transferências passam pela mesma sub-rede da rede, mesmos fios, mesmas interfaces, lêem os mesmos dados, gravam no mesmo diretório etc. A única diferença é através do NFSv3 e a outra no rsync.
O cliente é o Ubuntu 10.04, o servidor Ubuntu 9.10.
Como é que o rsync é muito mais rápido? Como fazer o NFS corresponder a essa velocidade?
obrigado
Editar: observe que eu uso o rsync para gravar no compartilhamento NFS ou no SSH no servidor NFS e gravar localmente lá. Nas duas vezes rsync -av, iniciando com o diretório de destino claro. Amanhã vou tentar com cópia simples.
Edit2 (informações adicionais): o tamanho do arquivo varia de 1 KB a 15 MB. Os arquivos já estão compactados, tentei comprimir ainda mais, sem sucesso. Eu criei um tar.gzarquivo disso dir. Aqui está o padrão:
rsync -av dir /nfs_mount/TEST/= transferência mais lenta;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/= rsync mais rápido com jumbo-frames habilitado; sem jumbo-frames é um pouco mais lento, mas ainda significativamente mais rápido que o diretamente para o NFS;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/= aproximadamente o mesmo que seu equivalente não-tar.gz;
Testes com cpe scp:
cp -r dir /nfs_mount/TEST/= ligeiramente mais rápido que,rsync -av dir /nfs_mount/TEST/mas ainda significativamente mais lento quersync -av dir nfs_server-eth1:/nfs_mount/TEST/.scp -r dir /nfs_mount/TEST/= mais rápido no geral, supera levementersync -av dir nfs_server-eth1:/nfs_mount/TEST/;scp -r dir.tar.gz /nfs_mount/TEST/= aproximadamente o mesmo que seu equivalente não-tar.gz;
Conclusão, com base nestes resultados: Para este teste, não há diferença significativa se estiver usando arquivo grande tar.gz ou muitos pequenos. Os quadros Jumbo ligados ou desligados também quase não fazem diferença. cpe scpsão mais rápidos que seus respectivos rsync -avequivalentes. Gravar diretamente no compartilhamento NFS exportado é significativamente mais lento (pelo menos 2 vezes) do que gravar no mesmo diretório pelo SSH, independentemente do método usado.
As diferenças entre cpe rsyncnão são relevantes neste caso. Eu decidi tentar cpe scpapenas para ver se eles mostram o mesmo padrão e mostram - 2X diferença.
Enquanto uso rsyncou cpnos dois casos, não consigo entender o que impede o NFS de atingir a velocidade de transferência dos mesmos comandos pelo SSH.
Por que a gravação no compartilhamento NFS é 2X mais lenta que a gravação no mesmo local através do SSH?
Edit3 (NFS servidor / etc / exportações opções): rw,no_root_squash,no_subtree_check,sync. Do cliente / proc / mounts mostra: nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp.
Obrigado a todos!