이름에 '@'이 포함된 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 채널 덕분에(전체 참조), 다음과 같은 사실을 알아냈습니다.

  • 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

관련 정보