openzfs logo

Introdução ao sistema de arquivos ZFS

O atual ZFS é um sistema de arquivos avançado, projetado para dar respostas a uma série de problemas encontrados em outros projetos de sistemas de arquivos.
Nascido nos laboratórios da Sun, o atual desenvolvimento em código aberto do projeto faz parte do OpenZFS Project.
O Z File System ou ZFS tem 3 grandes alvos:

  1. Integridade de dados — Cada informação armazenada inclui um checksum de si mesma.
    Quando dados são gravados, o checksum é calculado e gravado junto.
    O checksum será calculado novamente, a cada leitura. Se os dois resultados não coincidirem, o sistema avisa sobre a presença de erro.
    havendo redundância de dados disponível, o ZFS vai sempre tentar corrigir automaticamente os erros que encontrar.
  2. Checksum algorythm ou algoritmo de soma de verificação é um método usado para verificar a integridade de dados, que tenham trafegado ou sido gravados em alguma mídia.

  3. storage pools — O conceito se refere a um conjunto de dispositivos físicos ou virtuais, reunidos em um pool ou reservatório.
    A este pool, novos dispositivos sempre podem ser adicionados.
    Quando algum espaço é alocado em um pool de armazenamento, este pode ser disponibilizado a todo o sistema de arquivos.
  4. Performance — Um mecanismo de caching múltiplo ajuda a melhorar a performance do sistema.
    O ZFS conta com o ARC, um sistema de leitura de cache, baseado na memória.
    Um segundo nível de leitura de cache, baseado em disco pode ser adicionado, com o L2ARC.
    Por fim, há um sistema de escrita assíncrona em disco, também disponível, chamado ZIL.

Ao final deste texto, há um glossário com termos relacionados ao ZFS. Consulte-o sempre que precisar.

O que diferencia o ZFS de outros sistemas

O ZFS é significativamente diferente de outros sistemas (principalmente anteriores), por que é mais do que apenas um sistema de arquivos.
Com a combinação de papéis entre o gestor de volumes e o sistema de arquivos, o ZFS provê vantagens exclusivas.
Sua arquitetura permite que o sistema de arquivos saiba o que ocorre na camada inferior da estrutura de discos.
Sistemas tradicionais, só poderiam ser criados um em cada disco. Havendo dois discos, dois sistemas de arquivos deveriam ser criados — um para cada.
Em uma configuração RAID, seria possível contornar este problema — apresentando ao sistema de arquivos um único disco lógico, formado pelo espaço somado de vários discos físicos ou virtuais. Neste caso, o sistema “pensa” que está lidando com apenas um único dispositivo de armazenamento.
O ZFS atua em conjunto com o gestor de volumes e permite a criação de vários sistemas de arquivos em um pool de armazenamento.
Uma das maiores vantagens da onisciência do ZFS em relação ao layout físico das mídias de armazenamento é que isto permite aos sistemas de arquivos crescer à medida em que novos dispositivos são adicionados ao pool. O novo espaço se torna disponível a todo o sistema de arquivos.
O ZFS também possui a capacidade de aplicar diferentes propriedades a cada sistema de arquivos que compõe seu ecossistema — o que pode tornar vantajoso ter vários deles, além de datasets, no lugar de trabalhar com um único sistema monolítico.

Requisitos do sistema

Por ter sido originalmente projetados para o sistema UNIX da Sun, Solaris, o ZFS foi considerado por muito tempo como um sistema de arquivos moldado para grandes servidores e para companhias em condições (financeiras) de manter os melhores e mais poderosos hardwares disponíveis no mercado — portanto, fora da realidade dos pequenos PCs.
O fato é que depois de ter sido portado para inúmeras outras plataformas de código aberto (BSD, Illumos e Linux — sob a tutela da organização OpenZFS), estes requerimentos caíram.
Além disto, os sistemas dos PCs também se tornaram mais robustos, o que contribuiu para que a tecnologia se tornasse mais acessível.
logo oficial openzfs
Atualmente, os requisitos de sistema de hardware são:

  • memória ECC — que não é obrigatório, mas é fortemente recomendado.
  • de 8 a 16 GB de espaço em disco, pelo menos, para obter melhor performance.
    É possível usar o ZFS em espaços menores (e eu uso). Contudo, para usufruir de recursos avançados de deduplicação, por exemplo, vai ser necessário ter mais espaço de armazenamento.
  • Como limitação, se você pretende inicializar o sistema de um dataset ZFS, não é possível criar um root pool com mais discos físicos do que é suportado pelo seu hardware (BIOS).
    Este limite é, usualmente, 8 discos.
    Alguns softwares de virtualização, como o VirtualBox, pode lidar apenas com 4.

