Cria subvolume btrfs no sistema de arquivos não montado

1

Estou trabalhando na automação da criação de sistemas de arquivos BTRFS para minhas finalidades na nuvem. O processo é um pouco chato para ser honesto, e eu gostaria de cortar alguns passos no processo.

Meu processo parece atualmente assim:

  1. parted /dev/sdX mklabel gpt
  2. parted /dev/sdX mkpart primary 2048s 100%
  3. Ou mkfs.btrfs /dev/sdXY ou hacks de LVM:
    1. pvcreate /dev/sdXY
    2. vgcreate mygroup /dev/sdXY
    3. lvcreate -l 100%FREE -n mylv mygroup
  4. MOUNTDIR="$(mktemp -d)"
  5. mount -t btrfs -o defaults,ssd,compress=lzo /dev/sdXY $MOUNTDIR
  6. btrfs subvolume create $MOUNTDIR/root
  7. umount $MOUNTDIR
  8. echo "UUID=$(blkid -s UUID -o value /dev/sdXY) /mount/dir btrfs defaults,ssd,compress=lzo,subvol=root 0 0" >> /etc/fstab

Esse processo é feio, mas funciona.

Existe uma maneira de me livrar das etapas de 4 a 7 criando um subvolume sem o sistema de arquivos ser montado?

    
por Naftuli Kay 14.04.2015 / 19:43

1 resposta

2

Eu não penso assim.

O Btrfs é projetado para executar muitas operações diferentes on-line, ou seja, com o sistema de arquivos montado. Essa é uma boa maneira de evitar ter que codificar tudo duas vezes, uma vez no driver do kernel para ações on-line e uma vez nas ferramentas do espaço do usuário para ações off-line. Não codificar essas coisas duas vezes leva a menos bugs e menos chances de que a funcionalidade in-kernel e userspace divirjam de alguma forma.

O outro método que pensei seria criar um pequeno sistema de arquivos Btrfs com todas as configurações e subvolumes que você deseja, desmontá-lo e obter uma imagem em nível de bloco dele. Em seguida, implemente esse estilo de cortador de cookies de imagem em muitos novos dispositivos de bloco. Mas isso não ajuda em nada, já que agora você tem que montar o sistema de arquivos para redimensioná-lo (crescer) para o tamanho do dispositivo de bloco subjacente.

    
por 14.04.2015 / 22:53

Tags