Instantâneos ZFS: Como criar, restaurar e automatizá-los

10 min de leitura - 5 de maio de 2026

hero section cover
Índice
  • Instantâneos ZFS: Como criar, restaurar e automatizá-los
  • Como funcionam os instantâneos do ZFS
  • Criar instantâneos
  • Restaurar a partir de instantâneos
  • Gerir e podar instantâneos
  • Automatizar a retenção com a Sanoid
  • Replicação fora do local com zfs send
  • Uma nota sobre a proteção contra ransomware
  • Recomendação de vídeo
  • Considerações finais
Partilhar

Saiba como criar, restaurar e automatizar snapshots ZFS no Linux. Abrange comandos, reversão, políticas de retenção e replicação fora do local com a Sanoid

Instantâneos ZFS: Como criar, restaurar e automatizá-los

Um snapshot ZFS é uma cópia somente leitura e pontual do seu sistema de arquivos. Ele é criado instantaneamente, não ocupa espaço até que os dados sejam alterados e permite reverter ou recuperar arquivos em segundos. Se você gerencia servidores, instâncias VPS ou qualquer coisa com dados que não pode perder, os instantâneos devem fazer parte do seu fluxo de trabalho.

Esta postagem aborda como os instantâneos do ZFS funcionam, como usá-los e como automatizar a retenção para que eles não se acumulem.

Como funcionam os instantâneos do ZFS

O ZFS usa um modelo de cópia na gravação (CoW). Quando você tira um snapshot, o ZFS não duplica nenhum dado. Ele simplesmente grava o estado atual da árvore de ponteiros de bloco. Novas gravações vão para blocos livres, enquanto o snapshot continua referenciando os originais.

Isso significa que os instantâneos são criados em microssegundos, independentemente do tamanho do conjunto de dados, e não consomem nenhum espaço adicional na criação. Eles só começam a usar espaço quando o conjunto de dados ativo é alterado, porque o instantâneo mantém os blocos originais que, de outra forma, seriam liberados.

Isto é fundamentalmente diferente das ferramentas de backup ao nível do ficheiro como o rsync ou o tar, que analisam e copiam ficheiros inteiros. Se você alterar 4KB de um arquivo de 10GB, o rsync copia o arquivo inteiro. O ZFS salva apenas o bloco de 4KB.

Snapshots também são imutáveis. Eles são impostos como somente leitura no nível do kernel, então os processos do espaço do usuário (incluindo ransomware) não podem modificá-los. Combinado com a soma de verificação integrada do ZFS, isso significa que você pode verificar a integridade dos dados na restauração.

Criar instantâneos

Pré-requisitos

Você precisará do ZFS instalado e de um pool configurado. No Ubuntu 20.04+:

sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfs

Criar um pool. Para um único disco (típico em um VPS):

sudo zpool create tank /dev/sdb

Para uma configuração espelhada num servidor dedicado, utilize IDs de disco em vez de nomes de dispositivos para evitar problemas após os reinícios:

sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2

Ativar a compressão (LZ4 é rápido e eficaz):

sudo zfs set compression=lz4 tank

Em seguida, crie conjuntos de dados para as suas cargas de trabalho:

sudo zfs create tank/web
sudo zfs create tank/databases

Tirar um instantâneo

O comando básico:

sudo zfs snapshot tank/web@before-update

Para nomes com carimbo de data/hora (útil com o cron):

sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)

Para capturar todos os conjuntos de dados filhos de uma só vez, use o sinalizador recursivo:

sudo zfs snapshot -r tank@daily_backup

Verificar com:

sudo zfs list -t snapshot

Restaurar a partir de instantâneos

Restaurando arquivos individuais

Cada conjunto de dados ZFS tem um diretório .zfs/snapshot oculto em seu ponto de montagem. Ele não aparecerá no ls, mas você pode navegar diretamente para ele:

ls /tank/web/.zfs/snapshot/before-update/

Para restaurar um único arquivo:

cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/

O sinalizador -p preserva as permissões e as marcas de tempo.

Reverter um conjunto de dados inteiro

Se precisar de reverter tudo, por exemplo, após uma atualização falhada:

sudo zfs rollback tank/web@before-update

Isso é quase instantâneo porque o ZFS atualiza os ponteiros de bloco ao invés de copiar os dados. Mas é destrutivo: todas as mudanças feitas após o snapshot são permanentemente perdidas.

Se existirem snapshots mais recentes entre o destino e o estado atual, o ZFS bloqueará o rollback. Use -r para forçá-lo e remover esses snapshots intermediários:

sudo zfs rollback -r tank/db@20260426_090000