Diante disto, é seguro afirmar que qualquer máquina atual atende, com folga, os pré-requisitos para instalar e usar o ZFS.
Além disto, recomenda-se usar o kernel Linux mais atual possível, em um sistema 64 bit.

Como instalar suporte ao ZFS no Linux

A implementação prática do suporte via FUSE, no Debian, é abordada no artigo Como implementar suporte ao sistema de arquivos ZFS no Debian.

Terminologia do ZFS

Se você está estudando o assunto, ou deseja entender melhor alguns termos usados neste artigo, segue um pequeno glossário do tema.

  • boot environment — se refere ao ambiente inicializável — Oracle Solaris, GNU/Linux etc. — que consiste de um sistema raíz ZFS e, eventualmente, outros sistemas de arquivos montados embaixo dele.
    Um único boot environment pode estar ativo a cada vez.
  • checksum — um hash de 256-bit de dados em um bloco do sistema (system block).
    A capacidade do checksum varia do simples e rápido fletcher4 a hashes criptograficamente robustos, tais como o SHA256.

    O Fletcher checksum é um algoritmo desenvolvido por John G. Fletcher nos laboratórios da Lawrence Livermore, nos anos 70.
    O algoritmo oferece propriedades de detecção de erros como o mínimo de esforço computacional.

  • clone — é um sistema de arquivos, cujo conteúdo é idêntico ao de um snapshot.
  • dataset — Nome genérico dado a um dos seguintes componentes de um sistema de arquivos ZFS:
    1. clone
    2. sistema de arquivos
    3. snapshot
    4. volume

    Cada dataset é identificado por um nome único em um espaço de nomes ZFS (ZFS namespace), de acordo com o seguinte formato:
    pool/path[@snapshot] em ‘pool’ é o nome do pool de armazenamento que contém o dataset e ‘path’ é o caminho ou endereço do componente.
    O nome entre colchetes se refere a um componente opcional que identifica o snapshot do dataset.

  • mirror — é um dispositivo virtual que armazena cópias de dados idênticas em dois ou mais discos.
    Se qualquer um dos discos dentro de um mirror (espelho) falhar, outro disco pode prover os mesmos dados.
  • pool — se refere a um grupo lógico de dispositivos dentro de um layout de armazenamento.
    O espaço em disco para acomodar os datasets (componentes de um sistema ZFS) é alocado em um pool.
    Em uma tradução livre, o termo storage pool quer dizer tanque de armazenagem ou reservatório de armazenamento.
  • RAID-Z — é um dispositivo virtual que armazena dados e paridades em múltiplos discos.
  • resilvering — é o processo de copiar dados de um dispositivo a outro.
    Por exemplo, se um dispositivo espelho (mirror) for retirado ou substituído, os dados de um outro espelho atualizado são copiados para dentro do novo dispositivo que for colocado no lugar.
  • snapshot — uma cópia apenas-para-leitura (read-only copy) de um sistema de arquivos ou de um volume, em um determinado ponto no tempo.
  • dispositivo virtual — é um dispositivo lógico dentro de um pool, que pode ser um dispositivo físico, um arquivo ou uma coletânea de dispositivos.
  • volume — é um componente ZFS (dataset) que representa um dispositivo de bloco. Um dispositivo usado para swap, por exemplo, é um volume ZFS.

Referências

https://elias.praciano.com/2016/01/como-instalar-suporte-ao-sistema-de-arquivos-zfs-no-debian/
https://docs.oracle.com/cd/E23824_01/html/821-1448/ftyue.html#scrolltoc
https://www.freebsd.org/doc/handbook/zfs.html
http://zfsonlinux.org/faq.html

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

4 thoughts on “Introdução ao sistema de arquivos ZFS”

  1. Excelente abordagem sobre o assunto, man! Sempre venho ao seu site primeiro para aprender mais sobre esses e outros assuntos referentes à tecnologia. Tenho você, também, como referência para o meu aprendizado do dia-a-dia. Obrigado por compartilhar seus conhecimentos!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *