如何建立名稱包含“@”的 BTRFS 子磁碟區?

如何建立名稱包含“@”的 BTRFS 子磁碟區?

我正在嘗試自動建立和安裝 btrfs 子磁碟區。對我來說,創建它們並創建 fstab 條目很容易,但解析子卷 ID 卻很難。

我注意到其他子卷具有以“@”為前綴的可預測名稱,並且它們在 /etc/fstab 中以這種方式安裝

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

事實上,透過這樣的標籤安裝是有效的

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

使用“常規”名稱安裝子卷失敗

$ 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

因此,我嘗試創建一個具有這樣名稱的子卷,但失敗了

# 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

如何建立名稱中帶有“@”的子磁碟區?或者,如何在不需要查找子卷 ID 的情況下掛載子卷?

答案1

感謝 IRC 上的 #btrfs 頻道(完整參考),我發現了以下內容:

  • 這些子卷subvolumes是在subvolid=0子卷下創建的,預設是不掛載的
  • 若要建立此類子卷,請先掛載該頂級子卷,然後在其下方建立子卷

例如,在我的場景中:

# 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

相關內容