Btrfs Subvolumes

Was sind Subvolumes?

Subvolumes sind Volumes in einer Volume. Einfacher gesagt könnte man sagen es sind dynamische Partitionen innerhalb einer Partition unter btrfs, nur das es innerhalb des Dateisystems aufgeteilt wird. Außerdem kann man sie verschachteln, so das sich ein oder mehrere Subvolumes sich in einem Subvolume enthalten können. Dies geschied im Verzeichniss Pfad. Man kann also einzelne Verzeichnisse zu einem Subvolume machen und sogar als ein Laufwerk betrachten und mounten (mount -o subvol=<pfad>). Man kann sie (per ‘mv’ befehl) verschieben und Umbenennen. Sie werden auch dazu verwendet um Snapshots zu speichern, und können schreibgeschützt werden.

Subvolume erstellen

  • btrfs subvolume create <pfad>

um ein Subvolume zu erstellen. Z.B.

  • btrfs subvolume create /home/test

dies erstellt ein Verzeichniss in /home/test was in wirklichkeit ein Subvolume ist.

Wozu Braucht man das

Man kann beim installieren von Linux im Root Verzeichniss dessen enthaltenen Verzeichnisse wie ‘/etc’, ‘/home’, ‘/var’ usw. als Subvolumes erstellen. Das hat den vorteil dass diese Verzeichnisse auf einer Festplatte Logisch getrennt geschrieben werden was fragmentation auf einer Festplatte eindemmd. Ein btrfs Dateisystem fragmentiert wegen des Copy-on-Write sehr stark.

Man kann auch das Root Verzeichniss in ein Subvolume verschachteln. Allerdings hat z.B. Ubuntu ein Problem damit wenn sich das Root Verzeichniss nicht an erster stelle befindet, und verweigert den Bootvorgang.

Root Subvolume erstellen

  • mount /dev/sda1 /mnt

  • cd /mnt

  • btrfs subvolume create ROOT

  • cd /mnt/ROOT

  • btrfs subvolume create etc

  • btrfs subvolume create home

  • btrfs subvolume create boot

  • btrfs subvolume create opt

  • btrfs subvolume create var

  • btrfs subvolume create tmp

  • btrfs subvolume create root

  • btrfs subvolume create mnt

    /ROOT/ +– home +– etc +– boot +– …

Nun kann man ‘ROOT’ mounten mit:

  • umount /mnt
  • mount -o subvol=ROOT /dev/sda1 /mnt

oder es in die /etc/fstab schreiben:

/dev/sda1   /   btrfs   subvol=ROOT,noatime 0 0
...

hier muss man allerdings grub beischeid geben. Unter Arch Linux von einer Live CD mit:

  • arch-chroot /mnt
  • grub-mkconfig -o /boot/grub/grub.cfg
  • grub-install /dev/sda1
Zuletzt geändert: 2023-10-28 11:58:12 +0200 CEST: remove import status