Bagaimana kolam zfs dapat didukung secara terus-menerus / bertahap di luar lokasi?
Saya mengenali send/receive
over ssh adalah salah satu metode namun yang melibatkan harus mengelola foto secara manual.
Ada beberapa alat yang saya temukan namun sebagian besar tidak lagi didukung.
Satu-satunya alat yang terlihat menjanjikan adalah https://github.com/jimsalterjrs/sanoid namun saya khawatir bahwa alat yang tidak dikenal luas dapat lebih berbahaya daripada bagusnya karena dapat merusak / menghapus data.
Bagaimana pencadangan zfs terus menerus / bertahap dilakukan?
Jawaban:
ZFS adalah sistem file yang luar biasa dan memecahkan banyak kebutuhan penyimpanan data lokal dan bersama saya.
Sementara, saya suka ide mengelompokkan ZFS sedapat mungkin, kadang-kadang tidak praktis, atau saya perlu beberapa pemisahan geografis dari node penyimpanan.
Salah satu kasus penggunaan yang saya miliki adalah penyimpanan bereplikasi kinerja tinggi pada server aplikasi Linux. Sebagai contoh, saya mendukung produk perangkat lunak lama yang mendapatkan manfaat dari hard disk NVMe latensi rendah untuk datanya. Aplikasi memiliki opsi mirroring tingkat aplikasi yang dapat mereplikasi ke server sekunder, tetapi seringkali tidak akurat dan merupakan RPO 10 menit .
Saya telah memecahkan masalah ini dengan memiliki server sekunder (juga menjalankan ZFS pada perangkat keras yang serupa atau berbeda) yang bisa lokal, jauh atau keduanya. Dengan menggabungkan ketiga utilitas yang dirinci di bawah ini, saya telah membuat solusi replikasi yang memberi saya replikasi berkelanjutan, retensi snapshot yang dalam, dan opsi failover fleksibel.
zfs-auto-snapshot - https://github.com/zfsonlinux/zfs-auto-snapshot
Hanya alat praktis untuk mengaktifkan snapshot tingkat sistem file ZFS secara berkala. Saya biasanya menjalankan dengan jadwal berikut pada volume produksi:
Syncoid (Sanoid) - https://github.com/jimsalterjrs/sanoid
Program ini dapat menjalankan snap / replikasi ad-hoc dari sistem file ZFS ke target sekunder. Saya hanya menggunakan bagian syncoid dari produk.
Dengan asumsi server1 dan server2 , perintah sederhana dijalankan dari server2 untuk menarik data dari server1 :
Monit - https://mmonit.com/monit/
Monit adalah penjadwal pekerjaan dan manajer eksekusi yang sangat fleksibel. Secara default, ini bekerja pada interval 30 detik, tetapi saya memodifikasi konfigurasi untuk menggunakan siklus waktu dasar 15 detik.
Contoh konfigurasi yang menjalankan skrip replikasi di atas setiap 15 detik (1 siklus)
Ini mudah untuk diotomatisasi dan ditambahkan melalui manajemen konfigurasi. Dengan membungkus eksekusi snapshot / replikasi di Monit, Anda mendapatkan status terpusat, kontrol pekerjaan dan peringatan (email, SNMP, skrip khusus).
Hasilnya adalah saya memiliki server yang memiliki beberapa bulan snapshot bulanan dan banyak poin rollback dan retensi dalam: https://pastebin.com/zuNzgi0G - Plus, replika atom 15 detik yang terus menerus bergulir:
# monit status
sumber
Anda memiliki dua cara berbeda untuk melakukannya:
rsync
atauBacula
. Di sana Anda telah menguji dan (mudah-mudahan) stabil, perangkat lunak besar yang dapat dikustomisasi untuk penyebaran besar dan dapat digunakan bahkan jika Anda beralih dari ZFSsend/recv
. Ini bisa berupa solusi Anda sendiri, skrip atau skrip lanjutan dari berbagai yang ada di Github et al., Atau lebih banyak alat kaya fitur seperti Sanoid atau ZnapZend (kirim / terima dengan dukungan mbuffer dan rencana penyimpanan). Dalam hal ini Anda kemungkinan besar tidak akan menemukan solusi besar, "perusahaan" (dalam arti negatif), tetapi alat yang hanya melakukan tugas tunggal dan dapat dikombinasikan dengan alat lain untuk memenuhi pengaturan spesifik Anda.Secara umum, saya hanya akan mempercayai alat yang kode sumbernya tersedia, dan saya akan membuatnya sesederhana mungkin. Jika menggunakan
send/recv
, Anda tidak perlu banyak mengelola, Anda hanya perlu menghapus snapshot n-1 di sisi lokal ketika transmisi dan pembuatan snapshot n di sisi remote berhasil.Anda dapat membagi transportasi Anda dengan cara apa pun yang Anda suka, bahkan bisa async (snapshot tidak harus diterima segera), jika Anda hanya menjaga aturan besi bahwa Anda hanya dapat mengirim perbedaan antara snapshot lokal saat ini / baru dan lokal sebelumnya , dan bahwa snapshot lokal sebelumnya adalah yang terbaru di sisi jarak jauh (sampai cadangan selesai dan semuanya diatur ulang).
Sekarang saya memikirkannya, Anda mungkin bisa menyandikannya dalam mesin negara dan kemudian memastikan bahwa tidak ada kasing tak terduga yang bisa lolos.
sumber
rsync
solusi berbasis-skala akan terus-menerus mereplikasi filesystem skala perusahaan besar. Perubahan bisa terjadi lebih cepat daripada yangrsync
bisa menemukannya.