rsnapshot + hardlink

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
hoeschler
Beiträge: 92
Registriert: 05.07.2007 11:28:23
Lizenz eigener Beiträge: MIT Lizenz

rsnapshot + hardlink

Beitrag von hoeschler » 19.08.2016 09:58:06

Hi,

Ich setze für Backups rsnapshot (http://linux.die.net/man/1/rsnapshot) ein. Das Ding hat aber einen erheblichen Nachteil: Wenn man auf dem Zielsystem Files in andere Folders bewegt, erkennt rsnapshot nicht von Haus aus, dass es sich um identische Files handelt und behandelt sie als unterschiedlich. Die Deduplication in Form von Hardlinks funktioniert also nur zwischen zwei, aber nie innerhalb eines Snapshots. Abhilfe soll da hardlink (http://linux.die.net/man/1/hardlink) schaffen. Die Frage ist, wie baue ich hardlink sinnvoll ins Backupscript mit ein? Aktuell mach ich jeden Tag ein Backup und rotiere dann nach weekly und am ende des Monats nach monthly.

Weiterhin verwende ich im rsnapshot die sync Option. Sollte ich jetzt täglich hardlink nach dem rsnapshot sync machen und dann auf daily rausrotieren, oder macht das nur wöchentlich Sinn? Ich glaube, hardlink geht ein bisschen auf die Performance. Hat jemand ein ähnliches Setup laufen und kann Erfahrungen schildern?

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsnapshot + hardlink

Beitrag von MSfree » 19.08.2016 10:26:15

Hardlinks vergleicht Dateiinhalte, wenn es zwei Dateien gleicher Größe findet, das kostet natürlich Zeit und kann das I/O-System stark belasten.

Die Frage ist eher, wie oft es bei dir vorkommt, daß Dateien in andere Verzeichnisse verschoben werden. Wenn das nämlich nur ein geringer Teil ist, wäre es überlegenswert, ob man dann nicht auf die Deduplikation verzichtet. Wegen 2% Plattenplatzersparnis auf dem Backupmedium würde ich das jedenfalls nicht machen, dazu ist der Strom, den man durch mehr I/O- und CPU-Last braucht, zu teuer und eine zusätzliche Platte zu billig.

Benutzeravatar
hoeschler
Beiträge: 92
Registriert: 05.07.2007 11:28:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnapshot + hardlink

Beitrag von hoeschler » 19.08.2016 10:30:28

Tatsächlich hatte ich in letzter Zeit zwischen zwei Snaphots regelmäßig 100-200GB Unterschied, welches sich durchweg mit fröhlichem File verschieben erklären lässt. Im Normalfall hab ich einen Zuwachs von vielleicht 50-70MB am Tag.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: rsnapshot + hardlink

Beitrag von uname » 19.08.2016 10:31:04

Leider kenne ich mich mit rsnapshot nicht aus. Ich habe mal vor einigen Jahren jedoch eine eigene Software [1] auf Basis von "rsync" inkl. Hardlinks (--link-dest) geschrieben. Ich denke rsnapshot wird ähnlich arbeiten.

Es ist so, dass man bei rsync über die link-dest-Option einen Ordner mitgibt wo geschaut wird ob die Dateien bereits bitweise identisch existieren. Ist dieses der Fall wird die Datei nicht neu gespeichert, sondern der neue Pfad verweist auf die alte Datei (Inode) und der Hardlink-Zähler (siehe stat <dateiname>) wird um einen hochgezählt.

Wenn ich nun z.B. meine 31 Sicherungsgenerationen betrachte, so hat z.B. der Zähler von etc/passwd den Wert 31, da ich diese Datei einen Monat nicht verändert habe. Würde ich nun diese Datei bzw. den ganzen Ordner innerhalb des Filesystems verschieben, würde sich nichts ändern. Hätte ich jedoch z.B. irgendwo noch eine 32. Version dieser Datei rumliegen, müsste natürlich irgendein Programm über alle Dateien laufen und nach dem 32. Duplikat suchen. Wenn ich wüsste wo es ist könnte ich da ganze natürlich manuell machen.

Ich sehe zwei Möglichkeiten:
a.) wenn du wirklich auch Duplikate innerhalb von Sicherungen deduplizieren willst brauchst du eine geeignete Software. Ob hardlink das kann weiß ich nicht. Evtl. wäre es sinnvoller auf alternative Backup-Software zu setzen. Vielleicht kann z.B. BackupPC das.
b.) du nutzt Deduplikation nur zwischen jeweils zwei Backupgenerationen, das Verschieben sollte unkritisch sein, du darst nur nicht z.B. ein Monatsbackup neu kopieren, denn damit würdest du die Datenmenge fast verdoppeln, verschieben innerhalb des Filesystems sollte gehen, solange du beim nächsten Backuplauf nicht versehentlich auf die nicht mehr existierende Version verweist, somit verschieben frühestens am übernächsten Tag

Nutzt "stat <filename>" um die tatsächliche Anzahl der Hardlinks zu ermitteln. Vielleicht hast du nur irgendwo einen Denkfehler.

[1] https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC
(eigentlich ist die Software nur ein Einzeiler (nutze es auf einem Testsytem und schau dir die Logdatei an), womit du vielleicht ein paar Backup-Läufe mal simulieren kannst, um das Prinzip besser zu verstehen)

