Wie kann ich ein BTRFS-Untervolumen mit einem Namen erstellen, der „@“ enthält?

Wie kann ich ein BTRFS-Untervolumen mit einem Namen erstellen, der „@“ enthält?

Ich versuche, die Erstellung und Bereitstellung von Btrfs-Subvolumes zu automatisieren. Es ist für mich einfach, sie zu erstellen und den Fstab-Eintrag zu erstellen, aber schwieriger ist es, die Subvolume-ID zu analysieren.

Mir ist aufgefallen, dass andere Untervolumes vorhersehbare Namen mit dem Präfix '@' haben und auf diese Weise in /etc/fstab gemountet sind

UUID=280d6f04-6ad0-4647-96b9-580aec12bbdc /var/log btrfs noatime,subvol=@/var/log 0 0

Tatsächlich funktioniert die Befestigung mit einem solchen Etikett

$ mount -o subvol=@/var/log photoshop-32

Das Mounten eines Subvolumes mit einem „normalen“ Namen schlägt fehl

$ mount -o subvol=var/users/robert/wines/photoshop-32 /var/users/robert/wines/photoshop-32/
mount: mount(2) failed: /var/users/robert/wines/photoshop-32: No such file or directory

Ich habe daher versucht, ein Untervolumen mit einem solchen Namen zu erstellen, aber es ist mir nicht gelungen

# btrfs subvolume create /var/users/robert/wines/blah/@/var/users/robert/wines/blah
ERROR: cannot access '/var/users/robert/wines/blah/@/var/users/robert/wines': No such file or directory

# btrfs subvolume create /@/var/users/robert/wines/blah
ERROR: cannot access '/@/var/users/robert/wines': No such file or directory

# btrfs subvolume create //@/var/users/robert/wines/blah
# ERROR: cannot access '//@/var/users/robert/wines': No such file or directory

Wie kann ich Untervolumes mit einem „@“ im Namen erstellen? Oder wie kann ich Untervolumes mounten, ohne die Untervolume-ID suchen zu müssen?

Antwort1

Vielen Dank an den #btrfs-Kanal im IRC (vollständige Referenz) habe ich folgendes herausgefunden:

  • diese Subvolumes Subvolumes werden unter dem subvolid=0Subvolume erstellt, das standardmäßig nicht gemountet ist
  • Um solche Subvolumes zu erstellen, mounten Sie zuerst das Subvolume der obersten Ebene und erstellen Sie dann das Subvolume darunter

Zum Beispiel in meinem Szenario:

# mount UUID=280d6f04-6ad0-4647-96b9-580aec12bbdc -o subvolid=0 btrfs-sys/
# tree -L 2 /mnt/btrfs-sys/
/mnt/btrfs-sys/
└── @
    ├── boot
    ├── etc
    ├── opt
    ├── srv
    ├── tmp
    ├── usr
    └── var

verwandte Informationen