ZFS Snapshots

Sind sie nicht? Kannst du mich kurz aufklaeren, da ich das derzeit so backupe. Gibt es da eine andere Variante von ZFS?
 
Snapshots sind die Grundlage um mit ZFS konsistente Backups zu implementiern. Die Snapshots können mittels zfs send | ssh zfs recv auf einen entfernten Rechner gesichert werden.
 
Ok, Danke der Aufklaerung ;-)

Ich habe da noch zwei Fragen bzgl. der snapshots:

+ Ist es mit den snapshots so:
Wenn ich einen snapshot erstelle, dann nimmt er erstmal keinen Speicherplatz ein. Nur wenn ich das Verzeichnis wovon ich den snapshot erstellt habe aendere, dann bekommt der snapshot genau die Dateien/Daten aus dem Originalverzeichnis vor der Aenderung. Also inkrementell sozusagen. Bitte korregiert mich hier, oder sagt kurz bescheid, ob ich hier richtig liege

+ Die snapshots sollten doch so wie ich im Internet gesehen habe mit
Code:
zfs list -r
sichtbar sein, allerdings werden diese bei mir nicht angezeigt, obwohl der ordner ./.zfs In dem Verzeichnis, in dem ich den snapshot erstellt hatte vorhanden ist. Ist dieses feature nicht in FreeBSD ZFS enthalten?

@Mod, koennten wir bitte ab Beitrag #8 das ganze in einen neuen Thread "ZFS Snapshots" packen?
 
Zu 1: ZFS ist ein "Copy on Write" Dateisystem, d.h. wenn Daten aktualisiert werden, schreibt er sie erst in eine neue Stelle in den Pool (kopiert sie also) und dereferenziert anschließend die alten Daten, wodurch sie nicht mehr zugreifbar sind. Bei einem Snapshot werden die alten Daten nur für das Dataset dereferenziert, aber nicht für die zugehörigen Snapshots, sie bleiben für diese also vorhanden. Du hast also völlig recht, der Snapshot beinhaltet nur die Daten, die im zugehörigen Dataset geändert wurden, er wächst mit jeder Änderung an dem "inkrementell".

Zu 2: "zfs list -r" zeigt dir nur Datasets an. Du musst ihm sagen, dass du Snapshots sehen willst: "zfs list -t snapshot". Das war früher mal anders, aber wurde irgendwann wegen Übersichtlichkeit geändert.
 
Nein. Die Kopieroperation liest ja erst alle Blöcke, schreibt sie dann wieder aus. Unabhängig des dem zugrundeliegenden Dateisystems. Aus Sicht von ZFS sind es also nur Leseoperationen, gefolgt von Schreiboperationen. Für jede Schreiboperation schaut ZFS dann in seinen Deduplikationstabellen nach, findet die bereits vorhandenen Daten und setzt eine Referenz. DIe Anzahl der Leseoperationen bleibt also gleich, aber es wird weniger geschrieben. Daher wird die Operation schneller, aber nicht instantan.
 
Ausprobiert habe ich das zwar noch nicht, aber aus dem Bauch heraus müßte es eine elegante Lösung sein, einen ZFS-Snapshot zu machen, diesen über altroot in ein Verzeichnis zu mounten und dieses dann per irgendeinem Backupscript auf ein Sicherungsmedium zu packen ... Amanda *plicity und was es alles gibt.
Der Snapshot müßte konsistent und unveränderlich sein, was ihn ein ideale Backupgrundlage sein läßt.
 
peterle: so kompilziert brauchst das gar nicht zu machen. mit zfs mount kannst den snapshot einfach irgendwo wieder einbinden, die inhalte sichern und anschließend kannst ihn mit zfs destroy auch wieder löschen. wir sichern auf diese art und weise unsere redis-server. falls du interesse hast, kann ich das skript hier auch mal posten.
 
Ausprobiert habe ich das zwar noch nicht, aber aus dem Bauch heraus müßte es eine elegante Lösung sein, einen ZFS-Snapshot zu machen, diesen über altroot in ein Verzeichnis zu mounten und dieses dann per irgendeinem Backupscript auf ein Sicherungsmedium zu packen ... Amanda *plicity und was es alles gibt.
Der Snapshot müßte konsistent und unveränderlich sein, was ihn ein ideale Backupgrundlage sein läßt.


genau das kannst du im uebrigen mit bacula und dessen client machen

es gibt dort in der config die moeglichkeit dinge vor und nach dem backup
zu machen , perfekt um einen snap zu erstellen , mounten dann sicher bacula
danach snap loeschen.

holger
 
Code:
#!/usr/local/bin/bash

TS=$(date +"%Y%m%d%H%M%S")
MNTDIR=tank/bkup
ZFSVOL=tank
DSTDIR=/tank/zfs_bkup

### Clean up Destination Directory
cd $DSTDIR && rm -rf *

### Create Snapshot
/sbin/zfs snapshot $ZFSVOL@$TS

### Clone Snapshot
/sbin/zfs clone $ZFSVOL@$TS $MNTDIR

### Copy Snapshot Content
cp -a /$MNTDIR/* $DSTDIR

### Cleanup Snapshot
/sbin/zfs destroy $MNTDIR
/sbin/zfs destroy $ZFSVOL@$TS

natürlich kann man das skript auch splitten und zwischendrin bacula die sicherung einsammeln lassen.
 
Ist zwar offtopic, aber es werden nirgends die Fehlercodes überprüft, nicht gerade gut für ein Backupskript.

Rob

nunja, es ist verbesserungswürdig und könnte auch ein paar ausgaben mehr erzeugen und diese per mail versenden ;)

es ging mir auch eher darum, die zfs-syntax zu veranschaulichen
 
@makenoob: Warum genau clonest du denn da? Du könntest den Snapshot doch direkt ro-mounten für den Zweck, oder nicht?
 
Zurück
Oben