Artikel ini berlanjut
siklus cadangan- Cadangan, bagian 1: Mengapa Anda memerlukan cadangan, tinjauan umum metode, teknologi
- Cadangan, Bagian 2: Tinjauan Umum dan Pengujian alat pencadangan berbasis rsync
- Cadangan, Bagian 3: Gambaran Umum dan Pengujian duplikasi, dupati
- Cadangan, Bagian 4: Tinjauan Umum dan Pengujian zbackup, restic, borgbackup
- Cadangan, Bagian 5: Menguji Bacula dan Cadangan Veeam untuk Linux
- Cadangan, Bagian 6: Membandingkan Alat Cadangan
- Cadangan Bagian 7: Kesimpulan
Seperti yang sudah kami tulis di artikel pertama, ada sejumlah besar program cadangan berdasarkan rsync.
Dari mereka yang paling cocok untuk kondisi kita, saya akan mempertimbangkan 3: rdiff-backup, rsnapshot dan bersendawa.
Set File Uji
Kumpulan file uji akan sama untuk semua kandidat, termasuk artikel mendatang.Set pertama : 10 GB file media, dan sekitar 50 MB - kode sumber untuk situs dalam php, ukuran file dari beberapa kilobyte untuk kode sumber, hingga puluhan megabyte untuk file media. Tujuannya adalah untuk mensimulasikan situs dengan statika.
Set kedua : diperoleh dari yang pertama saat mengganti nama subdirektori dengan file media 5 GB. Tujuannya adalah untuk mempelajari perilaku sistem cadangan saat mengganti nama direktori.
Set ketiga : diperoleh dari yang pertama dengan menghapus 3GB file media dan menambahkan 3GB file media baru. Tujuannya adalah untuk mempelajari perilaku sistem cadangan selama operasi pembaruan situs yang khas.
Mendapatkan Hasil
Cadangan apa pun dilakukan setidaknya 3 kali dan disertai dengan reset cache sistem file dengan
sync
dan perintah
echo 3 > /proc/sys/vm/drop_caches
pada server uji dan server penyimpanan cadangan.
Di server yang akan menjadi sumber cadangan, perangkat lunak pemantauan diinstal - netdata, yang dengannya beban di server akan diperkirakan selama cadangan, ini diperlukan untuk menilai beban di server dengan proses pencadangan.
Saya juga berpikir bahwa server penyimpanan cadangan lebih lambat dari server utama, tetapi memiliki disk lebih luas dengan kecepatan tulis acak yang relatif rendah - situasi yang paling umum ketika membuat cadangan, dan karena fakta bahwa server cadangan tidak boleh melakukan hal yang baik Saya tidak akan memonitor beban selain cadangan, saya tidak akan memonitor bebannya menggunakan netdata.
Juga, server saya telah berubah, di mana saya akan memeriksa berbagai sistem untuk cadangan.
Sekarang mereka memiliki karakteristik sebagai berikutCPU sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run sysbench 1.0.17 (using system LuaJIT 2.0.4) Running the test with following options: Number of threads: 2 Initializing random number generator from current time Prime numbers limit: 20000 Initializing worker threads... Threads started! CPU speed: events per second: 1081.62 General statistics: total time: 30.0013s total number of events: 32453 Latency (ms): min: 1.48 avg: 1.85 max: 9.84 95th percentile: 2.07 sum: 59973.40 Threads fairness: events (avg/stddev): 16226.5000/57.50 execution time (avg/stddev): 29.9867/0.00
RAM, membaca ... sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory run sysbench 1.0.17 (using system LuaJIT 2.0.4) Running the test with following options: Number of threads: 4 Initializing random number generator from current time Running memory speed test with the following options: block size: 1KiB total size: 102400MiB operation: read scope: global Initializing worker threads... Threads started! Total operations: 104857600 (5837637.63 per second) 102400.00 MiB transferred (5700.82 MiB/sec) General statistics: total time: 17.9540s total number of events: 104857600 Latency (ms): min: 0.00 avg: 0.00 max: 66.08 95th percentile: 0.00 sum: 18544.64 Threads fairness: events (avg/stddev): 26214400.0000/0.00 execution time (avg/stddev): 4.6362/0.12
... dan merekam sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory run sysbench 1.0.17 (using system LuaJIT 2.0.4) Running the test with following options: Number of threads: 4 Initializing random number generator from current time Running memory speed test with the following options: block size: 1KiB total size: 102400MiB operation: write scope: global Initializing worker threads... Threads started! Total operations: 91414596 (3046752.56 per second) 89272.07 MiB transferred (2975.34 MiB/sec) General statistics: total time: 30.0019s total number of events: 91414596 Latency (ms): min: 0.00 avg: 0.00 max: 1022.90 95th percentile: 0.00 sum: 66430.91 Threads fairness: events (avg/stddev): 22853649.0000/945488.53 execution time (avg/stddev): 16.6077/1.76
Disk pada server sumber data sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run sysbench 1.0.17 (using system LuaJIT 2.0.4) Running the test with following options: Number of threads: 4 Initializing random number generator from current time Extra file open flags: (none) 128 files, 8MiB each 1GiB total file size Block size 4KiB Number of IO requests: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Initializing worker threads... Threads started! File operations: reads/s: 4587.95 writes/s: 3058.66 fsyncs/s: 9795.73 Throughput: read, MiB/s: 17.92 written, MiB/s: 11.95 General statistics: total time: 60.0241s total number of events: 1046492 Latency (ms): min: 0.00 avg: 0.23 max: 14.45 95th percentile: 0.94 sum: 238629.34 Threads fairness: events (avg/stddev): 261623.0000/1849.14 execution time (avg/stddev): 59.6573/0.00
Disk di server penyimpanan cadangan sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run sysbench 1.0.17 (using system LuaJIT 2.0.4) Running the test with following options: Number of threads: 4 Initializing random number generator from current time Extra file open flags: (none) 128 files, 8MiB each 1GiB total file size Block size 4KiB Number of IO requests: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Initializing worker threads... Threads started! File operations: reads/s: 11.37 writes/s: 7.58 fsyncs/s: 29.99 Throughput: read, MiB/s: 0.04 written, MiB/s: 0.03 General statistics: total time: 73.8868s total number of events: 3104 Latency (ms): min: 0.00 avg: 78.57 max: 3840.90 95th percentile: 297.92 sum: 243886.02 Threads fairness: events (avg/stddev): 776.0000/133.26 execution time (avg/stddev): 60.9715/1.59
Kecepatan jaringan antar server iperf3 -c backup Connecting to host backup, port 5201 [ 4] local xxxx port 59402 connected to yyyy port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 419 MBytes 3.52 Gbits/sec 810 182 KBytes [ 4] 1.00-2.00 sec 393 MBytes 3.30 Gbits/sec 810 228 KBytes [ 4] 2.00-3.00 sec 378 MBytes 3.17 Gbits/sec 810 197 KBytes [ 4] 3.00-4.00 sec 380 MBytes 3.19 Gbits/sec 855 198 KBytes [ 4] 4.00-5.00 sec 375 MBytes 3.15 Gbits/sec 810 182 KBytes [ 4] 5.00-6.00 sec 379 MBytes 3.17 Gbits/sec 765 228 KBytes [ 4] 6.00-7.00 sec 376 MBytes 3.15 Gbits/sec 810 180 KBytes [ 4] 7.00-8.00 sec 379 MBytes 3.18 Gbits/sec 765 253 KBytes [ 4] 8.00-9.00 sec 380 MBytes 3.19 Gbits/sec 810 239 KBytes [ 4] 9.00-10.00 sec 411 MBytes 3.44 Gbits/sec 855 184 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec 8100 sender [ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec receiver
Metodologi pengujian
- Sistem file dengan set uji pertama disiapkan di server uji, dan repositori diinisialisasi pada server penyimpanan cadangan jika perlu.
Proses pencadangan dimulai dan waktunya diukur. - File dimigrasikan ke suite uji kedua di server tes. Proses pencadangan dimulai dan waktunya diukur.
- Server tes bermigrasi ke suite tes ketiga. Proses pencadangan dimulai dan waktunya diukur.
- Set tes ketiga yang dihasilkan diterima oleh yang pertama; poin 1-3 diulang 2 kali lebih banyak.
- Data dimasukkan ke dalam tabel pivot, grafik dengan netdata ditambahkan.
- Laporan disiapkan menggunakan metode cadangan terpisah.
Hasil yang Diharapkan
Karena ketiga kandidat didasarkan pada teknologi yang sama (rsync), diharapkan hasilnya akan mendekati rsync biasa, termasuk semua keunggulannya, yaitu:
- File dalam repositori akan disimpan "sebagaimana adanya".
- Ukuran repositori hanya akan tumbuh termasuk perbedaan antara cadangan.
- Akan ada beban yang relatif besar pada jaringan selama transfer data, serta beban kecil pada prosesor.
Uji coba rsync biasa akan digunakan sebagai referensi, hasilnya
ini adalah
Hambatannya adalah pada server penyimpanan cadangan dalam bentuk disk berbasis HDD, yang cukup jelas terlihat pada grafik dalam bentuk gergaji.
Data disalin dalam 4 menit dan 15 detik.
Menguji rdiff-backup
Kandidat pertama adalah rdiff-backup, skrip python yang membuat cadangan satu direktori ke yang lain. Pada saat yang sama, salinan cadangan saat ini disimpan "sebagaimana adanya", dan cadangan yang dibuat sebelumnya disimpan dalam subdirektori khusus secara bertahap, dan dengan demikian ruang disimpan.
Kami akan memeriksa mode operasi yang umum, yaitu dimulainya proses pencadangan dimulai oleh klien sendiri, dan di sisi server, proses yang menerima data diluncurkan untuk cadangan.
Ayo lihat
apa yang dia mampu dalam kondisi kita.

Waktu berjalan dari setiap percobaan:
Rdiff-backup bereaksi sangat menyakitkan terhadap perubahan data besar, dan juga tidak sepenuhnya memanfaatkan jaringan.
Menguji rsnapshot
Kandidat kedua, rsnapshot, adalah skrip perl yang persyaratan utama untuk kerja efektif adalah dukungan untuk tautan keras. Ini menghemat ruang disk. Pada saat yang sama, file yang tidak berubah sejak cadangan sebelumnya akan dirujuk ke file asli menggunakan tautan keras.
Logika dari proses pencadangan juga terbalik: server secara aktif "berjalan" pada kliennya sendiri dan mengambil data.
Hasil tes
Ini bekerja sangat, sangat cepat, jauh lebih cepat daripada rdiff-backup dan sangat dekat dengan rsync murni.
Pengujian bersendawa
Pilihan lain adalah implementasi C di atas librsync - burp, yang memiliki arsitektur client-server termasuk otorisasi klien, serta antarmuka web (tidak termasuk dalam paket dasar). Fitur menarik lainnya adalah cadangan tanpa hak pemulihan dari klien.
Mari lihat
kinerja.

Ini bekerja 2 kali lebih lambat dari rsnapshot, tetapi juga cukup cepat, dan tentu saja rdiff-backup lebih cepat. Grafiknya sedikit gigi gergaji - kinerja lagi bersandar pada subsistem disk dari server penyimpanan cadangan, meskipun ini tidak diucapkan seperti rsnapshot.
Hasil
Ukuran repositori untuk semua kandidat kira-kira sama, yaitu, pada pertumbuhan pertama hingga 10 GB, kemudian tumbuh hingga 15 GB, kemudian tumbuh hingga 18 GB, dll., Karena kekhasan rsync. Perlu juga dicatat bahwa semua kandidat adalah single-threaded (utilisasi CPU sekitar 50% dengan mesin dual-core). Semua 3 kandidat memberikan kesempatan untuk mengembalikan cadangan terakhir "sebagaimana adanya", yaitu, dimungkinkan untuk mengembalikan file tanpa menggunakan program pihak ketiga, termasuk yang digunakan untuk membuat repositori. Ini juga merupakan "warisan generik" dari rsync.
Kesimpulan
Semakin kompleks sistem cadangan dan semakin beragam fitur yang dimilikinya, semakin lambat kerjanya, tetapi untuk proyek yang tidak terlalu menuntut, salah satu dari mereka akan melakukan, kecuali, mungkin, rdiff-backup.
Pengumuman
Catatan ini melanjutkan siklus cadangan.
Cadangan, bagian 1: Mengapa Anda memerlukan cadangan, tinjauan umum metode, teknologiCadangan, Bagian 2: Tinjauan Umum dan Pengujian alat pencadangan berbasis rsyncCadangan, Bagian 3: Gambaran Umum dan Pengujian duplikasi, dupatiCadangan, Bagian 4: Tinjauan Umum dan Pengujian zbackup, restic, borgbackupCadangan, Bagian 5: Menguji Bacula dan Cadangan Veeam untuk LinuxCadangan: bagian yang diminta oleh pembaca: ulasan AMANDA, UrBackup, BackupPCCadangan, Bagian 6: Membandingkan Alat CadanganCadangan Bagian 7: KesimpulanDiposting oleh Finnix