btrfs reverte o instantâneo da raiz FS

3

Antes de atualizar para o Fedora 25, eu fiz um btrfs subvolume snapshot / /f24 . Eu tenho pouco espaço livre, então a atualização falhou. Agora a questão é: como reverter o instantâneo? Eu já inicializei no snapshot editando o grub.cfg (configurando rootflags=subvol=root/f24 ).

  1. esse cara diz para apenas btrfs subvolume delete root . Mas não tenho certeza se o grub2 irá gerar um grub.cfg ruim na próxima atualização do kernel. Também delete root soa como uma operação semelhante a rm -rf / .

  2. Esse cara usou o rsync para copiar sobre os dados do instantâneo para a raiz. Tenho certeza de que funciona, mas é uma resposta de 2013 e eu suponho que há uma maneira melhor de reverter o instantâneo.

  3. Encontrei algumas vezes para "usar apenas mv ", geralmente junto com apt-btrfs-snapshot . Simplesmente não parece que mv /f24 / realmente funcionará. (Se isso acontecer, por favor me corrija.)

No final, o instantâneo revertido deve ter o nome root novamente e não root/f24 . Aqui estão algumas informações sobre o FS:

$ btrfs subvolume list /
ID 257 gen 419417 top level 5 path root
ID 3231 gen 419430 top level 257 path root/f24

Inicializado no instantâneo:

$ btrfs subvolume show /
/
    Name:           f24
    UUID:           b1782609-7d9f-4725-911d-428cda2256c7
    Parent UUID:        8df6fae9-770a-4d55-a4bf-6a32edf1fbd7
    Received UUID:      -
    Creation time:      2016-11-26 19:17:22 +0200
    Subvolume ID:       3231
    Generation:         419438
    Gen at creation:    411444
    Parent ID:      257
    Top level ID:       257
    Flags:          -
    Snapshot(s):

Existe uma maneira de 2016 para fazer isso?

    
por Mathias 26.11.2016 / 22:33

1 resposta

3

Sua situação é um pouco simplificada pelo fato de que nem o seu subvolume atual nem o desejado é a raiz Btrfs "real", ou seja, a ID 0 do subvolume.

Comece por montar (temporariamente) a raiz real do Btrfs, assim:

mkdir /mnt/btrfs-root
mount -o subvolid=0 /dev/somedevice /mnt/btrfs-root

Agora, dentro do btrfs-root, você poderá ver o seu subvolume "root", assim como quaisquer outros subvolumes que você tenha definido lá. Você pode reorganizá-los da maneira que desejar usando mv :

cd /mnt/btrfs-top
mv -i root/f24 newroot
# Now at least you don't have one subvolume rooted inside another
# It's a little simpler to work with.

# Now just shuffle them as desired
mv -i root oldroot
mv -i newroot root

# ...and clean up
cd
umount /mnt/btrfs-top
rmdir /mnt/btrfs-top

Agora, na próxima vez que você montar o subvolume chamado "root", ele será o novo.

Tenha cuidado para não montar seu sistema de arquivos raiz por subvolucro. Se você está montando por subvolide, então o subvolumento não mudará mesmo se você renomear as coisas como acima.

  • Se você está montando o sistema de arquivos confiando no subvólido padrão, então você vai querer mudar o subvólido padrão para o novo:

    btrfs subvolume set-default 3231 /
    
  • Se você estiver montando por especificação de subvolides explícita, convém alterar /etc/fstab e /etc/default/grub para usar subvolid=3231 .

por 27.11.2016 / 13:36