Conceitos básicos do Snapper
- O QUE É?
Este artigo descreve os conceitos básicos da ferramenta Snapper, que é usada para criar e gerenciar instantâneos do sistema de arquivos Btrfs.
- POR QUÊ?
Este artigo apresenta uma visão geral básica do Snapper, as interfaces suportadas e os principais objetivos. Ele também inclui informações sobre as configurações padrão para instantâneos no SUSE Linux Micro.
- DEDICAÇÃO
Leva até 20 minutos para compreender o Snapper e a configuração padrão.
- REQUISITOS
Privilégios de
root
ousudo
O Snapper precisa ser instalado. Por padrão, ele está disponível no SUSE Linux Micro.
Uma partição raiz (
/
) com pelo menos 16 GB. O tamanho da partição raiz depende do produto. É altamente recomendável, no mínimo, 50 GB.
Este artigo é a primeira parte da série de artigos sobre o Snapper. Nos artigos seguintes, abordaremos casos de uso comuns, como desfazer mudanças, voltar o sistema, criar e gerenciar manualmente os instantâneos, limpar os instantâneos automaticamente e muito mais. Cada artigo foi elaborado com base no conhecimento adquirido nos artigos anteriores, promovendo uma compreensão cada vez mais aprimorada da ferramenta Snapper.
1 Conceitos essenciais dos subvolumes e instantâneos Btrfs #
Os subvolumes Btrfs são sistemas de arquivos que podem ser montados separadamente em uma partição física. Por padrão, o sistema de arquivos Btrfs é configurado com subvolumes. Os instantâneos no Btrfs são um tipo de subvolume que compartilha dados com outro subvolume. Eles são criados usando os recursos de cópia em gravação do Btrfs, o que permite que sejam criados rapidamente com uso mínimo de espaço em disco. É possível usar os instantâneos para capturar o estado de um sistema de arquivos em um ponto específico no tempo e para voltar a um estado anterior, se necessário.
Um subvolume Btrfs tem a própria hierarquia independente de arquivos e de diretórios. Ao contrário dos volumes lógicos LVM, que operam no nível do bloco, os subvolumes Btrfs são baseados na extensão de arquivo. Um instantâneo também é considerado um subvolume, pois carrega o conteúdo inicial do subvolume original. Os subvolumes aparecem como diretórios e podem ser manipulados como qualquer outro diretório, inclusive ser renomeados ou movidos.
Um dos principais objetivos dos subvolumes é ser explicitamente incluído ou excluído dos instantâneos. Ao usar um instantâneo para voltar o sistema, precisamos garantir que os dados, como diretórios pessoais de usuários, conteúdo de servidor Web e FTP ou arquivos de registro, não sejam perdidos ou sobregravados durante um rollback. Para isso, exclua determinados subvolumes Btrfs dos instantâneos. Encontre mais informações e a lista de subvolumes excluídos na Seção 3.3, “Subvolumes excluídos dos instantâneos”.
2 O que é Snapper? #
Snapper é uma ferramenta que ajuda a criar e gerenciar instantâneos do sistema de arquivos. Os instantâneos de sistema de arquivos permitem manter uma cópia do estado de um sistema de arquivos em um determinado momento. O Snapper pode criar e comparar instantâneos, reverter entre instantâneos e suportar linhas do tempo de instantâneos automáticos. O Snapper nunca modifica o conteúdo dos instantâneos.
A configuração padrão do Snapper foi projetada para permitir voltar modificações feitas no sistema. No entanto, você pode usá-la também para criar backups em disco dos dados dos usuários. Como base para essa funcionalidade, o Snapper usa dois tipos de sistemas de arquivos:
Btrfs, um sistema de arquivos de cópia em gravação para Linux que suporta de forma nativa os instantâneos de sistema de arquivos de subvolumes.
Volumes LVM com aprovisionamento dinâmico formatados com XFS.
Também é possível inicializar por meio de instantâneos do Btrfs
.
2.1 O que o Snapper pode fazer? #
O Snapper tem uma interface de linha de comando e uma interface do YaST. É possível usar as interfaces tanto de linha de comando quanto do YaST de forma intercambiável, o que permite criar, excluir e comparar instantâneos, além de desfazer as mudanças feitas entre os instantâneos.
Usando o Snapper, é possível executar as seguintes tarefas:
Desfazer mudanças no sistema feitas pelo
zypper
e pelo YaST.Restaurar arquivos de instantâneos anteriores.
Fazer rollback do sistema inicializando de um instantâneo.
Criar e gerenciar instantâneos manualmente, no sistema em execução.
Executar a limpeza automática de instantâneos.
2.2 Criação de instantâneos #
Quando um instantâneo é criado, tanto o instantâneo quanto o original apontam para os mesmos blocos no sistema de arquivos. Por isso, o instantâneo inicialmente não ocupa espaço adicional no disco. Se os dados do sistema de arquivos original forem modificados, os blocos dos dados modificados serão copiados, enquanto os blocos dos dados antigos serão mantidos no instantâneo. Portanto, o instantâneo ocupa a mesma quantidade de espaço que os dados modificados. Portanto, no decorrer do tempo, a quantidade de espaço alocada por um instantâneo cresce constantemente. Como consequência, a exclusão de arquivos do sistema de arquivos Btrfs
que contém instantâneos pode não liberar espaço em disco!
Os instantâneos residem sempre na mesma partição ou subvolume no qual foram criados. Não é possível armazenar os instantâneos em uma partição ou um subvolume diferente.
Como resultado, as partições com instantâneos precisam ser maiores do que as partições sem instantâneos. A quantidade exata depende bastante do número de instantâneos mantidos e do volume de modificações de dados. Como uma regra geral, atribua às partições o dobro de espaço do que o de costume. Para evitar que os discos fiquem sem espaço, os instantâneos antigos são limpos automaticamente.
3 Configuração padrão do Snapper #
Saiba mais sobre as configurações padrão do Snapper.
O Snapper é configurado como uma ferramenta para desfazer e recuperar mudanças no sistema. Por padrão, a partição raiz (/
) do SUSE Linux Micro é formatada com Btrfs
. A captura de instantâneos será automaticamente habilitada se a partição raiz (/
) for grande o suficiente (mais do que aproximadamente 16 GB). Por padrão, os instantâneos estão desabilitados em partições diferentes de /
.
Não é recomendável ativar os instantâneos manualmente após a instalação do sistema com os instantâneos. Se o Snapper for habilitado após a instalação, a configuração será diferente da que está descrita aqui.
O tamanho da partição raiz é específico do produto. Para saber o espaço em disco ocupado pela partição raiz, execute:
>
df -h
3.1 Configurações padrão do Snapper #
Os instantâneos são criados apenas para a partição raiz, e determinados diretórios são excluídos por meio de subvolumes. Para conferir a lista de subvolumes excluídos, consulte a Seção 3.3, “Subvolumes excluídos dos instantâneos”.
O Snapper oferece algoritmos de limpeza automática de instantâneos para evitar a falta de espaço na partição raiz. Esses algoritmos diferenciam entre instantâneos de linha do tempo e numerados (pares de instantâneos de administração e instalação). É possível configurar o comportamento de limpeza com base nos seguintes critérios:
Limite de número: É possível definir o sistema para excluir automaticamente os instantâneos antigos quando uma determinada contagem de instantâneos é atingida.
Limite de idade: É possível excluir os instantâneos antigos quando excedem uma determinada idade, mas ainda preservando um número de instantâneos para cada período (por hora, dia, mês ou ano).
Pares de instantâneos
Pre
epost
: os pares de instantâneospre
epost
que não forem diferentes podem ser apagados automaticamente.
Para instantâneos numerados, que incluem pares de instantâneos de administração e instalação, a limpeza é controlada por parâmetros como NUMBER_CLEANUP
, NUMBER_LIMIT
, NUMBER_LIMIT_IMPORTANT
e NUMBER_MIN_AGE
. Os valores padrão são 2-10 para NUMBER_LIMIT
e 4-10 para NUMBER_LIMIT_IMPORTANT
, o que significa que apenas os instantâneos mais recentes são mantidos.
Para instantâneos de linha do tempo, a limpeza é baseada no número de instantâneos que serão mantidos para cada tipo (por hora, dia, semana, mês ou ano). Por exemplo, os instantâneos das últimas 24 horas, o primeiro instantâneo por dia dos últimos sete dias, o primeiro instantâneo capturado no último dia do mês nos últimos doze meses e assim por diante. Os parâmetros incluem TIMELINE_CLEANUP
, TIMELINE_MIN_AGE
e os de intervalo, como TIMELINE_LIMIT_DAILY
, TIMELINE_LIMIT_HOURLY
etc.
Você pode voltar para um instantâneo existente a qualquer momento fazendo a inicialização do respectivo instantâneo e, depois, tornando-o ativo.
Se a partição raiz for menor do que 16 GB, a criação automática de instantâneos será desabilitada por padrão, conforme descrito acima. Nesse caso, você pode criar instantâneos manualmente. Observe o espaço em disco disponível.
Para desabilitar os instantâneos automáticos mesmo que a partição raiz tenha um tamanho suficiente, desabilite-os manualmente durante a instalação na etapa de configuração da partição.
3.2 Snapper na raiz #
Quando o Snapper é configurado para operar na raiz, cada subvolume Btrfs é excluído por padrão.
O comportamento padrão do Snapper é definido em um arquivo de configuração específico a cada partição ou subvolume Btrfs. Esses arquivos de configuração residem em /etc/snapper/configs/
.
3.3 Subvolumes excluídos dos instantâneos #
O principal caso de uso para instantâneos é voltar o sistema para um estado anterior. Portanto, há determinados subvolumes (diretórios) nos quais a criação de instantâneos está desabilitada.
A lista a seguir contém os diretórios que foram excluídos dos instantâneos. Dependendo do produto e da arquitetura, talvez nem todos estejam disponíveis em seu sistema.
/boot/grub2/i386-pc
,/boot/grub2/x86_64-efi
,/boot/grub2/powerpc-ieee1275
,/boot/grub2/s390x-emu
O rollback da configuração do carregador de boot não é suportado. Os diretórios listados acima são específicos da arquitetura. Os dois primeiros diretórios estão presentes nas máquinas AMD64/Intel 64, os dois últimos no IBM POWER e no IBM Z, respectivamente.
-
/home
Se
/home
não residir em uma partição separada, ele será excluído para evitar a perda dos dados criados pelo usuário nos rollbacks./opt
,/usr/local
Esses diretórios são usados durante a instalação manual de produtos de terceiros. Eles são excluídos para evitar a desinstalação das instalações nos rollbacks.
-
/srv
Contém dados de servidores Web e FTP. Ele é excluído para evitar perda de dados nos rollbacks.
-
/tmp
Todos os diretórios com arquivos temporários e caches são excluídos dos instantâneos.
-
/var
Esse diretório contém muitos arquivos de variáveis, incluindo registros, caches temporários, produtos de terceiros em
/var/opt
e o local padrão para imagens de máquina virtual e bancos de dados. Portanto, o subvolume é criado para excluir todos esses dados variáveis dos instantâneos e tem o recurso de cópia em gravação desabilitado.-
/run
Esse diretório contém os dados de runtime do aplicativo e é excluído dos instantâneos para reduzir o tamanho do instantâneo e evitar a inclusão de informações potencialmente confidenciais.
A lista de subvolumes é específica do produto. Para ver quais subvolumes são criados em /
e, portanto, quais diretórios são excluídos do comportamento padrão dos instantâneos, execute:
>
sudo
btrfs subvolume list /
Ao criar um instantâneo, nenhuma cópia de dados físicos é criada. Um instantâneo consiste apenas em ponteiros para os respectivos blocos de dados. Desde que o instantâneo permaneça consistente com o sistema atual, ele não ocupará quase nenhum espaço em disco adicional (além dos metadados contidos nele). No entanto, se um arquivo for modificado no sistema, os dados modificados serão registrados no instantâneo. Com o tempo, conforme as mudanças se acumulam e o instantâneo diverge do sistema ativo, o tamanho do instantâneo aumenta adequadamente.
Para evitar que os discos fiquem cheios (e o sistema se torne inoperante), recomendamos um tamanho mínimo do sistema de arquivos raiz. O tamanho necessário depende do uso do sistema:
A frequência de criação de instantâneos
Por quanto tempo os instantâneos são mantidos
A taxa de mudanças no sistema
Em geral, quanto mais instantâneos você tem, mais tempo eles são mantidos e, se o sistema muda com mais frequência, a partição raiz precisa ser maior.
4 Para obter mais informações #
Para obter mais informações sobre o sistema de arquivos Btrfs, consulte https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-filesystems.html#sec-filesystems-major-btrfs e https://wiki.archlinux.org/title/btrfs.
Para obter mais informações sobre os volumes LVM, consulte https://documentation.suse.com/sles/15-SP5/html/SLES-all/part-lvm.html.
5 Informações legais #
Copyright © 2006-2025 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.