Desejo testar as velocidades de transferência do servidor A para o servidor B, mas o servidor A tem espaço em disco limitado (<50 GB) e, como as velocidades da rede são rápidas no mesmo data center, a transferência de 50 GB pode ser muito rápida para usar como referência. O servidor B tem basicamente espaço em disco ilimitado.
Existe uma maneira de transferir um "arquivo" do servidor A (por exemplo, como um fluxo de dados muito grande para caber no servidor A, algo como 1 TB) para que eu possa testar repetidamente as velocidades de transferência da rede para o servidor B?
Para testar a largura de banda bruta da rede, você pode usar
iperf
(ouiperf3
). Você pode usar algo tão simples como:iperf -s
iperf -c <server_ip>
Para testar
rsync
a taxa de transferência, que geralmente é limitada pela velocidade de criptografia/descriptografia do SSH, você pode criar um arquivo de origem esparso e sincronizá-lo com o lado remoto. Um arquivo esparso é um arquivo que possui um tamanho nominal maior em comparação com seu tamanho real alocado. Você pode criá-lo através dotruncate
comando.Por exemplo,
truncate --size=1T src.img
criará um arquivo de 1 TB de tamanho, que realmente aloca 0 bytes (ou no máximo um bloco de 512/4K, dependendo do sistema de arquivos) - ou seja:Ao ler e transferir tal arquivo, ele será expandido para seu tamanho nominal real, a menos que seja manipulado por um utilitário de cópia com reconhecimento de arquivo esparso e/ou um programa de compactação (como )
gzip
.rsync
pode "recompactar" esses arquivos ao usar as opções-S
(--sparse
) e-z
(--compress
), mas se você deixá-los de fora, ele transferirá e gravará com prazer todo o 1 TB de dados.Nota:
-z
cancelará os zeros durante a transferência, enquanto-S
os gravará como buracos no arquivo de destino.Em vez disso, eu usaria uma ferramenta de monitoramento de largura de banda de rede, por exemplo, iperf3. Você pode executar a instância do servidor em qualquer um dos hosts e, a partir do cliente, decidir qual largura de banda de direção deseja medir.
em um dos hosts para usá-lo como o servidor executado:
Por padrão, ele escutará na porta 5201/tcp, de modo que precisa ser permitido pelo outro host.
na outra máquina para testar a largura de banda upstream sobre tcp em sua forma mais simples:
onde serveraddr é o endereço IP (ou hostname ou fqdn) da máquina executando o servidor iperf3.
Para testar a largura de banda downstream para o cliente, faça:
Ambas direcoes:
O iperf3 tem muitas opções para ajustar a quantidade de dados que deve ser transferida, qual protocolo e portas usar,
man iperf3
etc. amigo :-)O iperf3 é OpenSource, está disponível na maioria das distribuições e também possui binários para download, por exemplo, Windows e MacOS
Acho muito confiável (pelo menos no Linux) e uso o tempo todo, não só para medir throughput, mas também para ver onde temos perda de pacotes, etc.
Aqui está a página inicial: https://software.es.net/iperf/
Uma opção seria transferir do servidor B para o servidor A, e colocar o arquivo diretamente no
/dev/null
, embora eu não tenha testado isso, e prefiro o servidor A ao B porque o servidor A tem apenas chaves ssh e o servidor B permite ssh via senha .