Verschieben Sie eine Linux-Installation mit btrfs auf dem Standard-Subvolume (subvolid = 0) auf ein anderes Subvolume

14

Bei der Installation in einem Root-Dateisystem von btrfs werden viele Linux-Distributionen auf dem Standard-Subvolume installiert. Wenn dieses Layout unverändert bleibt, werden möglicherweise unerwünschte Snapshots oder Subvolumes im Root-Dateisystem erstellt. Ein anderes mögliches Layout wäre, dass das Standard-Subvolume ein snapshotsVerzeichnis und ein rootfsSubvolume enthält, bei dem es sich um das Root-Dateisystem handelt. Wie kann ich die Distribution-Standardinstallation von btrfs ändern, um dieses Subvolume-Layout zu verwenden, ohne von einer Live-CD zu booten?

Goncalopp
quelle

Antworten:

14

Zunächst erstellen wir das gewünschte Layout im Standard-Subvolume:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Beachten Sie, dass /rootfsdies unser neues Root-Dateisystem ist. Nehmen Sie nach diesem Schritt keine Änderungen am aktuellen vor.

Bearbeiten /rootfs/etc/fstab , damit das System das neue Rootfs-Subvolume als Root-Dateisystem verwendet. Dazu müssen Sie es ändern, um die subvol=rootfsOption einzuschließen.

mounten Sie unser neues Root-Dateisystem, mounten Sie die relevanten Dateisysteme (dev, sys, proc, booten, falls vorhanden), chrooten Sie darauf und aktualisieren Sie grub:

mount -o subvol=rootfs /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev  dev
mount -o bind /sys  sys
mount -o bind /proc proc
mount -o bind /boot boot
chroot .
update-grub
exit

Das ist es. Starten Sie neu und Ihr Root-Dateisystem sollte das Rootfs-Subvolume sein. Wenn dies erfolgreich war, sollte es kein / snapshots-Verzeichnis geben. Sie können jetzt den Inhalt des alten Root-Dateisystems im Standard-Subvolume löschen.

Wenn Sie möchten, können Sie einen permanenten Einhängepunkt für das Standard-Subvolume festlegen:

mkdir /media/btrfs/root

Dann können Sie mount -o subvolid=0 /dev/sdXX /media/btrfs/rootIhre Snapshots / Subvolumes erstellen.

Goncalopp
quelle
1
Beachten Sie auch, dass Sie anstelle des Mountens, Chrootens und Aktualisierens von grub einfach das Standard-Subvolume festlegen können, mit dem rootfs ausgeführt werden soll btrfs subvolume set-default ID /. IDkann mit `btrfs subvolume list /
goncalopp
Ich fügte hinzu subvol=/rootfs(beachte das /), fstabda dies der 'richtige' Weg zu sein scheint, wie im (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] beschrieben .
go2null
@ go2null Das Problem bei der Verwendung subvol=/rootfsist, dass jedes Programm, das Ihr Layout nicht kennt (z. B. Distributoren), stattdessen das Standard-Subvolume mounten wird. Wenn das Programm erwartet, dass das Dateisystem wie ein Linux-Dateisystem aussieht, wenn es fehlschlägt oder schlimmer ist, füllen Sie Ihr Standard-Subvolume mit Dingen, die Sie dort nicht wollen
goncalopp
hmm, hätte gedacht, dass Progs, die mit Dateisystemen herumspielen, zumindest die fstabKonfiguration des Bootloaders überprüfen oder booten würden .
go2null