Backup Pool zu Pool

Status
Not open for further replies.

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Hallo Zusammen

Habe in meinem Freenas-Server folgende Festplattenkonfiguration:
- zpool 1: 4*3TB Raid1z
- zpool 2: 4*4TB Raid1z

Nun möchte ich folgendes:
Auf dem zpool 1 befinden sich meine Daten. Diese sollten in regelmässigen Abständen auf dem zpool 2 gesichert werden. Der Sicherungsvorgang sollte automatisch ablaufen. Beim Sichern sollen geänderte und neue Dateien kopiert werden und gelöschte Dateien von zpool 1 auch auf zpool 2 gelöscht werden.

Ist meine Idee möglich?

Gruss und Dank
 

Attachments

  • Übersicht_Storage.JPG
    Übersicht_Storage.JPG
    69.6 KB · Views: 320

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Hey
Habe in der Zwischenzeit den obigen Link studiert, bin aber nicht wirklich weiter gekommen.
Zusätzlich habe ich beim zpool 2 folgende Datasets erstellt:
- Data_Backup
- Pictures_Backup

Folgendes würde ich gerne realisieren:
- Backup sämtlicher Daten von Data zu Data_Backup und Pictures zu Pictures_Backup.
- Beim Backup sollten die nicht mehr vorhandenen Dateien gelöscht werden, neue Dateien kopiert werden und geänderte Dateien aktualisiert werden.

Laut Recherchen über Backups bei Freenas habe ich mehrmals gelesen das die Funktion rsync die richtige wäre. Leider habe ich aber keine Anleitung erhalten, für meine obige Idee, zu realisieren.
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Ich verstehe das Problem nicht. Für ein Backup von zpool1/data nach zpool2/data_backup:

Code:
host1# zfs send zpool1/data@snap1 | ssh host2 zfs recv zpool2/data_backup


Das Dataset data_backup darf noch nicht angelegt sein. Quelle: http://docs.oracle.com/cd/E19253-01/820-2313/gbinw/index.html

Da steht auch, wie man dann nach dem ersten Backup die inkrementellen Backups macht.

Code:
host1# zfs send -i zpool1/data@snap1 zpool1/data@snap2 | ssh host2 zfs recv zpool2/data_backup


erledigt das inkrementelle Backup zwischen snapshot 1 und snapshot 2.
 

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Habe nun die Datasets data_backup sowie pictures_backup gelöscht.

Wenn ich nun den Code:

Code:
host1# zfs send zpool1/data@snap1 | ssh host2 zfs recv zpool2/data_backup


Erhalte ich somit eine Kopie der Daten welche auf dem zpool 1 [NasVolume] sind im zpool 2 [NasVolume2] unter dem Dataset data_backup verstehe ich das korrekt?
Kann ich die kopierten Daten von data_backup, bei einem möglichen Ausfall des zpool 1, durch Windows Shares freigeben zur Verwendung?


Mit dem 2. Code kann ich weitere Backups machen. Kann man den Befehl so ausführen, dass automatisch jede Woche an einem Tag X zur Zeit Y ein Backup gemacht wird?
Wird beim Backup folgendes erfüllt:
- Nur neue Dateien kopiert werden
- Geänderte Dateien aktualisiert werden
- Entfernte Dateien gelöscht werden

Gruss und Dank
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Ja, ja, und ja.

Bei Transfer mit SSH solltest du in einem sicheren Netzwerk mit aes256 arbeiten, also `ssh -c aes256`, damit du mehr Tempo hast. Betrachte diese Schlüsselmethode als unverschlüsselt für alle sicherheitsrelevanten Aspekte.
 
Last edited:

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Habe nun folgendes versucht:
1. Den folgenden Code eingegeben: zfs send zpool1/data@snap1 | ssh host2 zfs recv zpool2/data_backup
==> Meldung: cannot open 'zpool1/data': dataset does not exist
ssh: Could not resolve hostname host2: hostname nor servname provided, or not known

2. Den folgenden Code eingegeben: zfs send NASVolume/data@snap1 | ssh host2 zfs recv NASVolume/data_backup
==> Meldung: cannot open 'NASVolume/data': dataset does not exist
ssh: Could not resolve hostname host2: hostname nor servname provided, or not known
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Du musst die Zeile an deine tatsächlichen Verhältnisse anpassen. Ich sehe in deinem Anhang oben, dass du DATA statt data hast. Dann muss das natürlich auch so rein. Also NASVolume/DATA statt zpool1/data. Ich sehe gerade, dass du alles in einem Rechner hast. Dann reicht natürlich auch
Code:
# zfs send NASVolume/DATA@snap1 | zfs recv NASVolume/DATA_backup


für die Zeile, ssh fällt weg. Du hast ja nur einen host. Da hätte natürlich bei mehreren hosts auch der jeweilige Hostname reingehört. Ich hab hier mehrere Server, da bin ich von mir ausgegangen.

