Sumário
Como você pode configurar o Linux para ler de um disco / sistema de arquivos local e gravar em um compartilhamento de rede ao mesmo tempo, em vez de ler enquanto nenhum dado estiver passando pela rede e enviá-lo pela rede enquanto o disco local estiver ocioso?
É muito mais rápido ler e escrever ao mesmo tempo, em vez de executar apenas uma operação e depois a outra de maneira alternada.
Detalhes
Estou movendo uma grande quantidade de dados de discos locais em uma máquina Linux para um dispositivo NAS.
Estou usando rsync
para copiar basicamente /srv/data
para /mnt/nas
, que é uma montagem CIFS.
Começou bem, lendo a 100 MB / s e gravando no NAS a 100 MB / s (limite de rede de gigabit), com a leitura e a gravação acontecendo simultaneamente.
No entanto, agora, algumas horas depois, estou descobrindo que está lendo no disco local, interrompendo a leitura enquanto grava no NAS e, quando não há mais dados para gravar no NAS, ele retoma a leitura do disco novamente. A rede está ociosa enquanto o disco está sendo lido e o disco está ocioso enquanto a rede está em uso.
Escusado será dizer que ler 200MB e depois escrever 200MB leva muito mais tempo do que ler e escrever esses 200MB ao mesmo tempo.
Como posso configurar o kernel de forma a manter o comportamento anterior de ler e escrever ao mesmo tempo, em vez de alternar entre ler e escrever, executando apenas uma operação por vez?
Algumas observações: quando o disco local lê a 100 + MB / s, tudo parece acontecer paralelamente, mas depois que o disco fica mais lento (parece que agora está com apenas 20 MB / s por algum motivo), é quando ocorre a leitura / gravação. mudança parece acontecer.
Também posso executar sync
manualmente a cada poucos segundos para que as gravações ocorram em paralelo com as leituras (embora obviamente a velocidades reduzidas), colocando sync
um while
loop para que seja executado a cada cinco segundos não parece a solução certa ...
O kernel parece armazenar em cache cerca de 1 GB de dados e depois gravá-los na rede o mais rápido possível - o que é bom - só não entendo por que o disco lento precisa parar de ser lido enquanto os dados são enviados pelo rede.