Zfs

De WikiMar
Salta a la navegació Salta a la cerca

Basic Commands

ZPool All Properties:

zpool get all Z5000LUKS_zfs

Dataset All Properties:

zfs get all Z5000LUKS_zfs
zfs get all Z5000LUKS_zfs/fs

List all commands executed:

zpool history Z5000LUKS_zfs

List pools and status:

zpool status
zpool status -v

List datasets:

zfs list

List all snapshots:

zfs list -t snapshot

Check the compression achieved

zfs get compressratio Z5000LUKS_zfs/fs


Step by step to create a new zfs disk

https://serverfault.com/questions/736805/zfs-on-a-single-external-hdd-drive-setup-tutorial-and-workflow

Find/view drive:

fdisk -l or $ mount

Create pool:

# zpool create -f YOURPOOLNAME /dev/sdX 
zpool create -f Z5000LUKS_zfs2 /dev/mapper/Z5000LUKS

Create filesystem

# zfs create YOURPOOLNAME/YOURNAME
zfs create Z5000LUKS_zfs2/fs

Set features

zfs set compression=on Z5000LUKS_zfs2
zfs set mountpoint=/media/Z5000LUKS_zfs2 Z5000LUKS_zfs2
# zfs set compression=off YOURPOOLNAME/YOURNAME
# zfs set copies=2 YOURPOOLNAME/YOURNAME

Mountpoints

Add new

zfs set mountpoint=/media/Z5000LUKS_zfs2 Z5000LUKS_zfs2/fs

Remove mountpoint

zfs set mountpoint=none Z5000LUKS_zfs2/fs

Encryption

Not yet supported with standard repository

https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/


Auto snapshots

sanoid

sanoid also provides Syncoid

https://www.svennd.be/zfs-snapshots-of-proxmox-using-sanoid/


apt-get install libconfig-inifiles-perl git
cd /opt
git clone https://github.com/jimsalterjrs/sanoid
ln /opt/sanoid/sanoid /usr/sbin/
ln /opt/sanoid/syncoid /usr/sbin/
mkdir -p /etc/sanoid
cp /opt/sanoid/sanoid.conf /etc/sanoid/sanoid.conf
cp /opt/sanoid/sanoid.defaults.conf /etc/sanoid/sanoid.defaults.conf


/etc/sanoid/sanoid.conf

#################### 
# sanoid.conf file # 
####################
[tank/subvol-104-disk-1] 
        use_template = production
############################# 
# templates below this line # 
#############################
[template_production] 
        # store hourly snapshots 36h 
        hourly = 36
        # store 30 days of daily snaps 
        daily = 30
        # store back 6 months of monthly 
        monthly = 6
        # store back 3 yearly (remove manually if to large) 
        yearly = 3
        # create new snapshots 
        autosnap = yes
        # clean old snapshot 
        autoprune = yes

sudo crontab -e

*/5 * * * * /usr/sbin/sanoid --cron

or

0 * * * * /usr/sbin/sanoid --cron

Alternative: zfs-auto-snapshot

For Ubuntu 16.04:

https://romaco.ca/blog/2016/09/04/install-zfs-auto-snapshot-on-ubuntu-16-04-lts/ You can download the Ubuntu 16.04 package here, and install it by running:

wget https://furneaux.ca/w4ca8cqmwx234io/zfs-auto-snapshot-trustyport.deb
dpkg -i zfs-auto-snapshot-trustyport.deb

To avoid too frequently

rm /etc/cron.d/zfs-auto-snapshot
rm /etc/cron.hourly/zfs-auto-snapshot

Or configure frequency for the individual pools https://askubuntu.com/questions/322541/activate-zfs-snapshots

sudo zfs set com.sun:auto-snapshot=true tank/backup
sudo zfs set com.sun:auto-snapshot:monthly=false tank/backup
sudo zfs set com.sun:auto-snapshot:weekly=false tank/backup
sudo zfs set com.sun:auto-snapshot:daily=true tank/backup
sudo zfs set com.sun:auto-snapshot:hourly=false tank/backup
sudo zfs set com.sun:auto-snapshot:frequent=false tank/backup

or disable

sudo zfs set com.sun:auto-snapshot=false tank/tmp

Other Alternatives:

http://wiki.complete.org/ZFSAutoSnapshots
  • simplesnap - a simple and powerful cron-based network snapshot transfer tool by John Goerzen.
    • Has a simple and secure wrapper so unfettered root access isn't needed.
    • Designed to work with zfSnap or other snapshot-making tools on this page.
    • Supports multiple backup sources, targets, and target sets (such as offsite media rotation)
  • zfs-auto-snapshot - a simple cron-based service. Different names for different snapshots, with a simple count of how many to retain. Can exclude based on property.
  • snapxfer, a wrapper around:
    • zfSnap - a flexible snapshot-creation system. Can embed an expiry age in snapshot name, or override from command line.
    • zxfer - a flexible snapshot-transfer system. Can use rsync or zfs snapshots. Used together with another snapshotting system. For remote transfers, requires root ssh authorized_keys or sudo access.
  • zfs-snapshot-rotation-and-backup, a Python library and example scripts that use it. Expects ssh root access to remote.
  • zsnap -- looks flexible and powerful, last commit 5 years ago. Requires Ruby.
  • Suggested on ZFS on Linux mailing list:
    • zetaback - feature-packed. Has a server-side agent to run on systems being backed up. Buggy config parser without sufficient validation on client.
    • zrep - for zfs based replication (possibly remote) of filesystems. Can also be used just for backups. License prohibits public redistribution. Does failover too. Doesn't work on nested datasets. Designed to run once per minute. Same snapshot retention on both sides.
    • zfs-auto-snapshot - as above, for snapshotting

Sync to another machine using syncoid (from sanoid)

syncoid website: https://github.com/jimsalterjrs/sanoid/

info: http://unicolet.blogspot.de/2016/05/from-0-to-zfs-replication-in-5m-with.html

comparative with rsync: https://arstechnica.com/information-technology/2015/12/rsync-net-zfs-replication-to-the-cloud-is-finally-here-and-its-fast/


sudo apt-get install mbuffer lzop pv git

installation explain in section above


Syncoid connecting without root

if it's run without root, syncoid uses sudo automatically

visudo

# Syncoid commands
backup ALL=NOPASSWD: /sbin/zfs get *
backup ALL=NOPASSWD: /sbin/zfs snapshot *
backup ALL=NOPASSWD: /sbin/zfs send *
# backup ALL=NOPASSWD: /sbin/zfs list *
# We only want to destroy snapshots
backup ALL=NOPASSWD: /sbin/zfs destroy *@syncoid_backup*

https://github.com/jimsalterjrs/sanoid/issues/82


Alternative: znapzend

https://github.com/jimsalterjrs/sanoid/issues/102