Tutoriais

Como converter EXT4 para BTRFS sem perder dados

Converter EXT4 para BTRFS pode ser uma excelente opção para quem deseja aproveitar as vantagens do sistema de arquivos BTRFS (B-Tree File System), mas está utilizando um sistema instalado em EXT4 (Extended File System 4) e não possui tempo para formatar a máquina.

Os BTRFS em comparação ao EXT4

Conforme abordamos de forma aprofundada em outro artigo, o sistema de arquivos BTRFS é considerado por muitos como sendo “o futuro”, no que diz respeito a formatos de armazenamento de dados.

Quando comparado ao EXT4, que ainda é o sistema de arquivos mais utilizado nas distribuições Linux, o BTRFS possui diversas vantagens, como:

  • Suporte a snapshots do sistema: relacionado a backups e restauração do sistema;
  • A funcionalidade “Copy On Write”: gerenciamento de arquivos mais rápido e mais economia de espaço em disco;
  • Compressão de arquivos, entre outros.

Por fim, o BTRFS ainda possui algumas “desvantagens” em comparação ao bastante estável EXT4.

Como o sistema de arquivos foi projetado com foco nos SSDs, a fragmentação de dados está mais propícia a ocorrer com o BTRFS quando o mesmo estiver rodando em HDs. Essa fragmentação pode causar arquivos corrompidos, entre outros problemas.

Mesmo assim, as pessoas que utilizam o BTRFS, geralmente, possuem muito mais elogios do que queixas em relação ao formato. Isso inclui a minha própria experiência, pois utilizo o BTRFS há mais de um ano e nunca tive problemas com o mesmo.

Os riscos de se converter EXT4 para BTRFS

O método que iremos mostrar foi projetado para que o seu sistema de arquivos seja alterado sem qualquer perda de dados. Após a conversão ter sido realizada, ainda será possível reverter o processo, caso você não goste do resultado.

Todavia, não existem softwares à prova de falhas. Em todos os testes que realizei, jamais presenciei nenhum mau funcionamento, mas, mesmo assim, recomendamos que você faça backup dos seus dados para o caso de algo não sair como o esperado.

O que é necessário para realizar o procedimento?

Para maximizar as chances de sucesso da conversão, é recomendado que você possua, ao menos, 20% de espaço livre na partição que você deseja realizar o procedimento.

Para poder realizar modificações em uma partição EXT4, ela não deve estar em uso. Por isso, se você quiser converter a partição onde o seu sistema operacional está instalado, será necessário utilizar o modo live de uma distribuição Linux.

O modo live de qualquer distro para usuários domésticos pode ser utilizado para realizar a conversão, porém, recomendamos a utilização do Fedora Workstation, que contém todos os softwares necessários para este procedimento instalados, por padrão.

Conheça o identificador das suas partições

Para executar os comandos corretamente, você deve saber qual é o identificador da partição que você deseja converter. Essa informação pode ser encontrada em softwares de gerenciamento de disco, como o Gparted, o GNOME Disks e o KDE Partition Manager.

O identificador da partição sempre irá seguir o mesmo padrão. No exemplo da imagem abaixo é “/dev/vda2”. Apenas os quatro últimos caracteres deste código devem ser diferentes no seu sistema.

gnome disks
Encontrando o identificador da partição no GNOME Disks.

Anote este código e lembre-se de sempre substituir “/dev/vda2” pelo seu identificador nos comandos a seguir.

Como converter uma partição “somente arquivos” de EXT4 para BTRFS

Converter EXT4 para BTRFS em uma partição que contém apenas arquivos e nenhum sistema operacional instalado é bastante simples e não necessita de um modo live. Primeiro, você deve assegurar-se de que as ferramentas necessárias estejam instaladas no seu sistema.

Para isso, basta executar o comando a seguir, de acordo com qual sistema você está utilizando.

Debian, Ubuntu e derivados:

sudo apt install btrfs-progs

Fedora e derivados:

sudo dnf install btrfs-progs

Arch Linux, Manjaro e derivados:

sudo pacman -S btrfs-progs

OpenSUSE e derivados:

sudo zypper install btrfs-progs

Convertendo a partição

Caso a partição que você deseja converter para BTRFS esteja montada, desmonte-a com o comando abaixo:

sudo umount /dev/vda2

Cheque a integridade da partição com o comando:

sudo fsck.ext4 -f /dev/vda2

