Fedora: Installation mit BTRFS für Timeshift

0

Einleitung

BTRFS ist ein Dateisystem, dass seit dem Kernel 2.6.29 als experimentelles Dateisystem verfügbar ist. Gegen Ende 2013 / Anfang 2014 wurde das Dateisystem eher unbemerkt aus dem experimentellen Stadium entlassen. Der Name BTRFS leitet sich vermutlich von B-Tree File System ab. Je nach Literatur wird auch die Ableitung aus Better File System gezogen. Alle großen Distributionen unterstützen BTRFS, ausgenommen Red Hat. Mit der Version RHEL 7.4 wurde die Unterstützung aus dem Produkt entfernt.

Wesentliche Merkmale

Die wesentlichen Merkmale gegenüber extX Dateisystemen sind:

  • Snapshots
  • Copy-on-Write
  • Integriertes Volume Management
  • Speicherung der Daten in Chunks (Data, Meta, System)
  • Subvolumes

Snapshot Management

Zur Verwaltung von Snapshots verwendet SUSE snapper. Ein alternatives Programm dazu ist TImeshift, dass primär aus der Debian/Ubunut Ecke kommt. Beide Werkzeuge verrichten sauber ihre Arbeit. Ob snapper oder Timeshift Anwendung findet, hängt neben der Distribution noch vom persönlichen Geschmack ab.

Timeshift bedingt gegenüber snapper allerdings, dass die Volumes bestimmten Namenskonventionen folgen.
Das Root Volume muss mit @ benannt sein. Das home volume als @home. Je nach Distribution ist dies jedoch nicht der Fall bzw. lässt sich während der Installation auch garnicht konfigurieren. Aus diesem Grund ist nachfolgend ein Weg beschrieben, wie nach einer nativen Installation auf BTRFS der Wechsel auf die Subvolumes erfolgen kann.

Distributionsspezifische Hinweise

Fedora 30 Beta: Der Installer unterstützt Subvolumes, akzeptiert allerdings keine Subvolumenamen beginnend mit @.
Debian 10 Beta: Der Installer bietet keinerlei Möglichkeit Subvolumes zu konfigurieren. Nach der Auswahl des Dateisystems BTRFS werden diese automatisch im Hintergrund angelegt.

Wechsel auf Subvolumes nach der Installation

Nach Abschluss der Installation ist das entsprechende Systeme von einem Live Medium zu starten. Hier bieten sich das Fedora Live Medium oder eine Debian Live Medium an.

Nachdem das booten vom Live Medium beendet ist, wird ein Terminal benötigt.

Erstellung der Subvolumes

Bei LUKS verschlüsselten Partitionen ist diese zuerst zu entschlüsseln:

cd /
sudo cryptsetup open /dev/sdb3 cryptroot

Mounten der Partition – mit Verschlüsselung oder ohne Verschlüsselung:

sudo mount -t btrfs -o compress=lzo /dev/mapper/cryptroot /mnt

oder

sudo mount -t btrfs -o compress=lzo /dev/sb3 /mnt

Prüfen welche Volumes existieren

sudo btrfs sub list /mnt/

Snapshot des root Volumes erstellen (/mnt/) oder falls als Subvolume vorhanden (/mnt/root/)

sudo btrfs subvolume snapshot /mnt/ /mnt/@

oder

sudo btrfs subvolume snapshot /mnt/root/ /mnt/@

Snapshot des home Volumes erstellen (/mnt/home) oder falls nicht vorhanden, Erstellung eines leeren Volumes

sudo btrfs subvolume snapshot /mnt/home/ /mnt/@home

oder

sudo btrfs subvolume create /mnt/@home

Kontrolle der erstellen Subvolumes

sudo btrfs sub list /mnt/

Unmounten der Volumes

sudo umount /mnt/

Anpassung /etc/fstab

Bisher mountet das System die initialen Mountpoints. Die /etc/fstab ist somit zur Nutzung der Subvolumes @ und @home anzupassen. Hierzu muss zuerst das neue Subvolume gemountet werden:

sudo mount -t btrfs -o subvol=@ /dev/sdb3 /mnt

Anschließend sind die Boot Einträge für / und /home anzupassen bzw. zu ergänzen. Zu beachten ist hierbei, dass die UUID bei Subvolumes gleichbleibt. Die korrekte UUID kann mittels blkid in Erfahrung gebracht werden.

vim /mnt/etc/fstab
UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 / btrfs defaults,subvol=@ 0 1
UUID=4b033b5f-b1ec-4f9d-9cd0-8fdb700f0d89 /home btrfs defaults,subvol=@home 0 1

Das @home Subvol kann leer eingebunden werden, Benutzerprofile nach der ersten Anmeldung erstellt werden

Anpassung von Grub

Durch den Umzug der Dateien in Subvolumes muss Grub für den Start des Systems ebenfalls angepasst werden. Hierzu werden notwendige Verzeichnisse nachgemountet um anschließend per chroot die Umgebung zu wechseln. Abschließend wird der Bootloader neu geschrieben

sudo mount --bind /dev /mnt/dev/
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /run /mnt/run
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt/
Fedora: sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Debian: sudo grub-mkconfig -o /boot/efi/EFI/Debian/grub.cfg

Quellen

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell als Teamleiter tätig.

Antworten