Um subvolume do sistema Btrfs é um conjunto lógico de dados que pode ser montado e gerenciado separadamente do volume principal. Ele fornece um meio para dividir um único volume em vários compartimentos lógicos, cada um com suas próprias propriedades e permissões. Isso pode ser útil para gerenciar diferentes conjuntos de dados com diferentes níveis de acesso ou para criar pontos de restauração individuais para diferentes partes do sistema.
Timeshift só aceita os subvolumes com os nomes "@" e "@home". Por tanto, teremos que criá-los antes de instalar o sistema básico.
Para isso teremos que abrir um novo terminal com Ctrl+Alt+F2.
Então pressione Ctrl+Alt+F2.
Verá a seguinte mensagem:
Pressione Enter para iniciar.
Este é o BusyBox. O busybox é um programa que fornece um conjunto básico de comandos Unix em um único executável. Ele foi criado com o objetivo de fornecer uma alternativa mais leve para os programas de linha de comando padrão, como o GNU coreutils.
Poderá ver as partições que foram criadas e montadas com o comando:
# df -h
O comando "df -h" do busybox mostra o tamanho total, o tamanho livre e o tamanho ocupado de todos os dispositivos de armazenamento montados no sistema, incluindo discos rígidos, discos SSD, unidades flash USB e cartões SD. Ele também mostra a porcentagem de espaço livre e ocupado de cada dispositivo.
Obs.: para este artigo, feito em máquina virtual, as partições estão identificadas como vda1 e vda2. No seu caso pode ser diferente, como sda1 e sda2 ou até mesmo nvmen0n1p1 e nvmen0n1p2. Mas o procedimento é igual.
Antes de criarmos os subvolumes compatíveis com Timeshift, devemos desmontar as partições que estão em "/target" com o comando:
# umount -rl /target
O comando "umount -rl /target" força o sistema a desmontar o sistema de arquivos montado em /target e, se for necessário, também desmonta todos os sistemas de arquivos que estejam montados no /target.
Se quiser, execute "df -h" novamente para confirmar que não há mais partições montadas em /target:
Agora, precisaremos montar a partição raiz em outro lugar, para trabalharmos nelas. Usaremos o diretório "/mnt".
# mount /dev/vda2 /mnt
O objetivo, relembro, é termos dois subvolumes: "@" e "@home".
Ao entrarmos no diretório /mnt com:
# cd /mnt
Poderemos ver um subvolume já criado (@rootfs), com o comando:
# ls
Vamos renomeá-lo simplesmente para @:
# mv @rootfs @
Conferindo:
# ls
Em seguida crie o subvolume @home:
# btrfs su cr @home
Confira:
# ls
Em seguida, teremos que montar o subvolume "@" em target novamente, mas aplicando as opções desejadas para o sistema Btrfs:
# mount -o subvol=@,ssd,defaults,noatime,space_cache,autodefrag,discard,compress-force=zstd:15 /dev/vda2 /target
O parâmetro "-o" é usado para especificar as opções que serão usadas ao montar o dispositivo. No comando acima, as opções especificadas são "subvol=@", "ssd", "defaults", "noatime", "space_cache", "autodefrag" e "discard".
Em resumo este comando monta o sistema de arquivos em /dev/vda2 com as opções escolhidas, que são:
- subvol=@ - Especifica que a unidade deve ser montada como um subvolume. No nosso caso, com o nome "@".
- ssd - otimiza a montagem para discos SSD.
- defaults - Utiliza as opções padrão de montagem.
- noatime - Noatime é uma opção de montagem que evita a atualização do timestamp quando um arquivo é acessado. Isso pode ser útil para aumentar o desempenho em sistemas de arquivos que fazem muito uso do timestamp, como o btrfs.
- space_cache - A opção de montagem space_cache faz com que o sistema de arquivos use um cache de espaço para as operações de leitura e gravação. Isso pode melhorar o desempenho do sistema de arquivos em algumas situações.
- autodefrag - Habilita a defragmentação automática. A opção de montagem autodefrag é uma ferramenta que pode ser usada para otimizar o desempenho do sistema e reduzir o tempo de inicialização. Ele analisa o disco rígido e, em seguida, reorganiza os arquivos para que eles sejam carregados mais rapidamente.
- discard - Descarta os blocos não utilizados, força o sistema a ignorar as áreas não utilizadas do disco e, portanto, não as aloca. Isso pode ser útil para alguns dispositivos de armazenamento, como unidades de estado sólido, que podem se beneficiar de um maior desempenho se as áreas não utilizadas do disco rígido não forem alocadas.
- compress-force=zstd:15 - Força a compressão do sistema de arquivos com o algoritmo zstd e nível de compressão 15. Faz com que os arquivos sejam compactados para economizar espaço.
Com excessão do "ssd" e do "compress-force=zstd:15", as outras opções eu copiei de uma instalação do Debian em Live CD, que adiciona tais opções automaticamente. Fiz uma dica sobre isso em:
Crie o diretório "efi" em "/boot", onde será montado a partição de boot:
# mkdir -p /target/boot/efi
Crie o diretório "home" onde será montado o subvolume @home:
# mkdir /target/home
Monte o "@home" em /target/home. O comando é quase igual ao comando anterior para o subvolume "@":
# mount -o subvol=@home,ssd,defaults,noatime,space_cache,autodefrag,discard,compress-force=zstd:15 /dev/vda2 /target/home
E monte a partição de boot:
# mount /dev/vda1 /target/boot/efi