Linux için HDD’den (SSD) dosyalara tcp soketine transfer etmek için “sıfır kopya” tarzını kullanabilen küçük ve basit bir dosya aktarım aracı var mı?
İki bilgisayar arasında Ethernet, 1 Gbit veya 10 Gbit olabilen büyük miktarda sıkıştırılamayan benzersiz veri (onlarca yüz GB) göndermek istiyorum. Şifrelemeye veya sıkıştırmaya, veri tekilleştirme / delta aktarmalarına ve araçtan fazladan herhangi bir sağlama toplamasına ihtiyacım yok (yani, hayır scp
ve varsayılan değil rsync
); sadece lineer disk okur yüksek bant genişliği ve yüksek ağ kullanımı.
Syscalls: Ve ayrıca ben aracı hafıza kopya sürü yapmamaya istiyorum ama modern Linux çekirdeğinin "Sıfır kopyalı" altyapısını kullanmak splice
, vmsplice
, sendfile
bazı okumak için çekirdek talimat, çoğu veri prosedürleri kopyalama atlayabilirsiniz vb Sıfır kopyalı aracıyla HDD / SSD / RAID’den (DMA, pagecache’e okunur) veri paketlerine yeniden paketler ve ağ kartını doğrudan pagecache’den DMA yapmaya programlamak için. Bu "sıfır kopya" yaklaşımı transferden sistem yükünü azaltacaktır, çünkü CPU dosya verilerinin her baytını parçalamak zorunda kalmayacaktır. Transferin bir tarafı yavaş işlemciye sahip olabilir ...