Instantâneos ZFS: Como criar, restaurar e automatizá-los
10 min de leitura - 5 de maio de 2026

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 zfsCriar um pool. Para um único disco (típico em um VPS):
sudo zpool create tank /dev/sdbPara 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-DISK2Ativar a compressão (LZ4 é rápido e eficaz):
sudo zfs set compression=lz4 tankEm seguida, crie conjuntos de dados para as suas cargas de trabalho:
sudo zfs create tank/web
sudo zfs create tank/databasesTirar um instantâneo
O comando básico:
sudo zfs snapshot tank/web@before-updatePara 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_backupVerificar com:
sudo zfs list -t snapshotRestaurar 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-updateIsso é 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_090000Um 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ção | Velocidade | Risco de perda de dados | Melhor para |
|---|---|---|---|
Restauração de ficheiros via .zfs | Depende do tamanho do ficheiro | Nenhum | Eliminações acidentais, recuperação de um único ficheiro |
| Reversão total | Instantâneo | Elevado (perde todas as alterações pós-snapshot) | Actualizações falhadas, problemas em todo o sistema |
| Clone para teste | Instantâneo | Nenhum (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,creationA 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-updateTambé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 trabalho | Por hora | Diária | Semanal | Mensal |
|---|---|---|---|---|
| Produção standard | 24-48 | 30 | 8 | 12 |
| Base de dados (alta rotatividade) | 72 | 30 | 12 | 24 |
| Registos / baixa prioridade | 12-24 | 7 | 0 | 3 |
| Meios estáticos | 0 | 7 | 0 | 3 |
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/webPara 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/webA 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.

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