Mova uma instalação do Linux usando btrfs no subvolume padrão (subvolid = 0) para outro subvolume

15

Ao fazer uma instalação em um sistema de arquivos btrfs raiz, muitas distribuições Linux instalam no subvolume padrão. Se não for modificado, esse layout forçará a criação de snapshots ou subvolumes dentro do sistema de arquivos raiz, o que pode ser indesejável. Outro layout possível seria fazer com que o subvolume padrão contivesse um snapshotsdiretório e um rootfssubvolume, que é o sistema de arquivos raiz. Como posso alterar a instalação btrfs da distribuição padrão para usar esse layout de subvolume sem inicializar a partir de um liveCD?

goncalopp
fonte

Respostas:

15

Primeiro, criaremos o layout que queremos no subvolume padrão:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Observe que este /rootfsserá o nosso novo sistema de arquivos raiz; portanto, não faça alterações no atual após esta etapa.

Edite /rootfs/etc/fstabpara fazer o sistema usar o novo subvolume rootfs como sistema de arquivos raiz. Para isso, você precisará modificá-lo para incluir a subvol=rootfsopção.

monte nosso novo sistema de arquivos raiz em algum lugar, monte os sistemas de arquivos relevantes (dev, sys, proc, inicialize, se houver), faça chroot nele e atualize o grub:

mount -o subvol=rootfs /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev  dev
mount -o bind /sys  sys
mount -o bind /proc proc
mount -o bind /boot boot
chroot .
update-grub
exit

É isso aí. Reinicialize, e seu sistema de arquivos raiz deve ser o subvolume rootfs. Se isso der certo, não deve haver nenhum diretório / snapshots. Agora você pode excluir o conteúdo do antigo sistema de arquivos raiz no subvolume padrão.

Se desejar, você pode fazer um ponto de montagem permanente para o subvolume padrão:

mkdir /media/btrfs/root

você pode mount -o subvolid=0 /dev/sdXX /media/btrfs/rootcriar seus instantâneos / subvolumes.

goncalopp
fonte
1
Além disso, observe que, em vez de montar, fazer chroot e atualizar o grub, você pode simplesmente definir o subvolume padrão como rootfs btrfs subvolume set-default ID /. IDpode ser encontrado usando a lista de subvolume btrfs /
goncalopp
Eu adicionei subvol=/rootfs(observe o /) fstabcomo isso parece ser o caminho 'adequado', conforme descrito no (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null
@ go2null O problema de usar subvol=/rootfsé que qualquer programa que não esteja ciente do seu layout (instaladores de distribuição, por exemplo) montará o subvolume padrão. Se o programa espera que o sistema de arquivos para olhar como um linux sistema de arquivos, se irá falhar, ou pior - preencher o seu subvolume padrão com as coisas que você não quer lá
goncalopp
hmm, teria pensado que os progs que mexem com os sistemas de arquivos pelo menos verificariam fstabou configurariam o carregador de inicialização.
go2null 26/10/17