Opensuse

如何創建名稱包含“@”的 BTRFS 子卷?

  • October 19, 2016

我正在嘗試自動創建和安裝 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 的情況下掛載子卷?

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

  • 這些子卷子卷是在子卷下創建的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

引用自:https://unix.stackexchange.com/questions/316266