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

    /etc/crypttab

    In der Datei sind die Volumes bezeichnet, die beim starten entschlüsselt werden.Der Namen des Luks Volumes wurde mit folgenden Befehle festgelegt.

    sudo cryptsetup open /dev/sdb3 cryptroot

    Wenn der Name des neu angelegten Volumes vom alten abweicht, ist die Datei /etc/crypttab anzupassen. Anschließend sind die initramdisks neu zu erstellen:

    update-initramfs -c -t -k all

    Quellen

    Leave A Reply