Replication Tasks richtig einstellen?

IndieCoopz

Explorer
Joined
Nov 4, 2022
Messages
50
Hallo Community,

zwecks des einfacheren Verständnisses poste ich hier mal im deutschen Unterforum.

Ich habe eine Frage zum Thema Replikationstasks die ich als Backupfunktion eingerichtet habe. Meines Verständnisses nach erstellt man von seinen Datasets einen Snapshot und repliziert diesen dann z.B. wie in meinem Fall auf eine externe Festplatte zur Datensicherung. Meine Pools sind verschlüsselt.

Bei der Erstreplikation funktioniert auch alles prima, meine Daten mit den entsprechenden Shapshots werden repliziert.
Ich habe einen Schlüssel für meinen Serverpool und einen weiteren für meine externe HDD, welche dann ich für meine Sicherung einhänge und im Replikationstask angebe. Also nicht ein Schlüssel für Server Pool und externe HDD.

Wenn ich nun aber nach ein paar Monaten wieder eine Sicherung anstoßen möchte und meinen Replikationstask starte, erhalte ich eine Fehlermeldung:

Error
No incremental base on dataset 'HDD/Backups' and replication from scratch is not allowed.
ERROR [replication_task__task_1] [zettarepl.replication.run] For task 'task_1' non-recoverable replication error NoIncrementalBaseReplicationError("No incremental base on dataset 'HDD/Backups' and replication from scratch is not allowed")

Replication from scratch ist absichtlich nicht erlaubt, denn ich möchte nicht jedes mal TB an Daten neu kopieren, sondern nur das Delta zwischen dem Snapshot Stand lokal und der auf der externen HDD. Aber leider weiß ich nicht so recht wie ich das machen soll.

Meine Vermutung ist, da ich mit Auto Snapshots arbeite, werden nach diese nach einiger Zeit von meinem Server gelöscht und können somit nicht mehr zwischen dem Stand von lokalen Snapshots und dem alten auf der externen abgeglichen werden, richtig? Müsste ich demzufolge manuelle Snapshots machen und diese dann bei replicate specific snapshots nach Namensschema filtern und die auto Snapshots auslassen?

Meine aktuellen Einstellungen sehen so aus:
Screenshot_20230110_145821.png


Ziel ist, dass ich bei einer Sicherung immer nur die Unterschiede kopiere, bzw dass der Snapshot auf dem Server mit dem auf der externen HDD abgeglichen wird, sodass am Ende der Stand Server = externe HDD ist ohne eine Vollreplikation. Realisierbar? :)
 
Joined
Jan 27, 2020
Messages
577
Meine Vermutung ist, da ich mit Auto Snapshots arbeite, werden nach diese nach einiger Zeit von meinem Server gelöscht
Dein Vermutung ist richtig. Dein Snapshot-Task hat eine retention policy von "2 WEEKS". Snapshots die älter als 2 Wochen sind werden gelöscht/überschrieben. Wenn dein Replication-Task dann nach "Monaten" nach Snapshots schaut auf die er inkrementieren möchte, findet er nix:
No incremental base on dataset 'HDD/Backups

Passe deine replication an, dass Snapshots innerhalb der retention period repliziert werden. (Dieser Denglisch Mix liest wirklich schauderhaft.)
 

Patrick M. Hausen

Hall of Famer
Joined
Nov 25, 2013
Messages
7,740
Meine Vermutung ist, da ich mit Auto Snapshots arbeite, werden nach diese nach einiger Zeit von meinem Server gelöscht und können somit nicht mehr zwischen dem Stand von lokalen Snapshots und dem alten auf der externen abgeglichen werden, richtig?
Korrekt. Und damit die Replikation funktioniert, brauchen Quelle und Ziel mindestens einen in der Vergangenheit liegenden gemeinsamen Snapshot. Repliziert wird dann die Differenz zu diesem. Kein gemeinsamer Snapshot, keine Replikation möglich, es sei denn du lässt das Ziel komplett neu überschreiben. Das will man aber in der Regel nicht.

Weshalb die ganze Handarbeit? Dazu sind doch diese Blech-Deppen da. Einfach die externe Platte dran hängen lassen und einen Snapshot pro Woche (z.B.) automatisch replizieren.
 

IndieCoopz

