Rsync por SSHFS trava

3

Eu tenho sshfs setup para se conectar a outro sistema (Rackspace Cloud Sites) que eu não tenho ssh access (mas por alguma razão eu posso usar sshfs? Go figure). Estou tentando rsync arquivos da sshfs mount para meu disco local. São vários milhares de arquivos pequenos (1k-200k). Às vezes, o rsync apenas irá pausar e travar por um tempo em arquivos que são muito pequenos. Ele fará uma pausa, digamos um arquivo de texto de 10k por 5 minutos, e então continuará.

Existe algum lugar que eu possa procurar na minha máquina para determinar por que o rsync estaria pendurado assim? Ou há uma boa chance de que seja simplesmente um problema do outro lado do qual não posso fazer nada?

Minhas opções de rsync são simplesmente -avrP .

    
por Jake Wilson 10.01.2012 / 17:06

1 resposta

4

Tudo bem, vou dar um golpe nisso, porque acho que minha ideia faz sentido.

Você está lidando com vários caches neste caso, e é isso que está enganando você, eu acho.

A primeira coisa que o rsync faz é determinar quais arquivos ele precisa transferir. Geralmente, isso é feito gerando uma instância de rsync no lado remoto, lendo os metadados de cada um dos arquivos no diretório na origem, enquanto, ao mesmo tempo, lê os metadados dos arquivos locais e, em seguida, os dois conjuntos de metadados são comparados . Qualquer coisa mais nova (ou diferente, dependendo das opções de rsync) é transferida.

Você não tem um "lado remoto", de acordo com o rsync. Você está trabalhando "localmente", por isso iterará sobre os dois diretórios, a origem e o destino.

Isso é muito intensivo em disco, particularmente com uma tonelada de arquivos pequenos - quanto mais arquivos, mais operações de disco são discretas. Isso causa muita movimentação de disco, além de preencher o cache com os metadados desses arquivos.

Observe que isso acontece todo o caminho até a pilha. Sua máquina local armazena em cache os metadados do sistema de arquivos FUSE que você montou sobre o ssh E o diretório local. A máquina remota armazena em cache os metadados da montagem do disco local. E o host da VM em que sua máquina remota está sendo executada é quase certamente supercomprometido e oferece memória ampliada.

Eu suspeito que é muito provável que você esteja cruzando os limites quando congela, e tudo tem que acompanhar e decodificar ou trocar.

Eu ficaria muito interessado em ver se isso acontece quando você faz o rsync por ssh sem a montagem do disco.

    
por 10.01.2012 / 17:39