Benutzeravatar
hoeschler
Beiträge: 92
Registriert: 05.07.2007 11:28:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnapshot + hardlink

Beitrag von hoeschler » 19.08.2016 10:36:09

uname: Ja rsnapshot arbeitet genau so. Was es nicht macht ist folgendes: Du hast ein File foo/bar/file. Verschiebst du nun auf dem System das file nach foo/file, dann hast du im backup folgendes: daily.0/foo/file und daily.1/foo/bar/file. Beide Files identisch, aber nicht hardlinked.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: rsnapshot + hardlink

Beitrag von uname » 19.08.2016 10:49:54

Du meinst eine Verschiebung auf dem Quellsystem von foo/bar/file nach foo/file? Natürlich wird kein Hardlink gesetzt, da für alle Pfade/Dateien relativ zu daily.0 und daily.1 verglichen wird. Da die Pfade abweichen können gleiche Dateien nicht erkannt werden. Dafür müsste schon auf Prüfsummenbasis eine Ablage erfolgen.
Ich verschiebe selten ganze Pfade auf Quellsystemen und über die Zeit wird es wieder rausrotiert (--delete). Wahrscheinlich brauchst du eine alternative Software. An der Backupsoftware selbst würde ich eher nicht rumfummeln.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsnapshot + hardlink

Beitrag von MSfree » 19.08.2016 11:00:44

uname hat geschrieben:Wahrscheinlich brauchst du eine alternative Software.
Wie schon angedeutet kann hardlinks das. Im Prinzip könnte man hardlinks nach dem rsnapshop auf zwei aufeinander folgende Backup-Kopien anwenden. Mit einem Skript, in dem hintereinander rsnaphot und danach hardlinks ausgeführt wird, sollte das Problem eigentlich erschlagen sein.

Benutzeravatar
hoeschler
Beiträge: 92
Registriert: 05.07.2007 11:28:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnapshot + hardlink

Beitrag von hoeschler » 19.08.2016 11:04:32

mhm Moment. Wieso auf zwei aufeinanderfolgende Backupkopien? Wo hab ich den Denkfehler?

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: rsnapshot + hardlink

Beitrag von uname » 19.08.2016 11:16:13

Also es gibt verschiedene Arten für Deduplikation. Würde der Backupserver z.B. für alle Dateien, Blöcke, ... die Prüfsummen aufbewahren, so wäre es vollkommen egal welche Daten gesichert würden. Doppelte Dateien würden an der verwalteten Prüfsumme erkannt. Mindestens Debianzbackup kann das wohl. Also hier wäre es eher egal.

Bei "rsync --link-dest=pfad/..." ist es hingegen so, dass zur Prüfung ob eine Datei bereits existiert hierfür eine Vorgängerversion herangezogen werden muss. Z.B. wird erst daily.0 nach daily.1 rotiert und dann wird beim erneuten rsync als Vergleichsordner daily.1 herangezogen. Hierdurch werden alle identischen Dateien per Hardlink verknüpft. Nur Änderungen werden neu gespeichert. Es ist ein inkrementelles Backup. Schau dir wie gesagt mit "stat <dateiname>" den Hardlinkzähler für die verschiedenen Backupversionen (Dateien nicht Ordner) an. Bei tatsächlich identischen Dateien sollte der Zähler entsprechend höher als 1 sein. Natürlich macht nur der Vergleich mit der jeweils vorherigen Version wirklich Sinn. Mit wochenalten Backups zu vergleichen führt zu weniger inkrementellen Sicherungen und ein Vergleich z.B. mit gar keinem Ordner oder einem leeren Ordner führt zu einem Vollbackup.
Im Prinzip könnte man hardlinks nach dem rsnapshop auf zwei aufeinander folgende Backup-Kopien anwenden.
Wenn du hardlinks (auch das Programm kenne ich nicht) ausführst wird es wirklich reichen nur die aktuelle Version mit der Vorgängerversion zu verknüpfen, da alle vorherigen Versionen ja bereits verknüpft sind. Aber falls du wirklich beliebige Dateien dedublizieren willst, würde ich eher auf eine alternative Backuplösung setzen, die das ermöglicht (Suche: global data deduplication debian). Schau dir zbackup oder bacula an.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: rsnapshot + hardlink

Beitrag von MSfree » 19.08.2016 11:24:11

hoeschler hat geschrieben:Wieso auf zwei aufeinanderfolgende Backupkopien? Wo hab ich den Denkfehler?
Du kannst es natürlich auch auf das gesamte Backup-Volume anwenden. Zumindest sollte man das wohl einmalig machen, damit alle bis dahin aufgelaufenen Duplikate in Hardlinks gewandelt werden.

Bei folgenden Anwendungen von hardlinks braucht man dann eigentlich nur noch die aktuelle Sicherung und dir vorherige vergleichen lassen, was deutlich weniger I/O verursachen sollte.

Benutzeravatar
hoeschler
Beiträge: 92
Registriert: 05.07.2007 11:28:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnapshot + hardlink

Beitrag von hoeschler » 19.08.2016 11:26:57

Also .sync mit .daily.0 vergleichen? Das sollte ja machbar sein. Ich werd mal ein Testverzeichnis anlegen und ein wenig rumspielen.

Antworten