O objetivo deste artigo é fornecer uma visão geral sobre o porquê e como migrar suas partições atuais para um sistema de arquivos Btrfs. O passo a passo de como isso é feito e acompanhe, se você estiver curioso para fazer isso sozinho.
Prós e contras da conversão
Vamos esclarecer isso bem rápido: que tipo de vantagens e desvantagens esse tipo de conversão de sistema de arquivos tem?
Prós
- Claro, nenhuma reinstalação é necessária! Cada arquivo em seu sistema permanecerá exatamente como antes.
- É tecnicamente possível fazer isso no local, ou seja, sem backup.
- Você certamente aprenderá muito sobre o btrfs!
- É um procedimento bastante rápido se tudo correr conforme o planejado.
Contra
- Você tem que saber lidar com os comandos de terminal e shell.
- Você pode perder dados, veja acima.
- Se algo der errado, você ficará por conta própria para consertar.
Cuidado & Atenção!!!
- Você precisará de cerca de 20% de espaço livre em disco para uma conversão bem-sucedida. Mas para o cenário completo de backup e reinstalação, você pode precisar de ainda mais.
- Você pode personalizar tudo sobre suas partições durante o processo, mas também pode fazer isso a partir do Anaconda se decidir reinstalar.
Converta seu sistema de arquivos para Btrfs. Passos de conversão
Crie uma imagem
Como você não pode converter sistemas de arquivos montados, trabalharemos a partir de uma imagem live do Fedora. Instale o Fedora Media Writer e ‘grave’ o Fedora 33 em seu stick USB favorito.
Libere espaço em disco
O btrfs-convert recriará os metadados do sistema de arquivos no espaço livre em disco da partição, enquanto mantém todos os dados ext4 existentes em sua localização atual.
Infelizmente, a quantidade de espaço livre necessária não pode ser conhecida com antecedência – a conversão irá falhar (e não causará danos) se você não tiver o suficiente. Aqui estão algumas idéias úteis para liberar espaço:
- Use o baobab para identificar arquivos e pastas grandes a serem removidos. Não exclua manualmente os arquivos fora de sua pasta de início, se possível.
- Limpe diários do sistema antigo: journalctl –vacuum-size = 100M
- Se você estiver usando o Docker, use ferramentas com cuidado como o docker volume prune, docker image prune -a
- Limpe imagens de máquinas virtuais não utilizadas dentro de caixas, por exemplo, GNOME Boxes
- Limpe pacotes não utilizados e flatpaks: dnf autoremove , flatpak remove –unused ,
- Limpe os caches do pacote: pkcon refresh force -c -1 , dnf clean all
- Se você estiver confiante o suficiente para isso, limpe cuidadosamente a pasta ~ / .cache .
Converter para Btrfs
Salve todos os seus dados valiosos em um backup, certifique-se de que seu sistema esteja totalmente atualizado e reinicie na imagem ao vivo. Execute o gnome-disks para descobrir o identificador do seu dispositivo, por exemplo, / dev / sda1 (pode ser diferente se você estiver usando LVM). Verifique o sistema de arquivos e faça a conversão: [Nota do editor: os seguintes comandos são executados como root, tenha cuidado!]
$ sudo su - # fsck.ext4 -fyv / dev / sdXX # man btrfs-convert (leia!) # btrfs-convert / dev / sdXX
Isso pode levar de 10 minutos a até horas, dependendo do tamanho da partição e se você tem um disco rígido rotativo ou de estado sólido. Se você vir erros, provavelmente precisará de mais espaço livre. Como último recurso, você pode tentar btrfs-convert -n .
Como reverter?
Se a conversão falhar por algum motivo, sua partição permanecerá ext4 ou o que quer que fosse antes. Se você deseja reverter após uma conversão bem-sucedida, é tão simples como
# btrfs-convert -r / dev / sdXX
Atenção! Você perderá permanentemente sua capacidade de reverter se fizer qualquer um destes: desfragmentar, balancear ou deletar o subvolume ext2_saved .
Devido à natureza copy-on-write do Btrfs, você pode copiar, mover e até excluir arquivos com segurança, criar subvolumes, porque ext2_saved continua referenciando os dados antigos.
Monte e verifique
Agora, a partição deve ter um sistema de arquivos btrfs . Monte-o e examine seus arquivos … e subvolumes!
# mount / dev / sdXX / mnt # man btrfs-subvolume (leia!) # btrfs subvolume list / (-t para uma visualização de tabela)
Crie subvolumes
Gostaríamos de obter um layout de subvolume ‘plano’, que é o mesmo que o Anaconda cria por padrão:
nível superior (diretório raiz do volume, não deve ser montado por padrão) + - root (diretório raiz de subvolume, a ser montado em /) + - home (diretório raiz de subvolume, a ser montado em / home)
Você pode pular esta etapa ou optar por um layout diferente. A vantagem dessa estrutura específica é que você pode criar facilmente instantâneos de / home e ter diferentes opções de compactação ou montagem para cada subvolume.
# cd / mnt # btrfs subvolume snapshot ./ ./root2 # btrfs subvolume create home2 # cp -a home / * home2 /
Aqui, criamos dois subvolumes. root2 é um instantâneo completo da partição, enquanto home2 começa como um subvolume vazio e copiamos o conteúdo de dentro. (Este comando cp não duplica dados, por isso vai ser rápido.)
- Em / mnt (o subvolume de nível superior), exclua tudo, exceto root2 , home2 e ext2_saved .
- Renomeie root2 e Home2 subvolumes a raiz e casa .
- Dentro do subvolume raiz , esvazie a pasta inicial , para que possamos montar o subvolume inicial lá mais tarde.
É simples se você acertar tudo!
Modificar fstab
Para montar o novo volume após uma reinicialização, o fstab deve ser modificado, substituindo as linhas de montagem ext4 antigas por novas.
Você pode usar o comando blkid para aprender o UUID da sua partição.
UUID = xx / btrfs subvol = root 0 0 UUID = xx / home btrfs subvol = home 0 0
(Observe que os dois UUIDs são iguais se estiverem se referindo à mesma partição.)
Estes são os padrões para novas instalações do Fedora 33. No fstab, você também pode escolher personalizar a compactação e adicionar opções como noatime.
Veja a página wiki relevante sobre compressão e man 5 btrfs para todas as opções relevantes.
Faça chroot em seu sistema
Se você já fez a recuperação do sistema, tenho certeza de que conhece esses comandos. Aqui, obtemos um prompt de shell que está essencialmente dentro do seu sistema, com acesso à rede.
Primeiro, temos que remontar o subvolume raiz em / mnt e , em seguida, montar as partições / boot e / boot / efi (podem ser diferentes dependendo do layout do seu sistema de arquivos):
# umount / mnt # mount -o subvol = root / dev / sdXX / mnt # mount / dev / sdXX / mnt / boot # mount / dev / sdXX / mnt / boot / efi
Em seguida, podemos prosseguir para a montagem dos dispositivos do sistema:
# mount -t proc / proc / mnt / proc # mount --rbind / dev / mnt / dev # mount --make-rslave / mnt / dev # mount --rbind / sys / mnt / sys # mount --make-rslave / mnt / sys # cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.chroot # cp -L /etc/resolv.conf / mnt / etc # chroot / mnt / bin / bash $ ping www.fedoraproject.org
Reinstale o GRUB e o kernel
A maneira mais fácil – agora que temos acesso à rede – é reinstalar o GRUB e o kernel porque ele faz toda a configuração necessária. Então, dentro do chroot:
# mount / boot / efi # dnf reinstalar grub2-efi shim # grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg # dnf reinstalar kernel-core ... ou apenas renegenerando initramfs: # dracut --kver $ (uname -r) --force
Isso se aplica se você tiver um sistema UEFI. Verifique os documentos abaixo se você tiver um sistema BIOS. Vamos verificar se tudo correu bem antes de reiniciar:
# cat / boot / grub2 / grubenv # cat /boot/efi/EFI/fedora/grub.cfg # lsinitrd / boot / initramfs - $ (uname -r) .img | grep btrfs
Você deve ter UUIDs de partição apropriados ou referências em grubenv e grub.cfg (grubenv pode não ter sido atualizado, edite-o se necessário) e veja insmod btrfs em grub.cfg e módulo btrfs em sua imagem initramfs.
Reiniciar
Agora seu sistema deve inicializar corretamente. Se não, não entre em pânico, volte para a imagem ao vivo e corrija o problema. Na pior das hipóteses, você pode simplesmente reinstalar o Fedora de lá.
Após a primeira inicialização
Verifique se está tudo bem com seu novo sistema Btrfs. Se você estiver satisfeito, precisará recuperar o espaço usado pelo antigo instantâneo ext4 , desfragmentar e equilibrar os subvolumes. Os dois últimos podem levar algum tempo e consomem muitos recursos.
Você deve montar o subvolume de nível superior para isso:
# mount / dev / sdXX -o subvol = / / mnt / someFolder # btrfs subvolume delete / mnt / someFolder / ext2_saved
Em seguida, execute estes comandos quando a máquina tiver algum tempo ocioso:
# btrfs filesystem defrag -v -r -f / # btrfs filesystem defrag -v -r -f / home # btrfs balance start -m /
Finalmente, há um atributo “sem cópia na gravação” que é definido automaticamente para pastas de imagem de máquina virtual para novas instalações. Defina-o se estiver usando VMs:
# chattr + C / var / lib / libvirt / images $ chattr + C ~ / .local / share / gnome-boxes / images
Este atributo só tem efeito para novos arquivos nessas pastas. Duplique as imagens e exclua os originais. Você pode confirmar o resultado com lsattr .
Conclusão
Este artigo ajudará a utilizar o BTRFS um filesystem que vem crescendo o uso e a sua aplicabilidade. Segue mais alguns links sobre o assunto, no intuito de aprimorar seu conhecimento.
Fonte: Fedora Magazine