ZFS

Tutorial de instantâneos do ZFS

Tutorial de instantâneos do ZFS

Os instantâneos são importantes se você estiver executando uma máquina virtual simples em seu computador doméstico ou se for um banco de dados corporativo que está constantemente sendo atualizado e modificado. Ter snapshots, ou seja, uma cópia de todo o sistema de arquivos como estava em um determinado período de tempo é importante.

Muitas vezes as pessoas perdem o controle de onde as coisas deram errado, um arquivo foi excluído e ninguém percebeu que ele havia sumido. Vários backups passaram e agora você percebe que um arquivo importante está faltando em todos os backups disponíveis das últimas 5 semanas. Neste tutorial, veremos como usar os instantâneos do ZFS e abordar as várias políticas de instantâneo que funcionariam de maneira ideal, em termos de utilização de recursos e capacidade de recuperação.

Mecanismo Copy-On-Write

O ZFS tem uma visão geral de alto nível de arquivos e diretórios e entende como os dados são gravados no disco. Ao gravar dados fisicamente em um disco, isso é feito em blocos discretos. Normalmente, o tamanho do bloco pode ir até 1 MB, mas o padrão é geralmente 128 KB. Agora, isso significa que cada modificação (leitura, gravação ou exclusão) acontecerá nos blocos discretos.

O mecanismo copy-on-write garante que sempre que um bloco é modificado, em vez de modificar o bloco diretamente, ele faz uma cópia do bloco com as modificações necessárias feitas no novo bloco.

Isso é especialmente útil nos casos em que, digamos, há uma queda de energia e o sistema trava enquanto novos dados estão sendo gravados no disco. Se isso acontecer em um sistema de arquivos tradicional, seus arquivos serão corrompidos ou deixados com buracos. Mas se você estiver usando ZFS, você pode perder a transação em andamento enquanto isso estava acontecendo, mas o último estado válido de seus arquivos ainda será deixado intocado.

Os instantâneos também contam com essa funcionalidade e, na verdade, bastante. Quando você tira um instantâneo de um determinado conjunto de dados ('conjunto de dados' é o termo ZFS para um sistema de arquivos), o ZFS apenas registra o carimbo de data / hora quando o instantâneo foi feito. É isso! Nenhum dado é copiado e nenhum armazenamento extra é consumido.

Somente quando o sistema de arquivos muda e os dados nele divergem do instantâneo, o instantâneo começa a consumir armazenamento extra. O que acontece nos bastidores é o seguinte - em vez de reciclar os blocos antigos com o tempo, o ZFS os mantém por perto. Isso também melhora a utilização de armazenamento. Se você tirar um instantâneo de um conjunto de dados de 20 GB e modificar apenas alguns arquivos de texto aqui e ali, o instantâneo pode ocupar apenas alguns MBs de espaço.


Criação de instantâneos

Para demonstrar o uso de instantâneos, vamos começar com um conjunto de dados que tem muitos arquivos de texto, apenas para manter o assunto simples. A máquina virtual que usarei para a demonstração está executando o FreeBSD 11.1-RELEASE-p3 que é a versão estável mais recente disponível no momento da redação deste artigo. O sistema de arquivos raiz é montado no zroot pool por padrão e muitos dos diretórios familiares, como / usr / src, / home, / etc são todos os seus próprios conjuntos de dados montados em zroot. Se você não sabe o que significa um pool (ou um zpool), no vernáculo do ZFS, vale a pena ler antes de continuar.

Um dos muitos sistemas de arquivos, ou conjuntos de dados, que vêm por padrão no FreeBSD é: zroot / usr / src

Para ver suas propriedades, execute o seguinte comando.

[email protegido]: ~ $ zfs list zroot / usr / src

Como você pode ver, ele usa 633 MB de armazenamento. Ele contém toda a árvore de origem do sistema operacional.

Vamos tirar um instantâneo de zroot / usr / src

[email protegido]: ~ $ zfs snapshot zroot / usr / [email protegido]

O símbolo @ atua como um delimitador entre o conjunto de dados e o nome do instantâneo, que em nosso caso é instantâneo1.

Agora vamos dar uma olhada no estado do instantâneo à medida que ele é criado.

Executando o comando:

zfs list -rt all zroot / usr / src

Você pode ver que o instantâneo não usa espaço extra quando nasce. Também não há espaço disponível, porque é um conjunto de dados estritamente somente leitura, o instantâneo em si não pode aumentar, modificar ou encolher. Por último, ele não é montado em qualquer lugar, o que o torna completamente isolado da hierarquia do sistema de arquivos fornecida.

Agora, vamos remover o sbin diretório em / usr / src /

[email protegido]: $ rm / usr / src / sbin

Olhando para o instantâneo, você verá agora que ele cresceu,

Isso é esperado porque o mecanismo de cópia na gravação está em funcionamento aqui e a exclusão (ou modificação) dos arquivos fez com que mais dados fossem associados apenas ao instantâneo e não ao conjunto de dados realmente em uso.

Observe a coluna REFER na saída acima. Dá-lhe a quantidade de dados acessíveis no conjunto de dados, enquanto a coluna USED apenas mostra quanto espaço está ocupado no disco físico.

O mecanismo Copy-On-Write do ZFS muitas vezes dá esses resultados contra-intuitivos, em que a exclusão de um arquivo faria com que parecesse que agora está sendo usado mais espaço do que antes. No entanto, tendo lido até agora, você sabe o que realmente está acontecendo!

Antes de terminar, vamos recuperar o sbin a partir de instantâneo1. Para fazer isso, basta executar:

[email protegido]: / usr / src $ zfs rollback zroot / usr / [email protegido]

Política de instantâneos

A próxima pergunta a fazer é - Com que frequência você deseja tirar os instantâneos? Embora possa variar de uma empresa para outra, vamos pegar o exemplo de um banco de dados muito dinâmico que muda de vez em quando.

Para começar, você começaria a tirar instantâneos a cada 6 horas ou mais, mas como o banco de dados muda tanto, logo se tornaria inviável armazenar todos os inúmeros instantâneos que foram criados. Portanto, a próxima etapa seria limpar os instantâneos com mais de, digamos, 48 ​​horas.

Agora, o problema seria recuperar algo que se perdeu há 49 horas. Para contornar esse problema, você pode manter um ou dois instantâneos desse histórico de 48 horas e mantê-los por uma semana. Limpe-os quando ficarem mais velhos do que isso.

E se você continuar assim, você pode empinar instantâneos até a própria gênese do sistema, apenas em ordem decrescente de frequência. Por último, gostaria de salientar que esses instantâneos são APENAS PARA LEITURA, o que significa que se você for infectado por um ransomware e tiver todos os seus dados criptografados (modificados). Esses instantâneos, muito provavelmente, ainda estariam intactos.

Portas de código aberto para motores de jogos comerciais
Recriações gratuitas, de código aberto e de mecanismo de jogo de plataforma cruzada podem ser usadas para jogar jogos antigos, bem como alguns dos tít...
Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...