Ein btrfs Subvolume im Nachhinein anlegen

von Ein System Verwalter @ein-system-verwalter

Anleitung, wie man ein existierendes Verzeichnis in ein Subvolume umwandelt. Die Schritte wurden unter Ubuntu durchgeführt, sollten jedoch für die meisten Distributionen sehr ähnlich sein.

Ich möchte  hier zwei Varianten vorstellen:

1. Variante: Das neue Subvolumen im Stammverzeichnis des btrfs Dateisystems erstellen und dann an der gewünschten Stelle einbinden

2. Variante: Das neue Subvolume direkt an der Stelle erstellen, wo es später sein soll. Hierbei wird das neue Subvolumen immer automatisch mit eingebunden, wenn das Eltern Volumen in das Dateisystem eingebunden wird.


1. Variante: Das neue Subvolumen im Stammverzeichnis des btrfs Dateisystems erstellen und dann an der gewünschten Stelle einbinden

Die Schritte in der Übersicht:

#
# In diesem Beispiel wollen wir den Ordner ~/Downloads als extra Subvolumen einrichten
#

# Die oberste Ebene des btrfs Dateisystems einbinden
sudo mount -o subvolid=5 /dev/sda1 /mnt

# Das neue Subvolumen erstellen
sudo btrfs subvol create /mnt/@Downloads

# Die Daten effizient hinüberkopieren
sudo cp -ax --reflink=always /mnt/@home/ubuntu/Downloads/. /mnt/@Downloads

# Die UUID des Dateisystems ermitteln
sudo lsblk -o NAME,UUID,MOUNTPOINT

# Das neue Subvolumen einbinden: Im Editor die folgende Zeile hinzufügen
sudo nano /etc/fstab
# UUID=00000000-0000-0000-0000-000000000000 /home/ubuntu/Downloads           btrfs   defaults,subvol=@Downloads 0       2
# Alternative: vorhandene Zeile mit Alt+6 kopieren und mit Strg+U einfügen

# Das neue Volumen einbinden
mount /home/ubuntu/Downloads

# Überprüfen, ob es eingebunden ist
mount | grep Downloads

# Die alten Daten löschen (von dem ursprünglichen Subvolume, nicht von dem neuen!)
rm -rf /mnt/@home/ubuntu/Downloads/{*,.*}

2. Variante: Das neue Subvolume direkt an der Stelle erstellen, wo es später sein soll. Hierbei wird das neue Subvolumen immer automatisch mit eingebunden, wenn das Eltern Volumen in das Dateisystem eingebunden wird.

#
# In diesem Beispiel wollen wir den Ordern ~/Downloads in ein Subvolumen umwandeln
# 


# in das Home Verzeichnis wechseln
cd ~

# den Ordner temporär umbenennen
sudo mv Downloads Downloads.tmp

# das neue Subvolumen erstellen
sudo btrfs subvolume create Downloads

# die Berechtigungen anpassen
sudo chown ubuntu:ubuntu Downloads

# Die Daten effizient hinüberkopieren
sudo cp -ax --reflink=always Downloads.tmp/. Downloads

# Die alten Daten löschen 
rm -rf Downloads/{*,.*}

Weiterführende Informationen in Englisch im BTRFS Kernel Wikie unter https://btrfs.wiki.kernel.org/index.php/UseCases › Can I take a snapshot of a directory