Code:
# zfs send -i NASVolume/DATA@snap1 NASVolume/DATA@snap2 | zfs recv NASVolume/DATA_backup
dann für die inkrementelle Variante.
 

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Irgendwo ist noch ein Hacken drin. Denn ich erhalte folgendes:
# zfs send NASVolume/DATA@snap1 | zfs recv NASVolume/DATA_backup
==>WARNING: could not send NASVolume/DATA@snap1: does not exist
cannot receive: failed to read from stream
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Ah. Du musst vorher auch noch den Snapshot mit
Code:
zfs snapshot NASVolume/DATA@snap1
erstellen, von diesem eingefrorenen Zustand wird dann der Backup gemacht mit dem send/receive. Gib dem am besten einen aussagekräftigen Namen wie snap20160609T122900Z, dann kannst du auch leichter automatisieren.

Code:
date -u +"%Y-%m-%dT%H:%M:%SZ"
gibt dir den letzten Teil. Auf Linux wärs einfach nur date -I...

PS: Periodische Snapshots erstellen und auf einen Remote Server replizieren ist übrigens bereits in FreeNAS angelegt, unter Storage/Periodic Snapshot Tasks und Storage/Periodic Replication Tasks.
 
Last edited:

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Habe nun folgendes erfolgreich gemacht:
1. # zfs snapshot NASVolume/DATA@snap2016
2. # zfs send NASVolume/DATA@snap2016 | zfs recv NASVolume2/DATA_backup

==> Nun sieht meine Storageübersicht wie folgt aus:


==> Snapshotübersicht:


Nun als nächsten Schritt möchte ich, dass das Backup jeweils z.B. am Donnerstag zwischen 03:00 - 05:00 Uhr gemacht wird. Mit den oben genannten Bedingungen:
- Neue Dateien von Data nach Data_Backup kopieren
- Geänderte Dateien bei Data entsprechend in Data_Backup aktualisieren
- Entfernte Dateien bei Data ebenfalls in Data_Backup löschen
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Das passiert vollautomatisch, sobald du jetzt die Zeile mit `zfs send -i` von oben nimmst. Mach ein kurzes Skript daraus und lass das über Tasks/Cron Jobs im GUI zu den gewünschten Zeitabständen laufen. Wenn man 'zfs backup' sucht, sind allein auf github 84 Ergebnisse, die du an deine persönlichen Bedürfnisse anpassen kannst.
 

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Habe nun die obigen Codes auch noch für meine Bilder versucht auszuführen. Habe folgende Codes verwendet:

Code:
# zfs snapshot NASVolume/Pictures@snapPictures


Dieser funktionierte ohne Probleme und der Snapshot wurde erstellt:



Anschliessend versuchte ich den 2. Code um die Daten auf den anderen Pool zu kopieren unter NASVolume2/Pictures_backup:

Code:
# zfs send NASVolume/Pictures@snapPictures | zfs recv NASVolume2
/Pictures_backup


Der Code läuft eine gewisse Zeit in der Shell d.h. ich kann keine weiteren Eingaben mehr tätigen. Nach ca. 12 Stunden, wenn ich mich erneut auf meinen Server einlogge, kann ich in der Shell wieder neue Eingaben tätigen. Die Daten wurden aber nicht kopiert. Die Daten Grösse ist 353 GB. Normalerweise kopiere ich auf das NAS mit ca. 100MB/s. Somit sollte der Vorgang rund 1 Stunde fertig sein.

An was könnte es liegen?
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Du hast keinen empfangendes Dataset benannt, oder sollten Zeile 1 und 2 aneinander hängen?

Code:
zfs send NASVolume/Pictures@snapPictures | zfs recv NASVolume2/Pictures_backup
hätte funktionieren sollen. Da hilft nur, sich die Logdateien anzusehen.
 

fiesta_xr2i

Explorer
Joined
Mar 5, 2015
Messages
65
Zeile 1 und 2 sollten aneinander hängen. Ist nur beim Kopieren in zwei Zeilen gerutscht.

Leider muss ich nachfragen, da ich noch nicht viel Erfahrung habe. Wo finde ich die Logdatei?
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
Das wundert mich jetzt nicht. Der Befehl als solcher musste ja laufen, wenn es mit dem anderen Dataset auch ging. Wenn das wirklich nicht gelaufen wäre, wäre es ein extrem exotischer Fehler gewesen.
 

depasseg

FreeNAS Replicant
Joined
Sep 16, 2014
Messages
2,874
(I used Google translate in Chrome to get the understanding. My apologies for responding in english)

The task you are trying using the CLI is built into FreeNAS GUI. Here are the instructions: http://doc.freenas.org/9.3/freenas_storage.html#replication-tasks

Replication will sync the state of the snapshots, so just make sure the snapshot schedule and retention period meets your needs.
 

emk2203

Guru
Joined
Nov 11, 2012
Messages
573
@depasseg: I think the GUI is only supporting remote systems - OP has a second pool on the same system. From the manual: "A replication task allows you to automate the copy of ZFS snapshots to another system over an encrypted connection." In chapter 8.3.3, troubleshooting of the GUI replication is done with the same CLI commands discussed here, so the advice is not breaking things.

Good advice pointing out that the snapshots are synced, not the dataset.
 

depasseg

FreeNAS Replicant
Joined
Sep 16, 2014
Messages
2,874
Just use 127.0.0.1 (or localhost) as the IP address of the "remote" system. Works for me. :smile:
 
Status
Not open for further replies.
Top