btrfs send und die clone-option

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

btrfs send und die clone-option

Beitrag von scientific » 28.04.2016 12:02:29

Hi!

Ich beschäftige mich wieder einmal wieder mit btrfs. Konkret mit der send-Funktion für Backups.

Die Parent-Geschichte ist mit klar. Ich gebe ein Parent an, welches auf der lokalen und der externen HD vorhanden ist mit der Option -p an und ein Subvolume (das jünger als dieses Parent ist) und es werden nur die Differenzen zwischen dem Parent und dem Subvolume übertragen.

Aber wie kann ich die "Clone-Option" verstehen?
# btrfs send [-p parent_subvol] -c clone_src [-c clone_src] ... subvol
You can specify the -c option multiple times if there is more than one clone source. If you do not specify the parent subvolume, btrfs chooses a suitable parent from the clone sources.
Und in der manpage auf meinem Rechner steht:
-c <clone-src>
Use this snapshot as a clone source for an incremental send (multiple allowed).
Wie kann ich das verstehen? Was ist der Unterschied?
Und wie verwende ich das konkret?
Wie arbeitet clone im Gegensatz zu parent?

Um einen Anwendungsfall zu skizzieren:

Ich habe sehr viele Snapshots/Subvolumes auf meiner HD gehabt (>180 Systemvolumes mit jeweils 5-7 Subvolumes darunter...) und war deshalb an der Kapazitätsgrenze des vorhandenen btrfs angelangt. Balancing schlug mit Kernelfehlern und Systemfreeze an. Mounten war auch nicht mehr möglich (über Rettungssystem).
Das Dateisystem hab ich mit einem Kernel 3.16 oder 3.19 erzeugt und seither in Verwendung.
Wie ich beim Studium div. btrfs-Infoseiten herausfand, gab es mit btrfs von so alten Kernel div. Probleme und ich fand den Hinweis, eines mit einem aktuellen Kernel neu anzulegen, was ich dann auch tat.

Ich habe dazu die System-BTFS-Partition neu formatiert (mit Rettungssystem) und mittels btrfs send/receive ein Backup zurückgespielt.
Musste nur die UUID der Partition noch an div. Stellen anpassen (grub!!!) und schon konnte ich wieder weiterarbeiten. Wunderbar, so soll es sein.

Mache ich jetzt neue Backups auf die externe Festplatte, muss ich aber die Backups auf der externen HD löschen, da keine "Received UUID" auf der Externen HD in den Subvolumes zu finden ist, welche mit den neuen übereinstimmt...

Da müsste doch die clone-Funktion zum Einsatz kommen können... Denn die Daten sind ja zum größten Teil die selben...

Aber ich finde leider nichts für mich verständliches, wo ich die Arbeitsweise der Clone-Option verstehen könnte...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: btrfs send und die clone-option

Beitrag von smutbert » 29.04.2016 11:49:19

Also ich habe sowieso so meine Schwierigkeiten das ganze zu verstehen und weiß nicht ob clone dir in deiner Situation weiterhilft oder nicht, aber was das mit dem Klonen soll, das wird hier recht gut erklärt soweit ich es beurteilen kann
[…]
> > OK, call the sending system "S" and the receiving system "R". Let's
> > say we've got three subvolumes on S:
> >
> > S:A2, the current /home (say)
> > S:A1, a snapshot of an earlier version of S:A2
> > S:B, a separate subvolume that's had some CoW copies of files in both
> > S:A1 and S:A2 made into it.
> >
> > If we send S:A1 to R, then we'll have to send the whole thing,
> > because R doesn't have any subvolumes yet.
> >
> > If we now want to send S:A2 to R, then we can use -p S:A1, and it
> > will send just the differences between those two. This means that the
> > send stream can potentially ignore a load of the metadata as well as
> > the data. It's effectively saying, "you can clone R:A1, then do these
> > things to it to get R:A2".
> >
> > If we now want to send S:B to R, then we can use -c S:A1 -c S:A2.
[…]
> > I'm trying to think of a case where -c is useful that doesn't
> > involve someone having done cp --reflink=always between subvolumes,
> > but I can't.
[…]
> > So, I think the summary is:
> >
> > * Use -p to deal with parent-child reflinks through snapshots
> > * Use -c to specify other subvolumes (present on both sides) that
> > might contain reflinked data
[…]
Quelle

wanne
Moderator
Beiträge: 7616
Registriert: 24.05.2010 12:39:42

Re: btrfs send und die clone-option

Beitrag von wanne » 29.04.2016 17:03:27

Ne. Die clone Option ist dazu da, wenn man btrfs zu deduplication misbraucht. Ich habe mir beispielsweise überlegt Backups von verschiedenen fast gleichen Systemen übereinander zu speichern. (War mir dann doch zu gefährlich.)
Du solltest die UUIDS wieder anpassen.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten