Sommario
Come è possibile configurare Linux per leggere sia da un disco / file system locale che da scrivere su una condivisione di rete contemporaneamente, invece di leggere mentre nessun dato passa sulla rete, quindi inviare quei dati sulla rete mentre il disco locale è inattivo?
È molto più veloce leggere e scrivere contemporaneamente invece di eseguire solo un'operazione e poi l'altra in modo alternato.
Dettagli
Sto trasferendo una grande quantità di dati dai dischi locali su una macchina Linux a un dispositivo NAS.
Sto usando rsync
per copiare basicamente /srv/data
in /mnt/nas
, che è il monte a CIFS.
È iniziato bene, leggendo a 100 MB / sec e scrivendo sul NAS a 100 MB / sec (limite della rete gigabit), con la lettura e la scrittura simultanee.
Tuttavia ora, poche ore dopo, sto scoprendo che sta leggendo dal disco locale, quindi interrompendo la lettura mentre scrive sul NAS, quindi quando non ci sono più dati da scrivere sul NAS, riprende la lettura dal disco ancora. La rete è inattiva durante la lettura del disco e il disco è inattivo mentre la rete è in uso.
Inutile dire che leggere 200 MB e poi scrivere 200 MB richiede molto più tempo che leggere e scrivere quei 200 MB contemporaneamente.
Come posso configurare il kernel in modo tale che si attacchi al comportamento precedente di lettura e scrittura contemporaneamente, piuttosto che alternare tra lettura e scrittura, eseguendo solo un'operazione alla volta?
Alcune osservazioni: quando il disco locale legge a 100 + MB / sec tutto sembra accadere in parallelo bene, ma una volta che il disco rallenta (sembra andare a soli 20 MB / sec ora per qualche motivo) è allora che questo legge / scrive il passaggio sembra avvenire.
Posso anche eseguire sync
manualmente ogni pochi secondi per far sì che le scritture avvengano in parallelo con le letture (anche se ovviamente a velocità ridotta) tuttavia inserendo sync
un while
ciclo in modo che funzioni ogni cinque secondi non sembra la soluzione giusta ...
Il kernel sembra memorizzare nella cache circa 1 GB di dati e poi scriverli sulla rete il più velocemente possibile - il che va bene - semplicemente non capisco perché il disco lento debba smettere di essere letto mentre i dati vengono inviati via Rete.