Explorer
Joined
Nov 4, 2022
Messages
50
Danke euch für eure Antworten. Die automatischen Snapshot Tasks würde ich gerne so lassen, gibt es eine Möglichkeit einen manuellen Snapshot zu erstellen der dann z.B. manual-2023-01-10 heißt und den Replikationstask dann so zu filtern, dass dieser nur alle Snapshots mit "manual" im Namen nimmt? Geht das mit dem Namensschema Filter? Wobei ich bei den "srftime" Befehlen etwas überfragt bin...

Meine Backups liegen im Schrank, daher würde ich aller x Monate gerne die Sicherungen ausm Schrank holen und aktualisieren. Den manual Snapshot würde ich dann fürs Delta auf dem Server lassen, die haben ja unendliche Lebenszeit da nicht automatisch erstellt.

Wenn das nicht geht, dann würde ich halt nochmal einen Monatlichen Autosnap anlegen, aber dann muss ich immer dran denken 1x pro Monat ne Sicherung zu machen, eigentlich möchte ich das machen wenn ich mag.^^

Zum Verständnis nochmal: Wenn Snapshot A1 voll auf externeHDD repliziert wird und ich irgendwann Snapshot A2 erstelle, kann der Replication Job die Differenz A1 -> A2 sichern. Wenn ich dann nach Monaten Snapshot A3 erstelle kann ich dann Snapshot A1 löschen damit er nur zwischen Snapshot A2 -> A3 die Differenz zieht? Sonst müsste ich ja die Manuellen Snapshots ewig liegen lassen?
 
Joined
Jan 27, 2020
Messages
577
Ein Replikation-Task basiert immer auf einen Snapshot-Task. Wenn du keinen schon bestehenden Snapshot-Task auswählst, erstellt die GUI einen neuen Task für dich ("auto-%Y-%m-d%....). Das heißt du kannst dir einen nach deinen Anforderungen ausgerichten Snapshot-Task erstellen und diesen dann in für die Replication auswählen.

Meine Backups liegen im Schrank, daher würde ich aller x Monate gerne die Sicherungen ausm Schrank holen und aktualisieren. Den manual Snapshot würde ich dann fürs Delta auf dem Server lassen, die haben ja unendliche Lebenszeit da nicht automatisch erstellt.
Das mag gehen, allerdings musst hier einige Dinge beachten:
  1. Je nachdem wie oft und wie lange du deine "manual"-Snapshots aufbewahrst, kann das sehr viel Speicherplatz in Beschlag nehmen. Jede Änderung wird solange historisch aufbewahrt, bis du den betreffenden Snapshot wieder löscht. Wenn mehrere Monate zwischen den Sicherungen liegen, könnten das ehrbliche Speichermengen werden. Das musst du entscheiden - du kennst die Daten und Kapazitäten.
  2. Richtig, manual snapshots werden nicht automatisch gelöscht, das heißt aber auch, dass du dich darum kümmern musst, nach der Sicherung wieder Platz zu schaffen. Das geht über die cli oder die GUI, ist aber bei vielen Snapshots schon etwas Arbeit. Automatische Snapshots per Task können hingegen über die Aufbewahrungszeit (retention) vom System bereinigt werden. Da spart man sich Arbeit.
  3. cold storage (Platte im Schrank) hat gewisse Nachteile. Dir gehen die Datensicherheits-Features von TrueNAS flöten. Keine regelmäßige SMART-checks, keine zpool-scrubs, keine Fehlermeldungen wenn was mit dem pool nicht stimmt. Wenns nur ein Backup ist vielleicht noch vertretbar, aber kann auch unschön werden, wenn die Platte eines Tages ausm Schrank genommen wird und dann tot ist. Das Risiko muss natürlich jeder selbst einschätzen.
Hier ist wie ich an deiner Stelle vorgehen würde:
  • autom. snapshot task mit 1 Jahr retention
  • monatl. Ausführung, bspw. 1. Sonntag im Monat
  • erstellst dir einen Replikation Task, ohne schedule, also nur manuelle Ausführung
  • alle paar Monate hängst du deine Platte ran und führst den Task aus.
  • Das setzt natürlich vorraus, dass du genug Platz auf deinem Pool für Daten + 12 monatl. Snapshots hast. Wie oben beschrieben, kann das schon ne Menge Platz sein, der beansprucht wird.
 
Top