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