Schlagwort-Archiv: freebsd

Guide: Cleaning up ZFS-Snapshots

Starting a guide-section for problems i encountered. For me to remember and for others to find.

When using a automated backup mechanism for ZFS-snapshots it can get a) very messy and b) when moving lots of files crowed in terms of diskspace.

One solution is to delete some of them. Let’s assume you do not need any of them anymore there are various ways to get rid of them.


#!/bin/bash
for snapshot in `zfs list -H -t snapshot | cut -f 1`
do
zfs destroy $snapshot
done

Works, but a bit plain.

next up: the oneliner


zfs list -H -t snapshot | cut -f 1 | tr '\n' ','| xargs zfs destroy

(-H removes the heading from the output which is needed for scripts, cut -f 1 takes the first chunk,tr takes the newline and replaces it with a comma, xargs feeds zfs destroy with the generated list)

zfs list -t snapshot -H | cut -f 1 | xargs -n 1 zfs destroy -v

(same as above, except here we are not substituting the newline with a comma using tr, but telling xargs to give one line at a time as a argument to zfs destroy.)

finally: RTFM (man zfs)
you can define a range of snapshots with the %-sign.

zfs destroy -v tank@fresh%current

works fine, but if you want to clean them all out you can do a single %-sign and get them all.

zfs destroy -v tank@%

and be done with it. although there seems to be a problem if there are dependencies on the snapshots. i keep getting a clean -vn output with snapshots but when removing the -n i get real zfs-filesystems that want to be deleted and unmounted first. stick to the oneliner for now.

Hint: use zfs destroy -nv for a test-run to check your selection (-n for a dry run and -v for verbose output). use -r for recursive deletion, -R for recusive deletion of snapshots with dependencies.

Ein Lobgesang auf Datensicherheit

Ich bin seit geraumer Zeit großer Fan von FreeBSD, zuerst wegen der Stabilität und jetzt auch wegen ZFS. Folgende Meldung meines Servers nachdem ich eine von mehreren Festplatten rausgerupft entfernt und danach mit dem Pool weitergearbeitet habe. Damals mit mdadm und lvm unter Gentoo hat sowas deutlich mehr Schmerzen verursacht.

~ $ zpool status
pool: zroot
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Wed Feb 12 19:18:14 2014
312G scanned out of 1.67T at 237M/s, 1h40m to go
104G resilvered, 18.21% done

Hatte ich schon erwähnt, dass ich die Wiederherstellung nicht mal selbst starten musste sonder alles automatisch passierte? Hach, ZFS!

Und hatte ich schon die checksums, snapshot, dedup … Hach!

FreeBSD 10 auf raidz1-Pool

Habe mich eine Weile geärgert, aber gerade den Fehler gefunden. Ein frisches FreeBSD-10, per USB-Stick auf drei leeren Platten in einem raidz1 und GPT  installiert, bootet nicht. Erst dachte ich , dass es an meinem Motherboard (Asus Z87-A (C2)) liegt, das kann jedoch GPT. Der Fehler sitzt im Installer von FreeBSD, der es versäumt nach dem Anlegen des Pools eine aktive Platte zu setzen.

gpart set -a active adaX

Und alles ist gut.