Wie erstelle ich einen BTRFS-Schnappschuss?

22

Meine / home-Partition besteht aus einer gesamten physischen Festplatte. Es ist als btrfs formatiert. Ich möchte einen Schnappschuss machen. Insbesondere in Bezug auf die Benennung von Subvolumes bin ich verwirrt.

Mir ist bewusst, dass es ähnliche Fragen gibt, aber jede ähnliche Frage scheint etwas anderes zu stellen als das, was ich stelle (und sie sind älter, was angesichts der raschen Entwicklung von btrfs wahrscheinlich veraltet ist). Beispielsweise ist die Antwort auf diese Frage anscheinend nicht die Antwort auf meine Frage, da meine / home-Partition ein separates Volume ist und die Manpage für btrfs jetzt einen anderen Befehl zum Erstellen von Snapshots anzeigt.

ein anderes ähnliches problem, keine feste lösung .
Jemand anders ist genauso verwirrt wie ich in Bezug auf die Namensgebung

Meine Frage:

Einfach starten: Ist dies der richtige Befehl, um einen einfachen Schnappschuss meiner Home-Partition zu erstellen?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Ich bin wirklich mutig geworden und habe es getestet und es funktioniert nicht. Der Fehler ist error accessing /home/@home. Wie unten gezeigt, wird @home aufgelistet.

Ich bin offensichtlich verwirrt über die Namen der Subvolumes. Muss ich sie zum Erstellen von Schnappschüssen verwenden? Einige Beispiele zeigen das Erstellen von Snapshots von "home" mit /homedem Parameter "source". Anhand von Beispielen für Root-Volumes muss ich diese verwenden /home/@home.

Würde dieser Befehl funktionieren? Und wenn nicht, warum?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

Ist das @nur eine Namenskonvention? Ist es überhaupt sinnvoll?

Hier sind einige Ausgaben, die relevant sein könnten:

btrfs subvolume list /home
ID 256 top level 5 path @home

Ich bin mir nicht sicher, was das genau bedeutet. Wenn ich es versuche btrfs device scan, gibt es einen Fehler (z. B. das Gerät / dev / sda1 kann nicht gescannt werden). Mein Dateisystem enthält keine Fehler. Alles ist gut.

Hier sind meine Partitionen. Als Antwort auf eine Antwort ist no / home nicht meine einzige BTRFS-Partition.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX für Monica Cellio
quelle
Die Community entscheidet über das Repo ...
One Zero

Antworten:

19

Was ist der richtige Befehl, um einen Schnappschuss meiner Home-Partition unter Ubuntu 12.04 zu erstellen?

Angesichts der Tatsache, dass sich home auf einer btrfs-Partition befindet und als / home gemountet ist, lautet der richtige Befehl:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Hier sind meine Ergebnisse:

Bevor Sie den Befehl heute ausführen:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

Der Befehl:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Nachdem Sie den Befehl heute ausgeführt haben:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

Das einzige Problem bei dieser Methode ist, dass Schnappschüsse angezeigt werden, wenn Sie sich in (Liste) / home befinden.

Das Ubuntu-Community-Wiki wurde mit einer Lösung für dieses Problem aktualisiert. Hier ist es:

So arbeiten Sie mit Schnappschüssen im Ubuntu-Layout

Um mit Snapshots von / oder / home im Ubuntu-Layout arbeiten zu können, ist es sehr praktisch, das btrfs-Dateisystem an einem separaten Ort einzuhängen und vom oberen Rand des btrfs-Baums aus zu arbeiten, anstatt von den eingehängten Subvolumes. <- das ist die Lösung. Leider ist es nicht bequem .

sudo mount /dev/sdX# /mnt

Verwenden Sie zum Erstellen eines Snapshots dieselbe Syntax wie oben:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Dadurch wird eine Momentaufnahme des @ -Untervolumes mit dem Namen @_snapshot erstellt, das sich ebenfalls oben im btrfs-Baum befindet. Da es sich oben in der Baumstruktur befindet, wird es beim Auflisten von Dateien auf einem bereitgestellten Volume nicht angezeigt.

Um ein Rollback zu einem Snapshot durchzuführen, müssen Sie lediglich dessen Namen in den Namen ändern, den Ubuntu bereitstellt und neu startet. So ändern Sie den Namen:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

So löschen Sie einen Schnappschuss:

sudo btrfs subvolume delete /mnt/@_badroot

btrfs-Snapshots sind selbst Subvolumes und in sich geschlossen. Das Löschen des alten @ -Untervolumes ist in Ordnung, vorausgesetzt, wir haben einen Ersatz.

HINWEIS: Der Befehl btrfs-tools unterbricht set-defaultUbuntus Layout.

MountainX für Monica Cellio
quelle
Also bist du da richtig? Jetzt sollten Sie in der Lage sein, Ihre Schnappschüsse einzuhängen.
Turbo
Ich habe tatsächlich noch nicht versucht, sie zu montieren. Und ich habe gerade die Antwort von psusi über das Paket apt-btrfs-snapshot gesehen. Das sieht doch interessant aus, oder?
MountainX für Monica Cellio
Ja, ich habe es auch im dritten Punkt erwähnt. Sorry musste darauf hinweisen;)
Turbo
Ich schlage vor, Sie markieren Ihre Lösung als Antwort.
Turbo
Es gibt eine Lösung für die Schnappschüsse, die angezeigt werden, wenn Sie zu Hause sind. Ich bearbeite gerade meine Antwort mit den Informationen.
MountainX für Monica Cellio
11

