GNU/Linux >> Znalost Linux >  >> Linux

Synchronizujte snímky LVM se záložním serverem

Řešení 1:

Přestože pro RSync existují záplaty 'write-device' a 'copy-device', fungují dobře pouze na malých obrázcích (1-2 GB). RSync stráví věky hledáním odpovídajících bloků na větších obrázcích a 40GB nebo větší zařízení/soubory je téměř k ničemu.

Následující používáme k provedení porovnání kontrolního součtu na 1 MB a poté jednoduše zkopírujeme obsah, pokud se neshoduje. Používáme to k zálohování serverů na virtuálním hostiteli v USA do záložního systému ve Velké Británii přes veřejný internet. Velmi malá aktivita procesoru a snížení výkonu snímku je až po hodinách:

Vytvořit snímek:

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]';

Počáteční nasazení:

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

Přírůstková noční záloha (odesílá pouze změněné bloky):

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"

Odebrat snímek:

lvremove -f company-exchange-snap1

Řešení 2:

Standardní rsync tuto funkci postrádá, ale existuje pro ni záplata v tarballu rsync-patches (copy-devices.diff), kterou lze stáhnout z http://rsync.samba.org/ftp/rsync/After appling and recompiling , můžete rsyncovat zařízení pomocí volby --copy-devices.

Řešení 3:

Lidem, kteří se zajímají o to konkrétně se snímky LVM, by se mohl líbit můj nástroj lvmsync, který načte seznam změněných bloků ve snímku a odešle právě tyto změny.

Řešení 4:

Podívejte se na Zumastor Linux Storage Project, který implementuje zálohování „snímek“ pomocí binárního „rsync“ prostřednictvím nástroje ddsnap.

Z manuálové stránky:

ddsnap poskytuje replikaci blokového zařízení díky možnosti vytváření snímků na úrovni bloku, která je schopna efektivně uchovávat více současných snímků. ddsnap dokáže vygenerovat seznam bloků snímků, které se mezi dvěma snímky liší, a poté tento rozdíl odeslat po drátě. Na následném serveru zapište aktualizovaná data do blokového zařízení se snímkem.

Řešení 5:

Existuje python skript nazvaný blockync, což je jednoduchý způsob, jak synchronizovat dvě bloková zařízení přes síť přes ssh, pouze přenést změny.

  • Zkopírujte blockync.py do domovského adresáře na vzdáleném hostiteli
  • Ujistěte se, že váš vzdálený uživatel může buď sudo, nebo je sám root
  • Ujistěte se, že váš místní uživatel (root?) může číst zdrojové zařízení a ssh vzdálenému hostiteli
  • Vyvolat:python blocksync.py /dev/source [email protected] /dev/dest

Nedávno jsem to hacknul, abych to vyčistil a změnil tak, aby používal stejný algoritmus rychlého kontrolního součtu jako rsync (Adler-32).


Linux
  1. Vytváření a správa snímků

  2. Jak vytvořit snímek tenkých svazků LVM pomocí příkazu snapper

  3. Příkazy LVM selžou s „Nepodařilo se načíst konfigurační soubor /etc/lvm/lvm.conf“

  1. Jak vytvořit zálohu

  2. Použití snímků LVM pro klony virtuálních strojů KVM

  3. Potvrdit nebo vrátit snímek Linux LVM?

  1. Synchronizujte čas serveru Linux se serverem času sítě

  2. Připravte se na migraci serveru Windows

  3. LVM Snapshot:Zálohování a obnovení oddílu LVM v Linuxu