Transplantando uma instalação de Gentoo

Esse é um texto para quem gosta de histórias. O resumo é que transplantei meu sistema com btrfs e subvolumes para outro disco. Senta que lá vem história!!!

Informações do sistema

Comprei um novo disco, dessa vez do tipo NVME, para substituir um ssd sata de 2014. A distribuição instalada é o Gentoo, com kernel personalizado, sistema raiz com diversos subvolumes e snapshots diários pelo snapper, partição específica para o home com snapshots de hora em hora também pelo snapper e ainda multiboot com debian stable.

Instalação do hardware

Essas unidades de armazenamento NVMe são bem pequenas mesmo. O primeiro desafio foi instalá-la na placa mãe pois tive que retirar uma placa de vídeo para chegar ao local de instalação. Aproveitei para fazer a limpeza da ventoinha da placa que já mostrava sinais de anos de acumulação. O parafuso para prender a unidade é extremamente pequeno, uma atividade praticamente cirúrgica para fazer a instalação e felizmente o parafuso não caiu no meio do gabinete.

NVMe?

Iniciei o computador e como já esperava a unidade não apareceu nos dispositivos de bloco. Fui à página da wiki do gentoo para nvme, pois eu já sabia que teria que ativar algum módulo do kernel. Ativei o suporte à dispositivos NVMe e recompilei o kernel. Reiniciei o computador e agora ele estava funcional. Na wiki já falava para instalar o pacote nvme-cli para ter acesso à funções específicas dessas unidades. Procurei mais alguns sites com informações, executei um teste de saúde do disco. Também troquei o tamanho de bloco da unidade, estava padrão de 512 bytes, mas para meu uso achei melhor alterar para 4096 bytes. Tentei alterar o namespace padrão para ter over-provisioning mas houve um erro, acredito que a unidade que comprei não aceite alteração…

Particionamento

Criei um particionamento exclusivo para o Gentoo nessa unidade. Afinal estou usando a mais de um ano e o Debian está encostado esse tempo todo. Tabela de partição GPT, primeira partição EFI com 127MB, uma generosa partição pro sistema de 96 GB, 10GB para swap, 342GB para uma partição /home e ainda 28GB de espaço livre.

Criei também sistema de arquivos fat32 na partição EFI, BTRFS na partição nova raiz, SWAP na swap e BTRFS novamente na partição que seria a nova home.

Subvolumes - Facilidade ou dificuldade?

Tinha chegado a hora de efetivamente começar a cópia de dados. Com subvolumes, é preciso primeiro criá-los e depois copiar os arquivos subvolume a subvolume. Eu já estava meio enferrujado dos comandos, peguei meu próprio tutorial, montei as árvores do btrfs em pastas do usuário root ( /root/arvore_sda2 e /root/arvore_nvme0n1p2 ) e fui copiando o conteúdo dos subvolumes com rsync -ax. Para a partição raiz eu peguei o snapshot diário da hora do almoço e copiei de lá, pois achei melhor copiar do snapshot do que do sistema “live”. Se alguns falam em dificuldade com btrfs e subvolumes, a facilidade é que todo esse processo eu fiz enquanto o computador estava ligado, eu ouvindo música e navegando para sanar dúvidas. Se fosse ext4, poderia haver alguns erros de cópia para arquivos abertos. O recomendável em ext4 seria fazer com o sistema de arquivos sem estar inicializado, ou seja, usando um pendrive de boot ou outro sistema operacional na máquina.

Mudando para a nova raiz

Agora que já estava com uma cópia do sistema raiz no /root/arvore_nvme0n1p2/@raiz, realizei as alterações no /root/arvore_nvme0n1p2/@raiz/etc/fstab para refletir os novos nomes de subvolumes (sim alterei pra ficar padrão) e o UUID da nova partição raiz. Alterei manualmente o arquivo /boot/grub/grub.cfg (na raiz antiga, ainda montada, pois ainda usaria o bootloader antigo) para adicionar uma entrada extra referente à “nova raiz”. Eu basicamente dupliquei a entrada padrão e fiz ajustes para refletir o novo o comando search do grub achar o novo root, com o UUID, além de mudar os parâmetros do kernel root=UUID= e rootflags=subvol=@raiz. Teoricamente tudo pronto para “mudar de endereço”!!!

