tips:zfs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tips:zfs [2017/01/31 12:26] – [remote replication] scipiotips:zfs [2023/01/18 11:22] (current) sscipioni
Line 36: Line 36:
 zpool create lxd /dev/sda4 zpool create lxd /dev/sda4
 </code> </code>
 +
 +===== docker =====
 +
 +<code>
 +systemctl stop docker
 +rm -fR /var/lib/docker
 +zfs create -o mountpoint=/var/lib/docker rpool/docker-root
 +zfs create -o mountpoint=/var/lib/docker/volumes rpool/docker-volumes
 +systemctl start docker
 +</code>
 +
 +/etc/docker/daemon.json
 +<code>
 +{
 +  "default-address-pools":
 +  [
 +    {"base":"172.16.0.0/21","size":26}
 +  ],
 +  "storage-driver": "zfs",
 +  "features": {
 +    "buildkit" : true
 +  }
 +}
 +
 +</code>
 +
 +
 ===== libvirt ===== ===== libvirt =====
  
Line 41: Line 68:
 add ZFS pool to libvirt add ZFS pool to libvirt
 <code> <code>
 +# in bionic
 +apt install libvirt-daemon-driver-storage-zfs && systemctl restart libvirtd
 +
 # create zfs filesystem # create zfs filesystem
 zfs create rpool/libvirt zfs create rpool/libvirt
  
-virsh pool-define-as --name zfspool --source-name rpool --type zfs+virsh pool-define-as --name zfspool --source-name rpool/libvirt --type zfs
 virsh pool-start zfspool virsh pool-start zfspool
 virsh pool-autostart zfspool virsh pool-autostart zfspool
Line 59: Line 89:
 </code> </code>
  
 +add volume to instance
 +
 +create file mydevice.xml
 +<code>
 +<disk type='block' device='disk'>
 +      <driver name='qemu' type='raw' cache='none'/>
 +      <source dev='/dev/zvol/rpool/libvirt/juju-controller'/>
 +      <target dev='vda' bus='virtio'/>
 +</disk>
 +</code>
 +
 +add volume
 +<code>
 +virsh attach-device --config juju-controller mydevice.xml
 +</code>
 +
 +===== virtualbox =====
 +
 +create volume
 +<code bash>
 +zfs create -V 50G rpool/win7
 +</code>
 +
 +create vmdk file that point /dev/zvol/rpool/win7 (/opt/vms/win7.vmdk keeps little)
 +<code>
 +VBoxManage internalcommands createrawvmdk -filename /opt/vms/win7.vmdk -rawdisk /dev/zvol/rpool/win7
 +</code>
 +
 +now use /opt/vms/win7.vmdk file as virtual hard disk for virtualbox guest
 ===== tuning ===== ===== tuning =====
  
Line 70: Line 129:
 <code bash> <code bash>
 zpool export rpool zpool export rpool
-zfs import -R /mnt rpool+zpool import -R /mnt rpool 
 + 
 +umount everything inside /mnt 
 zfs mount rpool/ROOT/ubuntu zfs mount rpool/ROOT/ubuntu
  
Line 98: Line 160:
 destination volume cannot be exists destination volume cannot be exists
 <code bash> <code bash>
-zfs snap storage/cimiteriali@snap1 
 zfs send -R storage/cimiteriali@snap1 | pv | ssh zfs1 zfs recv -F -u rpool/cimiteriali zfs send -R storage/cimiteriali@snap1 | pv | ssh zfs1 zfs recv -F -u rpool/cimiteriali
 # zfs destroy storage/cimiteriali@snap1 # zfs destroy storage/cimiteriali@snap1
Line 112: Line 173:
 zfs get volsize,reservation rpool/cimiteriali zfs get volsize,reservation rpool/cimiteriali
 </code> </code>
 +
 +==== syncoid ====
 +
 +  * https://github.com/jimsalterjrs/sanoid
 +
 +<code>
 +apt install pv lzop mbuffer
 +wget https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/syncoid -O /usr/local/bin/syncoid
 +chmod +x /usr/local/bin/syncoid
 +</code>
 +
 +using from server zfs1 (to server zfs2)
 +<code>
 +syncoid rpool/share-os root@zfs2:rpool/share-os
 +</code>
 +===== incremental backup =====
 +
 +consider a FS rpool/test
 +
 +<code bash>
 +FS=rpool/test
 +
 +# make a first snapshot
 +zfs snapshot rpool/test@snap01
 +</code>
 +
 +if files are added to FS used space of FS grow 
 +<code bash>
 +sync && zfs list -t all -r $FS
 +GROW --->rpool/test      200M   138G   200M  /test
 +         rpool/test@01    64K      -   100M  -
 +</code>
 +
 +if files are changed in FS used space of SNAP grow
 +<code bash>
 +sync && zfs list -t all -r $FS
 +         rpool/test      200M   138G   200M  /test
 +GROW --->rpool/test@01   100M      -   100M  -
 +</code>
 +
 +
 +------> CRYPTOLOCKER grows SNAP
 +
 +check crypto locker every day
 +<code bash>
 +LIMIT_MB=100
 +FS=rpool/test
 +
 +USED=$(zfs get -Hp used $FS@01 | cut -f3)
 +if [ $USED -gt $(($LIMIT_MB*1000*1000)) ]; then
 +   echo "CRYPTOLOCKER detected"
 +   
 +fi
 +</code>
 +
 +===== swap =====
 +
 +<code>
 +zfs create -V 4G -b $(getconf PAGESIZE) -o compression=zle \
 +      -o logbias=throughput -o sync=always \
 +      -o primarycache=metadata -o secondarycache=none \
 +      -o com.sun:auto-snapshot=false rpool/swap
 +
 +mkswap -f /dev/zvol/rpool/swap
 +</code>
 +
 +<code>
 +echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab
 +swapon -av
 +</code>
 +
 +
 +
 +
  
  • tips/zfs.1485861978.txt.gz
  • Last modified: 2017/01/31 12:26
  • by scipio