Depois de passar horas e horas, não consigo entender o btrfs o suficiente para usá-lo do jeito que eu quero.
No final, meu objetivo é simples: ter uma solução limpa e à prova de falhas para as atualizações de sistema operacional. Então, eu tenho exatamente 3 coisas que eu preciso fazer: Criar instantâneo, reverter para um instantâneo e descartar um instantâneo (como a atualização foi bem sucedida).
Criação de instantâneos do sistema:
btrfs subvolume snapshot @ /btrfs/@-before-upgrade
No início, este comando deve criar um instantâneo chamado "@ -before-upgrade", que é o meu atual "/". Tudo o que grava no disco depois não estará dentro desse instantâneo. Isso me dá o primeiro problema: E se um processo em execução estivesse gravando em um arquivo ou um serviço tivesse dados na memória que precisam ser armazenados? Existe alguma maneira de criar um instantâneo que será usado como "@" - "/" após uma reinicialização?
Descartar instantâneo:
Se uma atualização foi bem-sucedida, a captura instantânea pode ser excluída com segurança. Se não me engano o comando correto deve ser este:
btrfs subvolume delete /btrfs/@-before-upgrade
Retroceder para o instantâneo:
Se uma atualização não foi bem-sucedida, preciso reverter para o estado quando fiz a captura instantânea. Então, no final, depois de gerenciar a primeira parte, foi simplesmente como uma reinicialização em vez de uma perda de energia. Então, eu preciso trocar os nomes dos snapshots, depois reiniciar e depois remover o quebrado. Pergunta sobre isso: Depois de trocá-los, as alterações ainda serão gravadas no agora chamado instantâneo "@ -broken"? Ou será que tudo de repente continua escrevendo no novo / antigo "@"? Em caso afirmativo, existe alguma maneira, como na pergunta acima, de aplicá-lo após uma reinicialização?
mv /btrfs/@ /btrfs/@-broken
mv /btrfs/@-before-upgrade /btrfs/@
reboot
btrfs subvolume delete /btrfs/@-broken
Agradecemos antecipadamente por toda a ajuda e feedback.