
我正在嘗試自動建立和安裝 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