Como criar instantâneos com BtrFS no Linux

Deseja criar instantâneos de dados em seu PC Linux apenas no caso de algo ser excluído? Com o sistema de arquivos BtrFS, você pode. Antes de criar um instantâneo BtrFS, você deve primeiro ter um dispositivo de bloco no Linux que esteja usando o sistema de arquivos BtrFS. Se você deseja transformar uma unidade existente em uma unidade BtrFS para dados diversos, siga as instruções abaixo. Deseja usar o BtrFS como seu sistema de arquivos raiz? Certifique-se de selecionar “instalação personalizada” durante o processo de instalação e selecione BtrFS como seu sistema de arquivos de escolha.

Além de ter um dispositivo de bloco com o sistema de arquivos BtrFS formatado para ele, o usuário também deve instalar o btrfs-progs pacote.

Observação: talvez seja necessário executar o comando lsblk para determinar qual dispositivo de bloco deve ser formatado.

BtrFS no Linux

Para formatar uma unidade, primeiro faça backup de todos os dados nela e depois abra um terminal. No terminal ganhe root usando: sudo -s. Com acesso root, use o comando mkfs para criar um novo sistema de arquivos no dispositivo. Neste exemplo, usaremos /dev/sdd1

mkfs.btrfs -f /dev/sdd1

Solução de problemas

A unidade não funciona após a formatação para BtrFS? Pode ser necessário criar uma nova tabela de partição. Aqui está como fazê-lo:

parted /dev/sdd
mklabel gpt
mkpart primary btrfs 1MiB 100%

Saia da ferramenta parted com:

quit

Em seguida, execute novamente o comando format.

mkfs.btrfs -f /dev/sdd1

Criar instantâneos com BtrFS

Antes de tirar snapshots, você precisará fazer alguns sub-volumes. O principal sistema de arquivos do Linux é o BtrFS? Pule esta etapa e vá direto para a configuração de subvolumes. Siga esta parte do processo apenas se estiver usando uma unidade secundária com o sistema de arquivos BtrFS, você precisará montá-la. Neste exemplo, o disco rígido será /dev/sdd.

sudo -s 
mkdir /btrfs
mount -t btrfs /dev/sdd1 /btrfs

A pasta principal do BtrFS foi criada, montada e está pronta para ser usada. É hora de criar um subvolume. O que é um subvolume? É um recurso especial que vem com o sistema de arquivos BtrFS que permite que os volumes criados funcionem de maneira semelhante a um dispositivo de bloco (pense em /dev/sda1 e etc).

A realidade é que eles não são dispositivos de bloqueio. Em vez disso, são diretórios sofisticados que aproveitam uma tecnologia chamada “espaços de nomes”. Sem ficar muito complicado, o BtrFS aproveita essa tecnologia de espaço de nomes para permitir que os usuários criem vários subvolumes individuais e montáveis ​​que agem e se comportam como dispositivos de bloco.

Para criar seu próprio subvolume, siga estas etapas. Neste exemplo, mostraremos uma estrutura básica de subvolume que começa na pasta principal /btrfs. Lembre-se de que você pode criar seus próprios volumes onde quiser, desde que seja feito em um sistema de arquivos BtrFS.

Primeiro, ganhe um shell de raiz. Esses comandos podem ser feitos com privilégios sudo, mas como interagir com o sistema de arquivos (como root) pode ser tedioso, é melhor obter o root imediatamente. Use sudo -s ou faça login no root usando su. Então faça:

btrfs subvolume create /btrfs/vol_a

O primeiro comando cria um subvolume BtrFS em /mnt/btrfs em nossa unidade de exemplo /dev/sdd1. Se você quiser, pode parar aqui e usar isso como um volume para salvar todos os dados importantes. Como alternativa, você pode criar sub-sub volumes (quantos quiser). Para criar um volume dentro de um volume, você faria:

btrfs subvolume create /btrfs/vol_a/vol_b

Para criar um instantâneo, primeiro mova/copie todos os dados importantes em um subvolume. Por exemplo:

cp -R ~/Documents /btrfs/vol_a/

em seguida, use o sistema de arquivos para criar um instantâneo.

btrfs subvolume snapshot /btrfs/vol_a/ /btrfs/vol_a/backup_1

Nota: substitua “backup_1” pelo que você gostaria de chamar de seu snapshot. Rotule-os claramente para que você possa classificá-los mais tarde.

Restaure qualquer instantâneo com: mv /btrfs/vol_a/ /mnt/btrfs/vol_a/backup_1

Montagem de subvolumes como dispositivos de bloco

Parte da grande vantagem dos subvolumes é a capacidade de montá-los individualmente, como dispositivos independentes. Para fazer isso, primeiro liste todos os volumes conhecidos usando o comando btrfs.

btrfs subvolume list /btrfs

Percorra a lista e encontre o número de ID para o subvolume e, em seguida, monte-o com o comando mount. Em seguida, desmonte-o assim que tiver o ID.

mount -o subvolid=XXX /dev/sdX /btrfs

Substitua XXX pelo ID e /dev/sdX pela unidade onde está o volume a ser montado. Apenas tenha em mente que você não pode montar um subvolume na mesma partição que a partição de nível superior. Em vez disso, monte em outra partição ou unidade formatada em BtrFS. Por exemplo:

mount -o subvolid=38 /dev/sdc1 /btrfs

Subvol 38 está localizado em /dev/sdd1, mas /dev/sdc1 também é BtrFS, então os snapshots podem ser montados lá. Isso não precisa ser feito em unidades individuais. Em vez disso, você pode montá-lo em /dev/sdc2 e etc.

Definir o subvolume padrão

Definir o subvolume padrão do BtrFS é útil, pois facilita a interação com ele. Para definir um padrão, primeiro use o comando de lista de subvolume para localizar o ID. Pegue o ID e conecte-o ao comando set-default:

btrfs subvolume set-default XXX /btrfs

Para se livrar de um padrão que você definiu, use o mesmo comando, exceto que, em vez de usar um ID de volume da lista de subvolumes, use o número 0. Isso retornará às configurações de fábrica e você estará livre para usar outros subvolumes como padrões.

btrfs subvolume set-default 0 /btrfs

Excluir um subvolume

Se a qualquer momento você quiser se livrar de um volume, poderá excluí-lo usando o BtrFS. Por favor, não exclua o subvolume manualmente do disco rígido, com comandos como “rmdir” ou “rm -rf”. É melhor usar as ferramentas do sistema de arquivos BtrFS.

Para excluir um volume, faça:

btrfs subvolume delete /btrfs/volume-name