Converta seu sistema de arquivos para Btrfs

Converta seu sistema de arquivos para Btrfs
Btrfs fedora

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

Converta seu sistema de arquivos para Btrfs

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