名前に「@」を含む 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

関連情報