Um bom hábito: faça um snapshot do estado atual (quebrado) antes de fazer o rollback, para que você tenha uma alternativa se necessário.

Método de recuperaçãoVelocidadeRisco de perda de dadosMelhor para
Restauração de ficheiros via .zfsDepende do tamanho do ficheiroNenhumEliminações acidentais, recuperação de um único ficheiro
Reversão totalInstantâneoElevado (perde todas as alterações pós-snapshot)Actualizações falhadas, problemas em todo o sistema
Clone para testeInstantâneoNenhum (cria um conjunto de dados paralelo)Verificar antes de efetuar um rollback

Gerir e podar instantâneos

Os instantâneos começam com um tamanho zero, mas crescem à medida que os dados em tempo real mudam por baixo deles. Para verificar a utilização do espaço:

zfs list -t snapshot -o name,used,refer,creation

A coluna USED mostra quanto espaço é exclusivo para esse instantâneo. REFER mostra o tamanho total do conjunto de dados quando o instantâneo foi tirado.

Para eliminar um instantâneo:

sudo zfs destroy tank/web@before-update

Também é possível eliminar por padrão:

sudo zfs destroy tank/web@daily-2026-04-%

Sempre primeiro a execução a seco:

sudo zfs destroy -nv tank/web@daily-%

O ZFS pode tecnicamente lidar com milhões de snapshots, mas o desempenho degrada-se após alguns milhares por conjunto de dados. Comandos como zfs list e zfs destroy ficam visivelmente mais lentos. Mantenha a retenção apertada.

Automatizar a retenção com a Sanoid

A Sanoid é a ferramenta padrão para automatizar a criação e a remoção de snapshots do ZFS. Você define as políticas de retenção em sanoid.conf, e ele cuida do resto.

Uma configuração típica de produção pode ser assim:

Tipo de carga de trabalhoPor horaDiáriaSemanalMensal
Produção standard24-4830812
Base de dados (alta rotatividade)72301224
Registos / baixa prioridade12-24703
Meios estáticos0703

A Sanoid também suporta snapshots de hora em hora através do parâmetro frequently. Configurando frequently = 96 e frequent_period = 15, obtém-se um snapshot a cada 15 minutos.

Programe o Sanoid via cron para rodar a cada minuto ou a cada 15 minutos, e ele criará e removerá snapshots automaticamente.

Replicação fora do local com zfs send

Os instantâneos num único servidor protegem contra alterações acidentais e falhas de software, mas não contra a perda de hardware. Para isso, replique fora do local utilizando zfs send e zfs receive através de SSH:

zfs send tank/web@backup | ssh user@remote zfs receive backup/web

Para transferências incrementais (enviando apenas o que mudou desde o último snapshot):

zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/web

A ferramenta companheira da Sanoid, syncoid, automatiza este processo e lida com envios incrementais, recuperação de erros e registo.

Uma nota sobre a proteção contra ransomware

Os snapshots ZFS são apenas de leitura ao nível do kernel, o que significa que o malware padrão não os pode modificar ou encriptar. Essa é uma forte camada de defesa. Mas não é à prova de bala: se um atacante obtiver acesso root, ele pode excluir os instantâneos antes de criptografar seus dados.

Os instantâneos devem ser uma camada de uma estratégia mais ampla. Combine-os com replicação fora do local, acesso à raiz restrito e segurança ao nível da rede. Não confie apenas nos instantâneos.

Recomendação de vídeo

Considerações finais

Os snapshots ZFS são rápidos, eficientes em termos de espaço e simples de usar, uma vez que você entenda o básico. Não são um substituto para backups externos, mas preenchem uma lacuna que as ferramentas de backup tradicionais não conseguem: pontos de recuperação instantâneos e sem custo adicional que podem ser usados sempre que necessário.

Se você estiver executando o ZFS em um VPS ou servidor dedicado, configure o Sanoid, defina uma política de retenção e automatize a replicação. Leva 30 minutos para configurar e economiza horas quando algo dá errado. Experimente-o em um VPS ou servidor dedicado FDC.

Blogue

Em destaque esta semana

Mais artigos
Instantâneos ZFS: Como criar, restaurar e automatizá-los

Instantâneos ZFS: Como criar, restaurar e automatizá-los

Saiba como criar, restaurar e automatizar snapshots ZFS no Linux. Abrange comandos, reversão, políticas de retenção e replicação fora do local com a Sanoid

10 min de leitura - 5 de maio de 2026

Como instalar e usar o Redis em um VPS

9 min de leitura - 7 de janeiro de 2026

Mais artigos