Estou tentando copiar uma grande quantidade (cerca de 50 GB) de dados em minha rede de uma máquina virtual hospedada no Hyper-V executando o Ubuntu 11.04 (Natty Narwhal) para outro host Ubuntu (não virtual) que pretendo use para testar upgrades em um de nossos aplicativos da web. O problema que estou tendo é com a máquina virtual, a qual me referirei no que segue como "source.host". Esta máquina está executando o Ubuntu Server de 64 bits com o kernel 2.6.38-8-server e os componentes do Microsoft Linux Integration para módulos do kernel Hyper-V (hv_utils, hv_timesource, hv_netvsc, hv_blkvsc, hv_storvsc e hv_vmbus) carregados. Ele usa um "adaptador de rede sintético" Hyper-V para sua interface de rede.
Para fazer a cópia, eu faço logon na máquina com os dados e executo os seguintes comandos (Chame a máquina remota "destination.host".):
$ cd /path/to/data
$ tar -cvf - datafolder/ | ssh [email protected] "cat > ~/data.tar"
Isso é executado por um tempo e, em seguida, pára de repente após a transferência em algum lugar de 2-6 GB. O terminal na máquina source.host exibe um erro Write failed: broken pipe
. A parte ímpar é esta: depois que isso ocorre, a máquina "source.host" não consegue mais falar com o resto da rede. Não consigo pingar nenhum outro host na rede a partir da máquina "source.host" e não consigo executar ping na máquina "source.host" de nenhum outro host na rede. Eu sou igualmente incapaz de acessar qualquer um dos serviços da Web hospedados em "source.host".
A execução de ifconfig
em "source.host" mostra o adaptador de rede funcionando normalmente com o endereço IP correto e tudo mais. Eu tentei reiniciar o serviço de rede com
$ /etc/init.d/networking restart
mas o problema não desaparece. Reiniciar a máquina torna-a capaz de falar com a rede novamente - ela pode fazer ping e ser pingada por outros hosts, e os serviços da Web também são acessíveis e utilizáveis normalmente - mas a tentativa de copiar novamente resulta na mesma falha, exigindo outra reinicialização.
Como experiência, tentei substituir o tar
- ssh
pipeline acima por um scp
:
$ scp -r datafolder/ [email protected]:~
mas sem sucesso
Pensando que o problema pode ter a ver com o preenchimento dos buffers de envio de pacotes do kernel, tentei aumentar o tamanho do buffer para 12 MB (acima do padrão de 128 KB) com
# echo 12582911 > /proc/sys/net/core/wmem_max
mas isso também não teve efeito.
Eu estou supondo neste momento que pode ser um problema com o driver de rede sintética da Microsoft, mas eu realmente não sei. Alguém tem alguma sugestão?
Muito obrigado antecipadamente!