Ini adalah situasi yang sering saya alami:
- Saya memiliki server sumber dengan 320GB hard-drive di dalamnya, dan 16GB ram ( spesifikasi tepat tersedia di sini , tetapi karena ini adalah masalah yang sering saya temui di mesin lain, saya lebih suka jawaban untuk bekerja pada setiap Mesin Linux "masuk akal")
- Saya memiliki server cadangan dengan beberapa terabyte ruang hard-drive ( spesifikasi spesifik di sini , lihat penafian di atas)
Saya ingin mentransfer 320GB data dari server sumber ke server target (khususnya, data dari /dev/sda
).
- Kedua komputer secara fisik bersebelahan, jadi saya bisa menjalankan kabel di antara mereka.
- Saya menggunakan LAN, dan saya menggunakan router baru-ish , yang berarti kecepatan jaringan saya "idealnya" adalah 1000Mbit, bukan?
- Keamanan bukan masalah. Saya di jaringan lokal, dan saya percaya semua mesin di jaringan, termasuk router.
- (opsional) Saya tidak perlu memerlukan checksum yang ditandatangani dari data, tetapi pemeriksaan kesalahan dasar (seperti paket yang jatuh, atau drive menjadi tidak dapat dibaca) harus dideteksi daripada menghilang begitu saja ke dalam output.
Saya mencari pertanyaan ini secara online, dan telah menguji beberapa perintah. Salah satu yang paling sering muncul adalah ini:
ssh [email protected] 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
Perintah ini telah terbukti terlalu lambat (itu berjalan selama satu jam, hanya mendapat sekitar 80GB melalui data). Butuh sekitar 1 menit dan 22 detik untuk paket tes 1GB, dan akhirnya menjadi dua kali lebih cepat ketika tidak dikompresi. Hasil mungkin juga condong oleh fakta bahwa file yang ditransfer kurang dari jumlah RAM pada sistem sumber.
Selain itu (dan ini diuji pada potongan uji 1GB), saya mendapatkan masalah jika saya menggunakan gzip
perintah dan dd
; file yang dihasilkan memiliki checksum yang berbeda ketika diekstraksi pada target, daripada jika disalurkan secara langsung. Saya masih mencoba mencari tahu mengapa ini terjadi.
sumber
/dev/sda
sebagai gambar atau hanya file. Mengapa rsync tidak ada pilihan? Sudah/dev/sda
terpasang saat Andadd
mengedit?Jawaban:
Karena server secara fisik bersebelahan, dan Anda menyebutkan dalam komentar Anda memiliki akses fisik kepada mereka, cara tercepat adalah dengan mengeluarkan hard drive dari komputer pertama, letakkan di tempat kedua, dan transfer file melalui koneksi SATA.
sumber
dd
(atau salinan pohon sistem file).netcat
sangat bagus untuk situasi seperti ini di mana keamanan tidak menjadi masalah:Catatan, jika Anda menggunakan
dd
dari GNU coreutils, Anda dapat mengirimSIGUSR1
ke proses dan itu akan memancarkan kemajuan ke stderr. Untuk BSDdd
, gunakanSIGINFO
.pv bahkan lebih membantu dalam melaporkan kemajuan selama salinan:
sumber
dd
bahkan diperlukan, atau bisakahpv
/nc
memperlakukan dengan/dev/sda
baik sendiri? (Saya perhatikan beberapa perintah "muntah" ketika mencoba membaca file khusus seperti itu, atau file dengan0x00
byte)bash
satu dapat menggunakan> /dev/tcp/
IP/
pelabuhan dan< /dev/tcp/
IP/
pelabuhan pengalihan bukan pipa ke dan dari netcat masing-masing.tar cv sourcedir | pv | nc dest_host_or_ip 9999
dancd destdir ; nc -l 9999 | pv | tar xv
. Banyak variasi yang mungkin, misalnya Anda ingin tetap.tar.gz
pada sisi tujuan daripada salinan. Jika Anda menyalin direktori ke direktori, untuk keamanan ekstra Anda dapat melakukan rsync sesudahnya, misalnya dari destrsync --inplace -avP [email protected]:/path/to/source/. /path/to/destination/.
akan menjamin bahwa semua file memang salinan yang tepat.Jangan gunakan kompresi cepat .
lz4
adalah pilihan terbaik Anda di sini:Lebih disukai tidak usah mencari yang tidak perlu.
Jika ada banyak ruang kosong pada perangkat dari mana Anda menyalin, dan perangkat belum baru-baru ini memusatkan perhatian, tetapi semua sistem file sumber (s) harus disalin, maka mungkin bernilai saat Anda pertama kali melakukan sesuatu seperti:
Tetapi itu tergantung pada level apa Anda seharusnya membaca sumbernya. Biasanya diinginkan untuk membaca perangkat dari awal hingga selesai dari
/dev/
some_disk
file perangkatnya, karena membaca pada level sistem file umumnya akan melibatkan pencarian bolak-balik dan di sekitar disk secara tidak berurutan. Dan jadi perintah baca Anda harus seperti:Namun, jika sistem file sumber Anda tidak boleh ditransfer secara keseluruhan, maka membaca di tingkat sistem file tidak dapat dihindari, dan karenanya Anda harus menambahkan konten input Anda ke dalam aliran.
pax
umumnya merupakan solusi terbaik dan paling sederhana dalam kasus itu, tetapi Anda mungkin juga mempertimbangkannyamksquashfs
.Jangan tidak mengenkripsi dengan
ssh
.Jadi Anda harus menggunakan
netcat
( atau, seperti yang saya inginkan,nmap
proyek lebih mampuncat
) untuk salinan jaringan sederhana, seperti yang telah disarankan di tempat lain:sumber
lz4
pekerjaan harus dengan mudah melangkah bahkan GIGe yang terbuka lebar, dan USB 2.0 tidak memiliki peluang. Selainlz4
itu , dirancang hanya untuk bekerja ketika seharusnya - itu sebagian sangat cepat karena tahu kapan kompresi harus dilakukan dan kapan seharusnya tidak. Dan jika itu adalah file perangkat yang sedang ditransfer, maka bahkan input yang sudah dikompres dapat memampatkan pula jika ada fragmentasi dalam sistem file sumber.Ada beberapa batasan yang bisa membatasi kecepatan transfer.
Ada overhead jaringan yang melekat pada pipa 1Gbps. Biasanya, ini mengurangi throughput AKTUAL ke 900Mbps atau kurang. Maka Anda harus ingat bahwa ini adalah lalu lintas dua arah dan Anda harus mengharapkan turun secara signifikan kurang dari 900Mbps.
Meskipun Anda menggunakan "router new-ish", apakah Anda yakin bahwa router mendukung 1Gbps? Tidak semua router baru mendukung 1Gbps. Selain itu, kecuali router tingkat perusahaan, Anda kemungkinan akan kehilangan bandwidth transmisi tambahan karena router tidak efisien. Meskipun berdasarkan apa yang saya temukan di bawah, sepertinya Anda mendapatkan di atas 100Mbps.
Mungkin ada kemacetan jaringan dari perangkat lain yang berbagi jaringan Anda. Sudahkah Anda mencoba menggunakan kabel yang terpasang langsung seperti yang Anda katakan dapat Anda lakukan?
Berapa jumlah IO disk Anda yang Anda gunakan? Kemungkinan, Anda dibatasi, bukan oleh jaringan, tetapi oleh disk drive. Sebagian besar HDD 7200rpm hanya akan mendapatkan sekitar 40MB / s. Apakah Anda menggunakan serangan sama sekali? Apakah Anda menggunakan SSD? Apa yang Anda gunakan di ujung remote?
Saya sarankan menggunakan rsync jika ini diharapkan dijalankan kembali untuk backup. Anda juga bisa scp, ftp (s), atau http menggunakan pengunduh seperti filezilla di ujung yang lain karena akan memparalelkan koneksi ssh / http / https / ftp. Ini dapat meningkatkan bandwidth karena solusi lain lebih dari satu pipa. Satu pipa / utas masih dibatasi oleh fakta bahwa itu adalah single-threaded, yang berarti bahwa itu bahkan bisa diikat dengan CPU.
Dengan rsync, Anda mengambil sejumlah besar kompleksitas solusi Anda serta memungkinkan kompresi, pelestarian izin, dan memungkinkan transfer parsial. Ada beberapa alasan lain, tetapi umumnya metode cadangan yang disukai (atau menjalankan sistem cadangan) dari perusahaan besar. Commvault sebenarnya menggunakan rsync di bawah perangkat lunak mereka sebagai mekanisme pengiriman untuk cadangan.
Berdasarkan contoh Anda yang diberikan 80GB / jam, Anda mendapatkan sekitar 177Mbps (22.2MB / s). Saya merasa Anda dapat dengan mudah menggandakan ini dengan rsync pada garis ethernet khusus antara dua kotak karena saya berhasil mendapatkan ini dalam pengujian saya sendiri dengan rsync lebih dari gigabit.
sumber
rsync
. Ini mungkin tidak lebih cepat saat pertama kali Anda menjalankannya, tetapi itu pasti akan untuk semua waktu berikutnya.Kami menangani ini secara teratur.
Dua metode utama yang cenderung kita gunakan adalah:
cp
ataursync
Yang pertama tergantung pada apakah drive dapat dipindahkan secara fisik. Ini tidak selalu terjadi.
Yang kedua bekerja dengan sangat baik. Secara umum kami memaksimalkan koneksi 1gbps dengan mudah menggunakan NFS mounts langsung. Anda tidak akan mendapatkan yang mendekati ini dengan scp, dd over ssh, atau yang serupa (Anda akan sering mendapatkan tingkat maks mendekati 100mpbs secara mencurigakan). Bahkan pada prosesor multicore yang sangat cepat, Anda akan mengalami hambatan pada throughput maks kripto dari salah satu core pada paling lambat kedua mesin, yang sangat lambat dibandingkan dengan cp atau rsync dengan bor penuh pada pemasangan jaringan yang tidak dienkripsi. Kadang-kadang Anda akan menabrak dinding iops untuk sementara waktu dan terjebak di sekitar ~ 53MB / s bukannya lebih khas ~ 110MB / s, tapi itu biasanya berumur pendek kecuali sumber atau tujuan sebenarnyasatu drive, maka Anda mungkin akan dibatasi oleh laju berkelanjutan dari drive itu sendiri (yang cukup bervariasi untuk alasan acak Anda tidak akan tahu sampai Anda benar-benar mencobanya) - meh.
NFS bisa sedikit menjengkelkan jika dipasang pada distro yang tidak dikenal, tetapi secara umum itu adalah cara tercepat untuk mengisi pipa selengkap mungkin. Terakhir kali saya melakukan ini lebih dari 10gbps, saya tidak pernah benar-benar mengetahui apakah itu memaksimalkan koneksi, karena transfer sudah berakhir sebelum saya kembali dari mengambil kopi - jadi mungkin ada batas alami yang Anda tekan di sana. Jika Anda memiliki beberapa perangkat jaringan antara sumber dan tujuan, Anda dapat mengalami sedikit keterlambatan atau cegukan dari efek jaringan slinky, tetapi umumnya ini akan bekerja di seluruh kantor (tidak ada lalu lintas lain yang memindahkannya) atau dari satu ujung pusat data ke yang lain (kecuali jika Anda memiliki semacam penyaringan / inspeksi yang terjadi secara internal, dalam hal ini semua taruhan dimatikan ).
SUNTING
Saya melihat beberapa obrolan tentang kompresi ... jangan tidak kompres koneksi. Ini akan memperlambat Anda dengan cara yang sama dengan layer crypto. Kemacetan akan selalu menjadi satu inti jika Anda mengompres koneksi (dan Anda bahkan tidak akan mendapatkan pemanfaatan bus inti yang sangat baik). Hal paling lambat yang dapat Anda lakukan dalam situasi Anda adalah menggunakan saluran terenkripsi dan terkompresi antara dua komputer yang duduk bersebelahan di koneksi 1gbps atau lebih tinggi.
BUKTI MASA DEPAN
Saran ini berdiri pada pertengahan 2015. Ini hampir pasti tidak akan terjadi selama bertahun-tahun lagi. Jadi, ambil semuanya dengan sebutir garam, dan jika Anda menghadapi tugas ini secara teratur maka cobalah berbagai metode pada beban aktual alih-alih membayangkan Anda akan mendapatkan apa pun yang mendekati optimal teoretis, atau bahkan mengamati laju throughput kompresi / kripto yang tipikal untuk hal-hal seperti web lalu lintas, yang sebagian besar bersifat tekstual (protip: transfer massal biasanya terdiri terutama dari gambar, audio, video, file database, kode biner, format file kantor, dll. yang sudah dikompresi)dengan cara mereka sendiri dan sangat sedikit manfaat dari dijalankan melalui rutin kompresi yang lain, ukuran blok kompresi yang hampir dijamin tidak sejajar dengan data biner Anda yang sudah dikompresi ...).
Saya membayangkan bahwa di masa depan konsep-konsep seperti SCTP akan dibawa ke tempat yang lebih menarik, di mana koneksi berikat (atau koneksi serat tersalur yang dihubungkan secara internal) khas, dan masing-masing saluran dapat menerima aliran independen dari yang lain, dan masing-masing stream dapat dikompresi / dienkripsi secara paralel, dll. Itu akan luar biasa! Tapi bukan itu yang terjadi hari ini di tahun 2015, dan meskipun berfantasi dan berteori bagus, kebanyakan dari kita tidak memiliki cluster penyimpanan khusus yang berjalan dalam data ruang cryo-chamber langsung ke jeroan Blue Gen / Q yang menghasilkan jawaban untuk Watson. Itu bukan kenyataan. Kami juga tidak punya waktu untuk menganalisis muatan data kami secara mendalam untuk mencari tahu apakah kompresi adalah ide yang baik atau tidak - transfer itu sendiri akan berakhir sebelum kami menyelesaikan analisis kami,
Tapi...
Waktu berubah dan rekomendasi saya terhadap kompresi dan enkripsi tidak akan berlaku. Saya benar-benar ingin saran ini dibatalkan dalam kasus tipikal segera. Itu akan membuat hidup saya lebih mudah.
sumber
lz4
cukup cepat untuk tidak menghambat gigEt, tetapi tergantung pada apa yang ingin Anda lakukan dengan salinan, Anda mungkin memerlukannya tidak terkompresi. lzop juga cukup cepat. Pada Sandybridge i5-2500k saya (3.8GHz),lz4 < /dev/raid0 | pv -a > /dev/null
berjalan pada ~ 180MB / s input, ~ 105MB / s output, tepat untuk gigE. Dekompresi pada sisi penerimaan bahkan lebih mudah pada CPU.Alat bagus yang saya gunakan di masa lalu adalah
bbcp
. Seperti yang terlihat di sini: https://www.slac.stanford.edu/~abh/bbcp/ .Lihat juga http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
Saya memiliki kecepatan transfer yang sangat cepat dengan alat ini.
sumber
Jika Anda mendapatkan kartu pass pertama (entah bagaimana melalui kabel / sneakernet / apa pun), Anda dapat melihat
rsync
opsi tertentu yang dapat mempercepat transfer berikutnya. Cara yang sangat baik untuk pergi adalah:Pilihannya adalah: verbose, mode arsip, rekursif, kompres, Kemajuan parsial
sumber
-z
bisa sangat lambat tergantung pada CPU Anda dan data apa yang Anda proses. Saya telah mengalami transfer dari 30 MB / s ke 125 MB / s saat menonaktifkan kompresi.Ditambahkan pada desakan poster asli dalam komentar untuk jawaban Zackse, meskipun saya tidak yakin itu adalah yang tercepat dalam keadaan khusus.
bash
memiliki sintaks redirection khusus:Untuk output:
> /dev/tcp/
IP/
portUntuk input:
< /dev/tcp/
IP/
portIP larangan dapat berupa IP desimal-desimal atau nama host; larangan port dapat berupa angka desimal atau nama port dari
/etc/services
.Tidak ada
/dev/tcp/
direktori aktual . Ini adalah sintaksis khusus yang memerintahkanbash
untuk membuat soket TCP, menghubungkannya ke tujuan yang ditentukan, dan kemudian melakukan hal yang sama seperti pengalihan file biasa (yaitu, ganti aliran standar masing-masing dengan soket menggunakan dup2 (2)).Oleh karena itu, seseorang dapat melakukan streaming data dari
dd
atautar
di mesin sumber langsung melalui TCP. Atau, sebaliknya, untuk mengalirkan data ketar
atau sesuatu yang serupa secara langsung melalui TCP. Bagaimanapun, satu netcat berlebihan dihilangkan.Catatan tentang netcat
Ada ketidakkonsistenan dalam sintaksis antara netcat klasik dan GNU netcat . Saya akan menggunakan sintaksis klasik yang biasa saya gunakan. Ganti
-lp
dengan-l
untuk GNU netcat.Juga, saya tidak yakin apakah netcat GNU menerima
-q
sakelar.Mentransfer gambar disk
(Di sepanjang garis jawaban zackse.)
Di tujuan:
Sumber:
Membuat arsip tar.gz, dengan
tar
Di tempat tujuan:
Sumber:
Ganti
.tgz
dengan.tbz
dancz
dengancj
untuk mendapatkanbzip2
arsip yang dikompresi.Mentransfer dengan ekspansi langsung ke sistem file
Juga dengan
tar
.Di tempat tujuan:
Sumber:
Ini akan bekerja tanpa
-q 1
, tetapi netcat akan macet ketika data berakhir. Lihat tar (1) untuk penjelasan tentang sintaks dan peringatan daritar
. Jika ada banyak file dengan redundansi tinggi (entropi rendah), maka kompresi (mis.cz
Danxz
bukannyac
danx
) dapat dicoba, tetapi jika file khas dan jaringan cukup cepat, itu hanya akan memperlambat proses. Lihat jawaban mikeserv untuk perincian tentang kompresi.Gaya alternatif (port tujuan mendengarkan)
Di tempat tujuan:
Sumber:
sumber
Cobalah saran mengenai koneksi langsung dan hindari protokol terenkripsi seperti ssh. Maka jika Anda masih ingin meningkatkan kinerja, berikan situs ini bacaan: https://fasterdata.es.net/host-tuning/linux/ untuk beberapa saran tentang cara mengoptimalkan jendela TCP Anda.
sumber
Saya akan menggunakan skrip ini yang saya tulis yang membutuhkan
socat
paket.Di mesin sumber:
Pada mesin target:
Jika
vbuf
paket (Debian, Ubuntu) ada di sana maka pengirim file akan menunjukkan kemajuan data. Penerima file akan menunjukkan file apa yang diterima. Opsi pass = dapat digunakan di mana data mungkin terpapar (lebih lambat).Sunting:
Gunakan
-n
opsi untuk menonaktifkan kompresi, jika CPU adalah leher botol.sumber
Jika anggaran bukan masalah utama, Anda dapat mencoba menghubungkan drive dengan "konektor drive" inti Intel Xeon E5 12. Konektor ini biasanya sangat kuat, sehingga Anda bahkan dapat menjalankan perangkat lunak server Anda saat ini. Dari kedua server!
Ini mungkin terlihat seperti jawaban yang menyenangkan, tetapi Anda harus benar-benar mempertimbangkan mengapa Anda memindahkan data antar server dan jika yang besar dengan memori dan penyimpanan bersama mungkin lebih masuk akal.
Tidak yakin dengan spesifikasi saat ini, tetapi transfer lambat mungkin dibatasi oleh kecepatan disk, bukan jaringan?
sumber
Jika Anda hanya peduli tentang backup, dan bukan tentang byte untuk salinan hard drive, maka saya akan merekomendasikan backupPC. http://backuppc.sourceforge.net/faq/BackupPC.html Agak sulit untuk diatur tetapi transfer sangat cepat.
Waktu transfer awal saya untuk sekitar 500G data adalah sekitar 3 jam. Pencadangan berikutnya terjadi dalam waktu sekitar 20 detik.
Jika Anda tidak tertarik dengan cadangan, tetapi mencoba menyinkronkan, maka rsync atau serempak akan lebih sesuai dengan kebutuhan Anda.
Salinan byte untuk hard disk byte biasanya merupakan ide yang mengerikan untuk tujuan pencadangan (tanpa tambahan, tanpa menghemat ruang, drive tidak dapat digunakan, Anda harus mencadangkan "ruang kosong", dan Anda harus membuat cadangan sampah (seperti file swap 16G atau 200G core dumps atau semacamnya). Menggunakan rsync (atau backuppc atau yang lain), Anda dapat membuat "snapshots" pada waktunya sehingga Anda dapat pergi ke "seperti apa sistem file Anda terlihat 30 menit yang lalu" dengan overhead yang sangat sedikit.
Yang mengatakan, jika Anda benar-benar ingin mentransfer byte untuk salinan byte maka masalah Anda akan terletak pada transfer dan bukan dalam mendapatkan data dari drive. Tanpa 400G RAM, transfer file 320G akan memakan waktu sangat lama. Menggunakan protokol yang tidak dienkripsi adalah pilihan, tetapi tidak peduli apa, Anda hanya harus duduk di sana dan menunggu selama beberapa jam (melalui jaringan).
sumber
Terlepas dari program, saya biasanya menemukan bahwa "menarik" file melalui jaringan lebih cepat daripada "mendorong". Artinya, masuk ke komputer tujuan dan melakukan membaca lebih cepat daripada masuk ke komputer sumber dan menulis.
Juga, jika Anda akan menggunakan drive perantara, pertimbangkan ini: Dapatkan drive eksternal (baik sebagai paket, atau drive terpisah yang dicolokkan ke stasiun dok) yang menggunakan eSATA daripada USB. Kemudian pada masing-masing dari kedua komputer baik memasang kartu dengan port eSATA, atau mendapatkan kabel adaptor sederhana yang membawa salah satu port SATA internal ke konektor eSATA eksternal. Kemudian colokkan drive ke komputer sumber, hidupkan drive, dan tunggu sampai auto-mount (Anda bisa me-mount manaully, tetapi jika Anda melakukan ini berulang kali Anda mungkin juga memasukkannya ke file fstab Anda). Kemudian salin; Anda akan menulis dengan kecepatan yang sama dengan drive internal. Kemudian lepaskan drive, matikan, pasang ke komputer lain, hidupkan, tunggu pemasangan otomatis, dan baca.
sumber
Saya akan merekomendasikan agar Anda melihat NIC-teaming. Ini melibatkan penggunaan beberapa koneksi jaringan yang berjalan secara paralel. Dengan anggapan bahwa Anda benar-benar membutuhkan transfer lebih dari 1Gb, dan bahwa 10Gb mahal, 2Gb yang disediakan oleh NIC-teaming akan menjadi biaya kecil, dan komputer Anda mungkin sudah memiliki port tambahan.
sumber
FWIW, saya selalu menggunakan ini:
Hal tentang metode ini adalah bahwa ia akan mempertahankan izin file / folder antara mesin (dengan asumsi pengguna / grup yang sama ada pada keduanya) (Juga saya biasanya melakukan ini untuk menyalin gambar disk virtual karena saya dapat menggunakan parameter -S untuk menangani file jarang. )
Hanya menguji ini di antara dua server yang sibuk dan berhasil ~ 14GB dalam 216-an (sekitar 64MB / s) - mungkin akan lebih baik di antara mesin khusus dan / atau kompresi ... YMMV
sumber
Kecuali jika Anda ingin melakukan forensik sistem file, gunakan program dump / restore untuk sistem file Anda untuk menghindari menyalin ruang kosong yang FS tidak gunakan. Bergantung pada sistem file apa yang Anda miliki, ini biasanya akan mempertahankan semua metadata, termasuk
ctime
. nomor inode dapat berubah, sekali lagi, tergantung pada sistem file apa (xfs, ext4, ufs ...).Target pemulihan dapat berupa file pada sistem target.
Jika Anda ingin gambar disk penuh dengan tabel partisi, Anda dapat
dd
1M disk pertama untuk mendapatkan tabel partisi / bootloader / barang, tetapi kemudianxfsdump
partisi.Dari info-dump Anda, saya tidak tahu jenis sistem file yang Anda miliki. Jika ufs BSD, maka saya pikir itu memiliki program dump / restore. Jika ZFS, baik IDK, mungkin ada sesuatu.
Umumnya disk penyalinan penuh di sekitar terlalu lambat untuk apa pun kecuali situasi pemulihan. Anda juga tidak dapat melakukan backup tambahan.
sumber
Anda juga dapat mengatur sistem untuk memiliki penyimpanan bersama!
Saya mempertimbangkan bahwa ini bersebelahan, dan Anda cenderung melakukan ini lagi & lagi ....
sumber
Bagaimana dengan kabel crossover ethernet? Alih-alih mengandalkan kecepatan nirkabel, Anda dibatasi pada kecepatan kabel NIC Anda.
Ini pertanyaan serupa dengan beberapa contoh solusi semacam itu.
Tampaknya hanya kabel ethernet yang khas akan cukup saat ini. Jelas semakin baik NIC Anda semakin cepat transfer.
Untuk meringkas, jika ada pengaturan jaringan yang diperlukan, itu harus dibatasi hanya dengan menetapkan IP statis untuk server Anda dan komputer cadangan dengan subnet mask 255.255.255.0
Semoga berhasil!
Sunting:
@Khrystoph menyentuh ini dalam jawabannya
sumber
Beberapa orang menyarankan Anda melewatkan ssh karena enkripsi akan memperlambat Anda. CPU modern sebenarnya cukup cepat pada 1Gb, tetapi OpenSSH memiliki masalah dengan implementasi windowing internal yang dapat memperlambat Anda secara drastis.
Jika Anda ingin melakukan ini dengan ssh, lihat HPN SSH . Ini memecahkan masalah windowing dan menambahkan enkripsi multithreaded. Sayangnya Anda harus membangun kembali ssh di kedua klien & server.
sumber
OK Saya telah mencoba menjawab pertanyaan ini untuk dua komputer dengan "pipa sangat besar" (10Gbe) yang "dekat" satu sama lain.
Masalah yang Anda temui di sini adalah: sebagian besar kompresi akan macet di cpu, karena pipa-pipa itu sangat besar.
kinerja untuk mentransfer file 10GB (koneksi jaringan [Gode] 6 Gb, data yang tidak dapat dikompresi):
Dan dua kotak di 10 Gbe, versi netcat yang sedikit lebih tua (CentOs 6.7), file 10GB:
Jadi pada satu contoh, netcat menggunakan lebih sedikit cpu, di socat lainnya, jadi YMMV.
Dengan netcat, jika tidak memiliki opsi "-N -q 0" dapat mentransfer file terpotong, hati-hati ... pilihan lain seperti "-w 10" juga dapat mengakibatkan file terpotong.
Apa yang terjadi di hampir semua kasus ini adalah cpu sedang dimaksimalkan, bukan jaringan.
scp
maksimal sekitar 230 MB / s, mematok satu inti pada pemanfaatan 100%.Iperf3 sayangnya membuat file yang rusak . Beberapa versi netcat tampaknya tidak mentransfer seluruh file, sangat aneh. Terutama versi yang lebih lama.
Berbagai mantera "gzip sebagai pipa ke netcat" atau "mbuffer" juga tampaknya memaksimalkan CPU dengan gzip atau mbuffer, jadi tidak menghasilkan transfer yang lebih cepat dengan pipa besar seperti itu. lz4 mungkin membantu. Selain itu, beberapa hal pipa gzip yang saya coba hasilkan mengakibatkan transfer rusak untuk file yang sangat besar (> 4 GB) jadi berhati-hatilah di luar sana :)
Hal lain yang mungkin bekerja terutama untuk latensi yang lebih tinggi (?) Adalah untuk menyetel pengaturan tcp. Berikut adalah panduan yang menyebutkan nilai yang disarankan:
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm dan https://fasterdata.es.net/host-tuning/linux/ (dari jawaban lain) mungkin pengaturan IRQ: https://fasterdata.es .net / host-tuning / 100g-tuning /
saran dari linode, tambahkan ke /etc/sysctl.conf:
Selain itu, mereka ingin Anda menjalankan:
layak dicek ulang setelah tweaking untuk memastikan perubahan tidak menyebabkan kerusakan juga.
Juga mungkin layak untuk menyetel ukuran jendela: https://iperf.fr/iperf-doc.php#tuningtcp
Dengan kompresi koneksi lambat (er) pasti bisa membantu. Jika Anda memiliki pipa besar, kompresi yang sangat cepat dapat membantu dengan data yang dapat dikompresi, belum mencobanya.
Jawaban standar untuk "sinkronisasi hard drive" adalah untuk mensinkronisasi ulang file, yang menghindari transfer jika memungkinkan.
Pilihan lain: gunakan "parallel scp" (entah bagaimana atau lainnya), maka akan menggunakan lebih banyak core ...
sumber