Diese Frage ist kürzlich im Rahmen eines Sicherungsszenario aufgetreten und soll hier kurz in Form einiger Terminalabfragen und -ausgaben erläutert werden.
Ausgangssituation
- ZFS Version 5
- Deduplication deaktiviert
# zfs get dedup stash/install
NAME PROPERTY VALUE SOURCE
stash/install dedup off default
# zfs get version stash/install
NAME PROPERTY VALUE SOURCE
stash/install version 5 -
Test 1: Lokales Umbenennen einer Datei
Eine Datei wird lediglich lokal umbenannt.
# Snapshot erstellen
# zfs snap stash/install@before_rename
# Snapshot anzeigen
# zfs list -t snapshot | grep -E 'NAME|before_rename'
NAME USED AVAIL REFER MOUNTPOINT
stash/install@before_rename 0 - 68.1G -
# Datei verschieben (= umbenennen)
# ls -ahl archlinux-2013.04.01-dual.iso
-rw-rw-r-- 1 g g 506M Apr 23 2013 archlinux-2013.04.01-dual.iso
# mv archlinux-2013.04.01-dual.iso RENAMED_x-2013.04.01-dual.iso
# Snapshot erstellen
# zfs snap stash/install@after_rename
# zfs list -t snapshot | grep -E 'NAME|rename'
NAME USED AVAIL REFER MOUNTPOINT
stash/install@before_rename 0 - 68.1G -
stash/install@after_rename 0 - 68.1G -
Ergebnis: Snapshotgröße bleibt unberührt.
Test 2: Löschen und Wiedereinkopieren über Netzwerk
Eine Datei wird lokal gelöscht und über das Netzwerk (CIFS) wiedereinkopiert.
Dieser Anwendungsfall ist gängig, wenn ZFS als Ziel-Dateisystem für regelmäßige Sicherungen von anderen Netzwerkgeräten eingesetzt wird.
# rm RENAMED_archlinux-2013.04.01-dual.iso
# [an dieser Stelle wurde via Netzwerk einkopiert]
# ls -hal archlinux-2013.04.01-dual.iso
-rw------- 1 g g 506M Apr 23 2013 archlinux-2013.04.01-dual.iso
# Snapshot erstellen
# zfs snap stash/install@after_recreation_via_network
# zfs list -t snapshot | grep -E 'NAME|before|after'
NAME USED AVAIL REFER MOUNTPOINT
stash/install@before_rename 0 - 68.1G -
stash/install@after_rename 163K - 68.1G -
stash/install@after_recreation_via_network 0 - 68.1G -
Ergebnis: Snapshotgröße wächst mit 163K minimal an, anstatt den benötigten Speicherplatz der Datei erneut zu verbrauchen.