Za pomocą zfs send oraz zfs receive (zfs recv) można dość szybko wykonać backup całej partycji ZFSowej. Podstawą jest wykonania snapshota.
Skrypt
# wykonanie snaphota wraz ze wszystkimi "dziećmi"
zfs snapshot -r storage/imap@pelny
# wyslanie snapshota do pliku GZip
zfs send -Rv storage/imap@pelny | gzip -c > /opt/_imap_full.zfs.gz
# rozpakowanie "snapshota" w miejscu docelowym:
gunzip -c /opt/_imap_full.zfs.gz | zfs recv -vdeusF sda
Uprawnienia dla zwykłego użytkownika
Można również wykonać zfs send oraz zfs receive poprzez SSH. Trzeba tylko upoważnić użytkownika do wykonywania operacji na partycji ZFS:
zfs allow -u <user> create,receive,rename,mount,share,send sda/backup/imap
Wykorzystanie mbuffer
Dzięki wykorzystaniu mbuffer, to można całość spokojnie przesyłać przez sieć:
# dla sieci Internet
export _MBUF="-s 256k -m 512M"
# dla sieci LAN
export _MBUF="-s 256k -m 1G"
# send:
# -R r/ownie/z wszystkie ew. dzieci danego zfs-a
#
# receive
# -d u/zyj ca/lego snapshota, ale bez pierwszego cz/lonu (bez nazwy pool-i)
# -e u/zyj tylko ostatniego cz/lonu snapshota (jak w opisie dla -d)
# -u nie montuj automatycznie
# -s mo/zliwo/s/c wznowienia wysy/lania, gdyby wyst/api/ly b/l/edy
# -F wymu/s rollback przed uruchomieniem zfs recv
#
zfs send -R storage/imap@pelny | mbuffer $_MBUF 2>/dev/null | ssh -c aes128-ctr __user__@server2 "mbuffer $_MBUF | zfs receive -deusF sda/backup/imap"
UWAGA
Jeżeli ssh wymaga podania hasła, to komunikat w celu jego wpisania zostanie przykryty przez komunikaty mbuffer o przesyłaniu danych z prędkością 0/0. Tak więc najlepiej jest wykonać kopiowanie z wykorzystaniem kluczy (bez hasła).
Algorytmy szyfrowania SSH
Dodanie odpowiedniego algorytmu szyfrowania (patrz odnośniki poniżej) znacznie przyspieszy przesyłanie dużego backupu. Niemniej jest to algorytm, który trzeba dopisać do konfiguracji demona OpenSSH:
Ciphers +aes256-gcm@openssh.com
Oczywiście po zmianach należy wykonać restart demona:
service openssh restart
Jeżeli serwer (procesor) wspiera obsługę AESNI, to warto wgrać stosowny moduł:
kldload aesni
Gdy trzeba dołączyć inną (pod)stronę https://moinmo.in/HelpOnMacros/Include https://moinmo.in/HelpOnParsers
Nieprawidłowe argumenty "pagename, heading, level, from="regex", to="regex", sort=ascending|descending, items=n, skipitems=n, titlesonly, editlink"!