Reiniciando na nova raiz

Chegado o momento, reiniciei e KERNEL PANIC root filesystem not found. Poutz, que tristeza… se fosse uma prova eu teria errado uma questão. Reiniciei novamente no raiz antigo. Pensei um pouco e achei o erro! Eu tinha copiado para o novo sistema raiz o snapshot da hora do almoço, e nesse snapshot eu ainda não tinha recompilado o kernel com suporte a NVMe, ou seja, o kernel não encontrou o dispositivo de bloco que eu dizia estar o sistema raiz. Copiei o conteúdo do /boot inteiro para o /root/arvore_nvme0n1p2/@raiz/boot, isso atualizaria o kernel do novo raiz. Aproveitei também para copiar o imporantíssimo arquivo .config de configuração do kernel para o novo raiz, senão teria problemas na próxima recompilação de kernel. Reiniciei o sistema e mudança efetuada com sucesso!!!

Mudando para a nova partição EFI

Alterar a instalação do bootloader, no caso o GRUB, para outra partição EFI também tem alguns detalhes importantes, embora simples. Novamente fui na wiki do gentoo pegar a cola. O primeiro passo é desmontar a partição EFI antiga e montar a nova em /boot/efi. Realizei a instalação do grub na nova partição com grub-install --target=x86_64-efi --efi-directory=/boot/efi e então atualizar o arquivo de configuração para refletir a nova raiz com grub-mkconfig -o /boot/grub/grub.cfg. Alterei também o /etc/fstab e coloquei o UUID da nova partição EFI. Conferi a ordem de boot com o comando efibootmgr -v e tudo certo!

Reiniciando com a nova partição EFI

Reinicei o computador e PAM! Caiu no grub do Debian. Que chato, mais um percalço… No comando do grub listei as partições e estava lá a unidade nvme. Carreguei o arquivo de configuração da partição nvme com o comando configfile (hd3,gpt2)/@raiz/boot/grub/grub.cfg e apareceu o menu do grub bonitinho como era de se esperar. Iniciei o computador no novo raiz. Procurando informações descobri que a minha placa mãe não suporta inicialização no nvme. Desfiz as alterações e ficarei usando o bootloader do ssd antigo…

Mudando para o novo LAR

Realizei procedimento semelhante para a partição home, com a diferença que nela eu uso os arquivos direto na árvore do sistema. Então não precisei configurar subvolumes. Como estava muito grato do GRUB do debian ter ajudado na minha jornada, resolvi logar nele para fazer a atualização do sistema. Enquando isso acontecia, fiz a cópia dos arquivos do home antigo para o home novo. Montei também o sistema raiz novo e fiz a alteração do /etc/fstab colocando o novo UUID para o ponto de montagem /home.

Finalizando a mudança

Reiniciado o computador, tempo de aproveitar a velocidade do nvme que melhorou a abertura de programas pesados como chrome, firefox e libreoffice. Na primeira abertura, eles costumavam demorar uns 3 segundos e passou para menos segundo, praticamente inexistindo diferenças entre a primeira abertura com uma segunda abertura com os arquivos no cache de sistema. Algumas horas depois vi mais um problema: o snapper não estava fazendo os snapshots de hora em hora no /home. O problema é que a configuração snapper necessita de um subvolume em /home/.snapshots (para funcionar em uma configuração com os arquivos fora de subvolumes). Criei o subvolume e dei como finalizada a mudança de endereço, com tudo funcionando como era antes, mas mais rápido! Ainda deixarei os arquivos do sistema antigo sem mexer por uma semana, por segurança, depois vou remanejar aquelas partições para ampliar o espaço disponível.

5 curtidas

Esse tópico é tão rico em informações que tive que ler uma segunda vez fazendo anotações para não me perder.

:sweat_smile:

O bacana é que pode ser usado como referência em uma atividade futura semelhante.

Pode ser interessante deixar o seu tutorial linkado nessa parte, assim teremos mais uma referência para acompanharmos.

3 curtidas

Editei e adicionei vários links das páginas de interesse! Ah, também como ponto de aprendizado eu recomendo fazer um snapshot na hora que vai efetivamente copiar os arquivos, daí copiar os arquivos desse snapshot. Isso minimizaria a perda de informação como aconteceu no meu caso.

4 curtidas