GNU/Linux >> Belajar Linux >  >> Linux

Sinkronkan snapshot LVM ke server cadangan

Solusi 1:

Meskipun ada tambalan 'perangkat tulis' dan 'perangkat salin' untuk RSync, tambalan tersebut hanya bekerja dengan baik pada gambar kecil (1-2GB). RSync akan menghabiskan waktu lama mencari-cari blok yang cocok pada gambar yang lebih besar dan hampir tidak berguna untuk perangkat/file berukuran 40 GB atau lebih besar.

Kami menggunakan yang berikut untuk melakukan perbandingan per 1MB checksum dan kemudian cukup menyalin konten jika tidak cocok. Kami menggunakan ini untuk mencadangkan server pada host virtual di AS ke sistem cadangan di Inggris, melalui internet publik. Sangat sedikit aktivitas CPU dan kinerja cuplikan yang dicapai hanya setelah jam kerja:

Buat cuplikan:

lvcreate -i 2 -L 25G /dev/vg_kvm/company-exchange -n company-exchange-snap1

export dev1='/dev/mapper/vg_kvm-company--exchange--snap1';
export dev2='/dev/mapper/vg_kvm-company--exchange';
export remote='[email protected]';

Penyemaian awal:

dd if=$dev1 bs=100M | gzip -c -9 | ssh -i /root/.ssh/rsync_rsa $remote "gzip -dc | dd of=$dev2"

Pencadangan tambahan setiap malam (hanya mengirim blok yang diubah):

ssh -i /root/.ssh/rsync_rsa $remote "
  perl -'MDigest::MD5 md5' -ne 'BEGIN{\$/=\1024};print md5(\$_)' $dev2 | lzop -c" |
  lzop -dc | perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
    read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 | lzop -c |
ssh -i /root/.ssh/rsync_rsa $remote "lzop -dc |
  perl -ne 'BEGIN{\$/=\1} if (\$_ eq\"s\") {\$s++} else {if (\$s) {
    seek STDOUT,\$s*1024,1; \$s=0}; read ARGV,\$buf,1024; print \$buf}' 1<> $dev2"

Hapus cuplikan:

lvremove -f company-exchange-snap1

Solusi 2:

Rsync standar tidak memiliki fitur ini, tetapi ada tambalan untuknya di rsync-patches tarball (copy-devices.diff) yang dapat diunduh dari http://rsync.samba.org/ftp/rsync/Setelah menerapkan dan mengkompilasi ulang , Anda dapat melakukan rsync perangkat dengan opsi --copy-devices.

Solusi 3:

Orang-orang yang tertarik melakukan ini secara khusus dengan snapshot LVM mungkin menyukai alat lvmsync saya, yang membaca daftar blok yang diubah dalam snapshot dan hanya mengirimkan perubahan tersebut.

Solusi 4:

Lihat Proyek Penyimpanan Zumastor Linux yang mengimplementasikan pencadangan "snapshot" menggunakan biner "rsync" melalui alat ddsnap.

Dari halaman manual:

ddsnap menyediakan replikasi perangkat blok dengan fasilitas snapshot level blok yang mampu menahan beberapa snapshot simultan secara efisien. ddsnap dapat membuat daftar potongan snapshot yang berbeda di antara dua snapshot, kemudian mengirimkan perbedaan tersebut melalui kabel. Di server downstream, tulis data yang diperbarui ke perangkat blok snapshot.

Solusi 5:

Ada skrip python bernama blocksync yang merupakan cara sederhana untuk menyinkronkan dua perangkat blok melalui jaringan melalui ssh, hanya mentransfer perubahan.

  • Salin blocksync.py ke direktori home di host jarak jauh
  • Pastikan pengguna jarak jauh Anda bisa sudo atau melakukan root sendiri
  • Pastikan pengguna lokal Anda (root?) dapat membaca perangkat sumber &ssh ke host jarak jauh
  • Panggil:python blocksync.py /dev/source [email protected] /dev/dest

Saya baru-baru ini meretasnya untuk membersihkannya dan mengubahnya untuk menggunakan algoritme checksum cepat yang sama dengan rsync (Adler-32).


Linux
  1. Cara Membuat Cadangan

  2. Sinkronkan Waktu Server Linux dengan Server Waktu Jaringan

  3. Cara membuat snapshot volume tipis LVM menggunakan perintah snapper

  1. Menggunakan snapshot LVM untuk klon mesin virtual KVM

  2. Apakah ini cara kerja snapshot LVM?

  3. Komit atau kembalikan snapshot Linux LVM?

  1. Membuat dan Mengelola Snapshot

  2. Bersiaplah untuk memigrasi server Windows

  3. Bagaimana cara menyimpan atau menjatuhkan snapshot LVM?