Saya mengarsipkan data dari satu server ke server lain. Awalnya saya memulai rsync
pekerjaan. Butuh 2 minggu untuk membangun daftar file hanya untuk 5 TB data dan satu minggu lagi untuk mentransfer 1 TB data.
Kemudian saya harus mematikan pekerjaan karena kita perlu waktu luang di server baru.
Telah disepakati bahwa kami akan menambahkannya karena kami mungkin tidak perlu mengaksesnya lagi. Saya berpikir untuk memecahnya menjadi potongan 500 GB. Setelah saya tar
lalu saya akan menyalinnya ssh
. Saya menggunakan tar
dan pigz
tetapi masih terlalu lambat.
Apakah ada cara yang lebih baik untuk melakukannya? Saya pikir kedua server ada di Redhat. Server lama adalah Ext4 dan yang baru adalah XFS.
Ukuran file berkisar dari beberapa kb hingga beberapa mb dan ada 24 juta jpeg dalam 5TB. Jadi saya kira sekitar 60-80 juta untuk 15TB.
sunting: Setelah bermain dengan rsync, nc, tar, mbuffer dan pigz selama beberapa hari. Kemacetan akan menjadi IO disk. Seperti data yang dilucuti di 500 SAS disk dan sekitar 250 juta jpeg. Namun, sekarang saya belajar tentang semua alat bagus yang dapat saya gunakan di masa depan.
Jawaban:
Saya memiliki hasil yang sangat baik menggunakan
tar
,pigz
(gzip paralel) dannc
.Mesin sumber:
Mesin tujuan:
Untuk mengekstrak:
Untuk menyimpan arsip:
Jika Anda ingin melihat kecepatan transfer hanya pipa
pv
setelahpigz -d
!sumber
pigz
dengangzip
atau menghapusnya sama sekali, tapi kecepatan akan secara signifikan lebih lambat.tar
danpigz
? Saya tidak mengerti ...pigz
? Dari pertanyaan itu sepertinya dia hanya mencobarsync
sejauh ini, dan sedang mempertimbangkan menggunakantar
untuk membagi dan menggabungkan data. Terutama jika dia belum menggunakan opsi-z
/--compress
pada rsync,pigz
secara teoritis dapat membantu secara signifikan.tar
tidak menghasilkan data cukup cepat untukpigz
menggunakan banyak CPU untuk kompresi. Membaca banyak file kecil melibatkan lebih banyak syscalls, lebih banyak disk mencari, dan lebih banyak overhead kernel daripada membaca jumlah byte yang sama dari file yang lebih besar, dan sepertinya Anda hanya mengalami bottlenecking pada level fundamental.Saya akan tetap berpegang pada solusi rsync. Modern (3.0.0+) rsync menggunakan daftar file tambahan, sehingga tidak harus membuat daftar lengkap sebelum transfer. Jadi memulai kembali itu tidak akan mengharuskan Anda melakukan seluruh transfer lagi jika terjadi masalah. Memisahkan transfer per direktori tingkat atas atau kedua akan mengoptimalkan ini lebih jauh. (Saya akan menggunakan
rsync -a -P
dan menambahkan--compress
jika jaringan Anda lebih lambat dari drive Anda.)sumber
unison
? Bagaimana cara membandingkannyarsync
?Siapkan VPN (jika internetnya), buat drive virtual dengan beberapa format pada server jarak jauh (buat ext4), pasang di server jauh, lalu pasang di server lokal (menggunakan protokol tingkat blok seperti iSCSI ), dan gunakan dd atau alat level blok lain untuk melakukan transfer. Anda kemudian dapat menyalin file dari drive virtual ke drive nyata (XFS) sesuka Anda.
Dua alasan:
sumber
Jika server lama sedang dinonaktifkan dan file-file dapat offline selama beberapa menit maka seringkali paling cepat untuk hanya menarik drive keluar dari kotak lama dan kabel mereka ke server baru, pasang mereka (kembali online sekarang) dan salin file-file ke disk asli server baru.
sumber
Gunakan mbuffer dan jika berada di jaringan yang aman Anda dapat menghindari langkah enkripsi.
sumber
(Banyak jawaban berbeda dapat bekerja. Ini satu lagi.)
Buat daftar file dengan
find -type f
(ini akan selesai dalam beberapa jam), pisahkan menjadi potongan-potongan kecil, dan transfer setiap potongan menggunakanrsync --files-from=...
.sumber
Sudahkah Anda mempertimbangkan sneakernet? Dengan itu, maksud saya mentransfer semuanya ke drive yang sama, kemudian secara fisik memindahkan drive itu.
sekitar sebulan yang lalu, Samsung meluncurkan drive 16 TB (secara teknis, ini 15,36 TB), yang juga merupakan SSD: http://www.theverge.com/2015/8/14/9153083/samsung-worlds-largest-hard -drive-16tb
Saya pikir drive ini akan lakukan untuk ini. Anda masih harus menyalin semua file, tetapi karena Anda tidak memiliki latensi jaringan dan mungkin dapat menggunakan SATA atau teknik cepat yang serupa, itu harus jauh lebih cepat.
sumber
Jika ada peluang untuk mendapatkan rasio keberhasilan yang tinggi saat deduplikasi, saya akan menggunakan sesuatu seperti borgbackup atau Attic.
Jika tidak, periksa solusi netcat + tar + pbzip2 , sesuaikan opsi kompresi sesuai dengan perangkat keras Anda - periksa apa hambatannya (jaringan CPU? IO?). Pbzip2 akan menjangkau semua CPU, memberikan kinerja yang lebih baik.
sumber
xz
) mendekompres lebih cepat dari bzip2, dan bekerja dengan baik pada sebagian besar input. Sayangnya,xz
opsi multithread belum diimplementasikan.pigz
akan lebih baik. jadilah kompresor paling lambat yang ingin Anda gunakan. Atau bahkanlz4
. (Adalz4mt
multi-threaded-for-a-single-stream yang tersedia. Ini tidak thread sangat efisien (menelurkan thread baru sangat sering), tetapi memang mendapatkan speedup yang solid)Anda menggunakan RedHat Linux, jadi ini tidak berlaku, tetapi sebagai opsi lain:
Saya sudah sangat sukses menggunakan ZFS untuk menyimpan jutaan file karena inode bukan masalah.
Jika itu pilihan bagi Anda, Anda kemudian dapat mengambil foto dan menggunakan zfs untuk mengirim pembaruan tambahan. Saya sudah banyak sukses menggunakan metode ini untuk mentransfer serta mengarsipkan data.
ZFS pada dasarnya adalah sistem file Solaris, tetapi dapat ditemukan di illumos (garpu open source dari Sun's OpenSolaris). Saya tahu ada juga sedikit keberuntungan dalam menggunakan ZFS di bawah BSD dan Linux (menggunakan FUSE?) - tapi saya tidak punya pengalaman mencoba itu.
sumber
Mulai
rsync
daemon di mesin target. Ini akan mempercepat proses transfer.sumber
Anda dapat melakukan ini hanya dengan tar dan ssh, seperti ini:
tar zcf - <your files> | ssh <destination host> "cat > <your_file>.tar.gz"
Atau, jika Anda ingin menyimpan file individual:
tar zcf - <your files> | ssh <destination host> "tar zxf -"
sumber