özet
Linux'u hem yerel disk / dosya sisteminden okuyacak hem de ağ üzerinden veri paylaşmıyorken okumak yerine, aynı zamanda bir ağ paylaşımına yazacak ve ardından yerel disk açıkken bu verileri ağ üzerinden gönderecek şekilde nasıl yapılandırabilirsiniz Boşta?
Sadece bir işlemi, sonra diğerini dönüşümlü olarak yapmak yerine, aynı anda okumak ve yazmak çok daha hızlıdır.
ayrıntılar
Bir Linux makinesindeki yerel disklerden büyük miktarda veriyi NAS cihazına taşıyorum.
rsync
Temelde /srv/data
içine kopyalamak için kullanıyorum /mnt/nas
, bu bir CIFS montaj.
İyi başladı, 100MB / sn'de okuma ve NAS'a 100MB / sn'de (gigabit ağının sınırı) yazma, hem okuma hem de yazma aynı anda gerçekleşiyor.
Ancak şimdi, birkaç saat sonra, yerel diskten okuduğunu, daha sonra NAS'a yazarken okumayı durdurduğunu görüyorum, daha sonra NAS'a yazmak için daha fazla veri olmadığında, diskten okumaya devam ediyor tekrar. Disk okunurken ağ boşta ve ağ kullanımdayken disk boşta.
Söylemeye gerek yok, 200MB okumak ve 200MB yazmak aynı anda 200MB okumak ve yazmaktan çok daha uzun sürer.
Çekirdeği, okuma ve yazma arasında geçiş yapmak yerine bir seferde yalnızca bir işlem yapmak yerine önceki okuma ve yazma davranışına yapışacak şekilde nasıl yapılandırabilirim?
Bazı gözlemler: Yerel disk 100 + MB / sn'de okuduğunda, her şey paralel olarak iyi görünüyor, ancak disk yavaşladığında (bir nedenden dolayı şimdi sadece 20 MB / sn'de gidiyor gibi görünüyor) bu okuma / yazma anahtarlama gerçekleşiyor gibi görünüyor.
Ayrıca, sync
her iki saniyede bir manuel olarak çalıştırabilir , ancak okumalara paralel olarak gerçekleşmesini sağlamak için (açıkça düşük hızlarda olsa da), ancak her beş saniyede bir çalışacak şekilde sync
bir while
döngü koymak doğru çözüm gibi görünmüyor ...
Çekirdek yaklaşık 1GB veri önbelleğe alıyor ve daha sonra mümkün olduğunca hızlı bir şekilde ağ üzerinden yazıyor gibi görünüyor - bu iyi - sadece veri gönderilirken yavaş diskin okunmayı neden durdurması gerektiğini anlamıyorum. ağ.