Ok, das Wichtigste zuerst:

  • Der Name des Subvolumes, das Sie gerade anzeigen, wird @homedurch angezeigt btrfs subvolume list /home. Es ist montiert in /home. @home ist der Name des Subvolumes und hat auch die ID 256, sodass höchstwahrscheinlich nur Ihr / home als btrfs formatiert ist.

  • Um nun einen Schnappschuss von @home zu erstellen, müssen Sie Folgendes ausführen: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Das Subvolume kann einen beliebigen Namen haben. Das @ ist Ubuntus Konvention zur Installationszeit. (Wenn Sie apt-btrfs-snapshotdas Root-Subvolume verwenden, muss es zwischendurch benannt @werden.) Das Community-Wiki empfiehlt nachdrücklich, @als Root und @homeals Home zu bleiben, da es auf diese Weise gemountet ist. Dies ist besonders wichtig, wenn Sie ein Rollback durchführen möchten: Sie sollten NICHT das Subvolume set-default von btrfs verwenden (keine Syntax, die absichtlich hervorgehoben wird).

  • Dafür btrfs device scanmusst du verwenden sudo.

  • Zum Löschen eines Subvolumes können Sie verwenden sudo btrfs subvolume delete @home_snapshot_20120421

Alle Btrfs - Befehle können so lange abgekürzt werden , da sie eindeutig sind, so zum Beispiel sudo btrfs device scankann abgeschnitten werden sudo btrfs d s, sudo btrfs dev scoder irgendetwas dazwischen.

Ich hoffe das hat deine Fragen beantwortet. Es gibt einige Tools, mit denen regelmäßige Backups erstellt werden können. Btrfs-Snapshot-Rotation ist ein Beispiel. Gehen Sie mit Vorsicht vor, da keine von ihnen wirklich ausgereift ist oder genügend Traktion hat, dh sie können sehr gut Fehler enthalten.

Turbo
quelle
Ich erhalte eine Fehlermeldung:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX für Monica Cellio
Auch hatte ich noch keinen Erfolg damit btrfs device scan. Jede Variante, einschließlich using, sudogibt den Fehler "ERROR: Das Gerät '/ dev / sdX' kann nicht gescannt werden" aus, wobei X für einen gültigen Namen wie a, a1, b usw. steht.
MountainX für Monica Cellio
@OneZero: Ich habe noch nicht alle Antworten, aber ich habe den richtigen Befehl zum Erstellen eines Snapshots meiner Home-Partition unter Ubuntu 12.04 gefunden und diese Informationen als Antwort unten angegeben.
MountainX für Monica Cellio
das ist ja komisch. Ich habe meine btrfs-Partition überprüft btrfs sub snap @ /mnt/randomund es hat bei mir funktioniert. Dann war ich wieder in / mnt, wo @ montiert wurde. Entschuldigung für die Verwirrung
Turbo
@turbo: Deine Antwort war sehr hilfreich. Sie müssen sich nicht dafür entschuldigen, dass Sie versucht haben zu helfen. Auch die Ubuntu-Seiten sind nicht klar. Wir werden es irgendwann herausfinden.
MountainX für Monica Cellio
10

Installieren Sie das apt-btrfs-snapshotPaket, und verwenden Sie seine Unterbefehle list, snapshot, deleteund set-default.

Dies ist ein Skript, das die btrfsBefehle der unteren Ebene umschließt. Es funktioniert, indem Sie zuerst das btrfs-Root-Dateisystem irgendwo mounten. Damit meine ich die reale Wurzel, im Gegensatz zu dem /@Subvolume, das normalerweise als gemountet wird /. Mit anderen Worten, Sie müssen laufen , mount /dev/sda1 /mntdamit Sie die Subvolumes anzeigen können , die als aufgeführt werden /mnt/@, /mnt/@homeund alle anderen , die Sie erstellt haben. Von dort können Sie btrfs subvolume snapshot /mnt/@home @snapshot-today, die eine Momentaufnahme von /@homebenannten erstellen /@snapshot-today. Vergleichen Sie dies mit dem Ausführen btrfs subvolume snapshot /home /home/@snapshot_today, das stattdessen den Schnappschuss als untergeordnetes Element von erstellt /@home. Daher wird er angezeigt, wenn Sie ls /homeund sein richtiger Name vorliegen /@home/@snapshot-today.

Rollende einen Snapshot zurück ist nur eine einfache Umbenennung: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. Das nächste Mal , wenn Sie booten, wenn es geht zu montieren /@homein /home, wird es die Snapshot finden.

Es ist ein bisschen schwierig, den Kopf herumzureißen, weil Sie den Unterschied zwischen der Sichtweise von btrfs und der Sichtweise des Kernels berücksichtigen müssen, der von den Einhängeoptionen (insbesondere dem Argument subvol =) beeinflusst wird.

Psusi
quelle