Dateisysteme
BTRFS
Davon ausgehend, dass wir das System wie zuvor dokumentiert mit BTRFS formatiert haben:
sudo rm -rf /var/lib/docker
# Create subvolumes
sudo btrfs subvolume create /var/lib/docker
sudo btrfs subvolume create /data
sudo chown -R handtrixxx: /data
sudo btrfs subvolume list /
Snapshots konfigurieren mit sudo crontab -e:
# Daily btrfs snapshots at 3:15
15 1 * * * btrfs subvolume snapshot -r /var/lib/docker /var/lib/docker-snap-$(date +\%F)
15 1 * * * btrfs subvolume snapshot -r /data /data-snap-$(date +\%F)
# Cleanup older than 14 days at 3:45
45 1 * * * find / -maxdepth 1 -name "docker-snap-*" -type d -mtime +14 -exec btrfs subvolume delete {} \;
45 1 * * * find / -maxdepth 1 -name "data-snap-*" -type d -mtime +14 -exec btrfs subvolume delete {} \;
ZFS
ZFS kommt mit den meisten Betriebssysteme nicht mit, hat aber eine sehr gute Kompatibilität, z. B. zu Ubuntu.
Um OpenZFS zu installieren:
sudo apt-get install zfsutils-linux
ZFS bringt eigene Fähigkeiten mit, um ein Software-RAID zu definieren – das also direkt mit ZFS machen.
lsblk ausführen, um verfügbare disks und deren Basiskonfiguration zu zeigen:
handtrixxx@handtrixxx / $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 32G 0 part [SWAP]
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 920.9G 0 part /
sdb 8:16 0 7.3T 0 disk
sdc 8:32 0 7.3T 0 disk
Spiegelnden ZFS-Pool anlegen:
sudo zpool create zfsdata mirror /dev/sdb /dev/sdc
sudo zpool status zfsdata
Datasets anlegen:
sudo zfs create zfsdata/apps
sudo zfs create zfsdata/backup
sudo zfs create zfsdata/downloads
sudo zfs create zfsdata/media
sudo zfs create zfsdata/sources
sudo zfs create zfsdata/temp
sudo chown -R handtrixxx: /zfsdata/apps
sudo chown -R handtrixxx: /zfsdata/backup
sudo chown -R handtrixxx: /zfsdata/downloads
sudo chown -R handtrixxx: /zfsdata/media
sudo chown -R handtrixxx: /zfsdata/sources
sudo chown -R handtrixxx: /zfsdata/temp
Job für Snapshots anlegen durch Ausführen von sudo crontab -e:
0 3 * * * zfs snapshot -r zfsdata@daily-$(date +\%F)
30 3 * * * zfs list -t snapshot -o name,creation -Hp | awk -v cutoff=$(date -d '14 days ago' +\%s) '$2 < cutoff {print $1}' | xargs -r -n1 zfs destroy
Verifizieren:
sudo zfs list -t snapshot
ZFS-Parameter rekursiv setzen:
zfs get compression zfsdata
sudo zfs set atime=off zfsdata