Utilizzo di znapzend per snapshot automtici locali e remoti di filesystemz ZFS
Jump to navigation
Jump to search
Introduzione
- ZnapZend è un applicativo perl che gestisce la pianificazione ed esecuzione di snapshot periodici di filesystem ZFS. Consente di mantenere uno storico sia in locale, che di inviare gli snapshot locali su altri pool locali o su server remoti raggiingibili via ssh.
Installazione
Dai pacchetti
- Per debian jessie c'è il package già fatto:
https://github.com/Gregy/znapzend-debian/releases
- Caricarlo nei propri repository e poi installarlo:
sudo apt-get install znapzend
- Oppure installarlo localmente
sudo dpkg -i znapzend_0.17.0-1_amd64.deb
Dai Sorgenti
sudo apt-get install ca-certificates mbuffer cd /tmp wget https://github.com/oetiker/znapzend/releases/download/v0.15.3/znapzend-0.15.3.tar.gz tar zxvf znapzend-0.15.3.tar.gz cd znapzend-0.15.3 ./configure --prefix=/opt/znapzend-0.15.3 make sudo make install for x in /opt/znapzend-0.15.3/bin/*; do sudo ln -s $x /usr/local/bin; done sudo mkdir -p /usr/local/share/man/man1; for x in /opt/znapzend-0.15.3/share/man/man1/*; do sudo ln -s $x /usr/local/share/man/man1; done
Configurazione
Impostazione dei soli snapshot locali
- Impostare
sudo znapzendzetup create --recursive --tsformat='%Y-%m-%d-%H%M%S' SRC '1d=>5min,7d=>15min,30d=>1h,90d=>1d' DATA/data01
- Testare. NON ESEGUIRE SENZA --NOACTION, altrimenti il primo trasferimento srà uno snapshot non valido:
sudo znapzend --debug --noaction --runonce=DATA/data01
- Avviare i daemon:
sudo systemctl enable znapzend.service sudo systemctl start znapzend.service
Impostazione con server remoto
Predisposizione server remoto di backup
- Sul server remoto installare i pacchetti necessari al collegamento:
sudo apt-get install mbuffer
- Sul server remoto, preparare il pool o dataset che accoglierà gli snapshot:
sudo zpool create BACKUP /dev/whatever sudo zfs set dedup=on BACKUP sudo zfs set compression=on BACKUP sudo zfs create BACKUP/kinsi-home
- Impostare l'accesso ssh come root dal client al server
- Sul client, connettersi la prima volta come root al server remoto
- Verificare che la connessione ssh support arcfrour:
sudo /usr/bin/ssh -Q cipher quantum.diesis.priv | paste -d , -s | grep arcfour
- Se non lo è, abilitarla (Mitchel Humpherys :: Enable arcfour and Other Fast Ciphers on Recent Versions of OpenSSH)
- Sul client installare mbuffer
sudo apt-get install mbuffer
- Sul client modificare il backup plan per la SRC data/home appena utilizzata (è possibile cambiare anche i parametri della SRC):
sudo znapzendzetup \
edit \
--mbuffer=$(which mbuffer):33332 \
--recursive \
--tsformat='%Y-%m-%d-%H%M%S' \
SRC \
DATA/home \
DST:isep \
'1day=>15minutes,7days=>30minutes,30days=>2hours,90days=>1day,1year=>1week,10years=>1month' \
root@isep.rvmgroup.local:DATA/znapzend-emip-home
*** backup plan: data/home *** dst_isep = root@quantum.diesis.priv:BACKUP/kinsi-home dst_isep_plan = 1day=>15minutes,7days=>30minutes,30days=>2hours,90days=>1day,1year=>1week,10years=>1month enabled = on mbuffer = /usr/bin/mbuffer:33333 mbuffer_size = 1G post_znap_cmd = off pre_znap_cmd = off recursive = on src = data/home src_plan = 2days=>15minutes,7days=>4hours,30days=>1day tsformat = %Y-%m-%d-%H%M%S Do you want to save this backup set [y/N]? y NOTE: if you have modified your configuration, send a HUP signal (pkill -HUP znapzend) to your znapzend daemon for it to notice the change.
- Testare:
sudo znapzend --noaction --debug --runonce=data/home
[Sat Mar 5 17:39:12 2016] [info] znapzend (PID=6599) starting up ... [Sat Mar 5 17:39:12 2016] [info] refreshing backup plans... [Sat Mar 5 17:39:14 2016] [info] found a valid backup plan for pool0/diska... [Sat Mar 5 17:39:14 2016] [info] znapzend (PID=6599) initialized -- resuming normal operations. [Sat Mar 5 17:39:14 2016] [debug] snapshot worker for pool0/diska spawned (6603) [Sat Mar 5 17:39:14 2016] [info] creating recursive snapshot on pool0/diska # zfs snapshot -r pool0/diska@2016-03-05-173914 [Sat Mar 5 17:39:14 2016] [debug] snapshot worker for pool0/diska done (6603) [Sat Mar 5 17:39:14 2016] [debug] send/receive worker for pool0/diska spawned (6604) [Sat Mar 5 17:39:14 2016] [info] starting work on backupSet pool0/diska # zfs list -H -r -o name -t filesystem,volume pool0/diska [Sat Mar 5 17:39:14 2016] [debug] sending snapshots from pool0/diska to root@rvmstor01.rvmgroup.local:backup/diska # zfs list -H -o name -t snapshot -s creation -d 1 pool0/diska # ssh -o Compression=yes -o CompressionLevel=1 -o Cipher=arcfour -o batchMode=yes -o ConnectTimeout=30 root@rvmstor01.rvmgroup.local zfs list -H -o name -t snapshot -s creation -d 1 backup/diska # ssh -o Compression=yes -o CompressionLevel=1 -o Cipher=arcfour -o batchMode=yes -o ConnectTimeout=30 root@rvmstor01.rvmgroup.local zfs list -H -o name -t snapshot -s creation -d 1 backup/diska [Sat Mar 5 17:39:21 2016] [debug] cleaning up snapshots on root@rvmstor01.rvmgroup.local:backup/diska # zfs list -H -o name -t snapshot -s creation -d 1 pool0/diska [Sat Mar 5 17:39:21 2016] [debug] cleaning up snapshots on pool0/diska [Sat Mar 5 17:39:21 2016] [info] done with backupset pool0/diska in 7 seconds [Sat Mar 5 17:39:21 2016] [debug] send/receive worker for pool0/diska done (6604)
- Attendere
- Verificare il transfer rate: dovrebbe saturare gigabit.
- Se non si usa mbuffer, il transfer è il peggiore. Se lo si usa migliora è più costante. Se lo si usa con la porta (:33333) allora ssh è usato solo per lanciare l'mbuffer ricevente, e satura gigabit. Inoltre, non carica SSH. Naturalmente mbuffer diretto NON comprime, cosa che invec fa SSH.
- Se si hanno problemi di crash o stallo con mbuffer, disattivarlo, con
sudo znapzendzetup edit --mbuffer=none DST:quantum
- Rieseguire la sincronizzazione: dovrebbe copiare SOLO i delta, perchè zfs send usa il flag -I
Attivazione daemon
- Copiare il file per attivarlo con systemd:
sudo cp init/znapzend.service /etc/systemd/system/
- Attivare ed avviare il daemon:
sudo systemctl enable znapzend.service sudo systemctl start znapzend.service
- Monitorarne l'esecuzione:
sudo tail -f /var/log/syslog | grep znap
Esempi di configurazione
- Conservare 24 snapshot orari al giorno in locale, e storicizzarli sulla destinazione in un altro pool locale:
znapzendzetup create --recursive --tsformat='%Y-%m-%d-%H%M%S' SRC '1d=>1h' DISKA/diska
*** backup plan: DISKA/diska *** enabled = on mbuffer = off mbuffer_size = 1G post_znap_cmd = off pre_znap_cmd = off recursive = on src = DISKA/diska src_plan = 1day=>1hour tsformat = %Y-%m-%d-%H%M%S
znapzendzetup edit SRC DISKA/diska DST:diskb '7d=>1h,30d=>4h,90d=>1d,1y=>1w,10y=>1month' DISKB/snapshots/quantum/diska
*** backup plan: DISKA/diska *** dst_diskb = DISKB/snapshots/quantum/diska dst_diskb_plan = 7days=>1hour,30days=>4hours,90days=>1day,1year=>1week,10years=>1month enabled = on mbuffer = off mbuffer_size = 1G post_znap_cmd = off pre_znap_cmd = off recursive = on src = DISKA/diska src_plan = 1day=>1hour
Modifica plan degli snapshot locali
znapzendzetup edit SRC "7days=>15minutes,30days=>1hour,90days=>1day" DATA/users
Eliminazione di una destinazione remota
znapzenzetup delete --dst=isep DATA/users
Installazione GUI web per il browsing
- Installazione:
wget https://github.com/j-keck/zfs-snap-diff/releases/download/0.0.8/zfs-snap-diff-0.0.8-linux-amd64.zip unzip zfs-snap-diff-0.0.8-linux-amd64.zip
- Eseguire:
sudo ./zfs-snap-diff -a POOLNAME/DATASETNAME
- Consultare via:
http://ip.address:12345