¿Cómo puedo crear un subvolumen BTRFS con un nombre que contenga '@'?

¿Cómo puedo crear un subvolumen BTRFS con un nombre que contenga '@'?

Estoy intentando automatizar la creación y el montaje de subvolúmenes btrfs. Es fácil para mí crearlos y crear la entrada fstab, pero es más difícil analizar la identificación del subvolumen.

He notado que otros subvolúmenes tienen nombres predecibles con el prefijo '@' y están montados de esta manera en /etc/fstab

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

De hecho, el montaje con dicha etiqueta funciona

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

Error al montar un subvolumen con un nombre "normal"

$ 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

Por lo tanto, intenté crear un subvolumen con ese nombre pero fallé.

# 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

¿Cómo puedo crear subvolúmenes con una '@' en su nombre? Alternativamente, ¿cómo puedo montar subvolúmenes sin la necesidad de encontrar la identificación del subvolumen?

Respuesta1

Gracias al canal #btrfs en IRC (referencia completa), descubrí lo siguiente:

  • Estos subvolúmenes se crean bajo el subvolid=0subvolumen, que no está montado de forma predeterminada.
  • Para crear dichos subvolúmenes, primero monte ese subvolumen de nivel superior y luego cree el subvolumen debajo de él.

Por ejemplo, en mi escenario:

# 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

información relacionada