Em seguida, realize a conversão do sistema de arquivos:

sudo btrfs-convert /dev/vda2

Após o término da conversão, a ferramenta irá criar uma pasta chamada “ext2_saved” no diretório raiz da partição que você converteu. Caso você queira ter a possibilidade de realizar o “rollback” para EXT4, mais tarde, não apague essa pasta.

Como realizar o “rollback” para o EXT4

No momento em que o comando “btrfs-convert” é executado, o mesmo cria uma imagem de backup da partição, anterior a modificação. Por isso, se você não ficou satisfeito com o resultado do procedimento, é possível desfazer as modificações, convertendo a partição de volta para EXT4.

Para fazer o “rollback”, basta executar o comando:

sudo btrfs-convert -r /dev/vda2

Se você ficou satisfeito com o resultado do procedimento, é possível apagar a pasta “ext2_saved”.

btrfs-convert

Converta a partição do sistema de EXT4 para BTRFS

O primeiro passo para converter a sua partição “/” é iniciar o sistema através do modo live de uma distro Linux. A seguir, realizo a conversão de EXT4 para BTRFS da partição “/” do Ubuntu 22.04 LTS através do modo live do Fedora Workstation 35.

Lembre-se de substituir “/dev/vda2”, nos comandos abaixo, pelo identificador da partição que você deseja converter.

Convertendo a partição

Todo o procedimento é realizado em modo “root”. Por isso, utilize o comando a seguir:

sudo su

Em seguida, realize uma verificação de integridade na partição que você deseja converter:

fsck.ext4 -f /dev/vda2

Converta a partição para BTRFS:

btrfs-convert /dev/vda2

Editando o arquivo “fstab”

Monte a partição convertida no sistema que está em modo live:

mount /dev/vda2 /mnt

Abra o GNOME Disks e selecione a partição que você acabou de converter, para visualizar as informações sobre a mesma. Em seguida, execute o comando a seguir para poder editar o arquivo “fstab”:

nano /mnt/etc/fstab

Com o editor de texto “nano” você pode utilizar as setas do seu teclado para navegar pelo texto e os comandos de copiar e colar são, respectivamente: “Ctrl + Shift + C” e “Ctrl + Shift + V”.

Siga os seguintes passos:

  • Copie o código UUID da partição convertida (1) e cole-o no lugar do antigo código UUID no arquivo “fstab” (2);
  • No campo 3: substitua “ext4” por “btrfs” e adicione o parâmetro “defaults” seguido de “0     0”. O campo 3 do seu arquivo “fstab” deve ficar idêntico ao da imagem abaixo.

O arquivo de swap original não irá mais funcionar com a partição em BTRFS, iremos gerar um novo “swapfile” mais tarde. Por isso, apague toda a linha que contém as informações sobre o arquivo de swap (4).

converter ext4 para btrfs

Pressione “Ctrl + O” seguido de “Enter” para salvar as modificações e “Ctrl + X” para sair do editor de texto.

Editando o arquivo do GRUB

Com o comando a seguir, utilize o “nano” para abrir o arquivo de configurações do GRUB:

nano /mnt/boot/grub/grub.cfg

Caso o comando acima abra um arquivo em branco, tente novamente com o comando abaixo:

nano /boot/grub2/grub.cfg

Pressione “Ctrl + W” para realizar uma pesquisa no editor de texto nano e, no campo de busca, digite “insmod ext2” seguido de “Enter”. Isso fará o nano destacar todas as ocorrências do termo pesquisado. Você pode utilizar o atalho “Alt + W” para avançar para a próxima vez que o termo pesquisado aparece.

Substitua todas as aparições de “insmod ext2” por “insmod btrfs”.

grub file edit

Pressione “Ctrl + O” seguido de “Enter” para salvar e “Ctrl + X” para sair do nano.

Realize um “chroot” para acessar o sistema instalado

Agora, através do terminal, precisaremos acessar o sistema instalado na partição que acabamos de converter. Além disso, para evitar problemas relacionados ao SELinux quando você for iniciar o sistema instalado, rode o comando a seguir:

touch /mnt/.autorelabel

Monte as pastas necessárias para a utilização do “chroot”:

mount -t proc none /mnt/proc && mount -t sysfs none /mnt/sys && mount -o bind /dev /mnt/dev && mount -o bind /dev/pts /mnt/dev/pts

