converter ext4 para btrfs2
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!