Acesse o sistema instalado através do “chroot”:

chroot /mnt bash

Atualize as configurações do GRUB

Como realizamos modificações no sistema de arquivos da partição “/”, será necessário atualizar as configurações do GRUB. Caso contrário, o mesmo não irá inicializar.

Também precisaremos remover o antigo arquivo de swap:

rm /swapfile

Para atualizar o GRUB, se o seu sistema estiver instalado no modo “BIOS Legacy”, utilize os seguintes comandos:

grub-install /dev/vda2
grub-mkconfig -o /boot/grub/grub.cfg

Se o comando acima não funcionar, utilize:

grub2-mkconfig -o /boot/grub2/grub.cfg

Se o seu sistema estiver instalado em UEFI, rode os comandos:

mount /boot/efi
grub-install --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg

Se o comando acima não funcionar, rode:

grub2-mkconfig -o /boot/grub2/grub.cfg

Utilize o comando “exit” seguido de “Enter” por três vezes consecutivas para fechar o terminal da maneira correta e reinicie o sistema. Desta vez, inicie o sistema instalado e não o modo live.

Recriando o seu arquivo de swap

Este passo não é necessário se você estiver utilizando uma partição de swap. Porém, se você está utilizando um “swapfile”, siga os passos a seguir.

Entre no modo “root” do seu sistema e acesse a pasta raiz:

sudo su
cd /

Crie um subvolume para o novo arquivo de swap e atribua os parâmetros necessários:

truncate -s 0 ./swapfile
chattr +C ./swapfile
btrfs property set ./swapfile compression none

Gere um novo arquivo de swap. Você pode substituir “2048”, no comando abaixo, pelo tamanho que você deseja para a sua memória swap.

dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Atribua as permissões recomendadas para o novo arquivo e transforme-o em um “swapfile”:

chmod 0600 /swapfile
mkswap /swapfile

Ative o seu novo arquivo de swap:

swapon /swapfile

Adicione o novo “swapfile” no arquivo “fstab”

Abra, novamente, o arquivo “fstab”:

nano /etc/fstab

E, no final do mesmo, cole a linha a seguir:

/swapfile none swap defaults 0 0
fstab

Salve as modificações com “Ctrl + O” seguido de “Enter” e “Ctrl + X” para fechar.

Reinicie o sistema, e pronto! A transição de EXT4 para BTRFS está completa.

Se estiver satisfeito com o resultado, você já pode apagar a pasta de backup “ext2_saved” da raiz do seu sistema.

Como fazer o “rollback” da partição “/” de BTRFS para EXT4

Para realizar o “rollback” da partição raiz do seu sistema para EXT4, obviamente, você não pode ter apagado a pasta “ext2_saved”. Então, novamente, inicie o modo live do sistema que está no seu pen drive.

Abra o terminal, acesse o modo “root” e rode o comando de “rollback”.

sudo su
btrfs-convert -r /dev/vda2

Como a partição foi alterada, será necessário realizar, mais uma vez, os passos da configuração do GRUB.

Acesse o sistema instalado através do “chroot”:

mount /dev/vda2 /mnt
mount -t proc none /mnt/proc && mount -t sysfs none /mnt/sys && mount -o bind /dev /mnt/dev && mount -o bind /dev/pts /mnt/dev/pts
chroot /mnt bash

Se o seu sistema for “BIOS Legacy”:

grub-install /dev/vda2
grub-mkconfig -o /boot/grub/grub.cfg

Se o comando acima não funcionar, utilize:

grub2-mkconfig -o /boot/grub2/grub.cfg

Se o seu sistema for UEFI:

mount /boot/efi
grub-install --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg

Se o comando acima não funcionar, rode:

grub2-mkconfig -o /boot/grub2/grub.cfg

Reinicie o sistema e pronto! A sua partição está, novamente, em EXT4.

Extraindo todo o potencial do BTRFS

O sistema de arquivos BTRFS possui diversos comandos que podem ser utilizados para realizar a manutenção do sistema de arquivos. No futuro, iremos produzir um conteúdo falando sobre eles, para que você possa extrair todos os benefícios que este formato tem a oferecer.

Você já sabia ser possível alterar o sistema de arquivos de uma partição sem precisar formatá-la? Conte-nos, nos comentários, qual é a sua experiência com este assunto.

Isso é tudo pessoal! 😉

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!