ZFS é um sistema de arquivo local e gerenciador de volume lógico criado pela Sun Microsystems Inc. para direcionar e controlar a colocação, armazenamento e recuperação de dados em sistemas de computação de classe empresarial.

O sistema de arquivo ZFS e gerenciador de volume é caracterizado pela integridade dos dados, alta escalabilidade e recursos de armazenamento incorporados como:

  • Replicação – o processo de fazer uma réplica (uma cópia) de algo.
  • Deduplicação – um processo que elimina cópias redundantes de dados e reduz a sobrecarga de armazenamento.
  • Compressão – uma redução no número de bits necessários para representar os dados.
  • Snapshots – um conjunto de marcadores de referência para dados em um determinado momento.
  • Clones – uma cópia idêntica de algo.
  • Protecção de dados – o processo de protecção de informação importante contra corrupção e/ou perda.

História de ZFS

Engenheiros de Sol começaram o trabalho de desenvolvimento de ZFS em 2001 para o sistema operacional (SO) Solaris baseado em Unix da empresa. Em 2005, a Sun lançou o código fonte ZFS sob uma licença de desenvolvimento e distribuição comum (CDDL) como parte do sistema operacional OpenSolaris de código aberto. Uma comunidade de desenvolvedores, incluindo representantes da Sun e outros fornecedores, trabalhou em melhorias no código fonte aberto e portou ZFS para SOs adicionais, incluindo FreeBSD, Linux e Mac OS X.

O projeto OpenSolaris de código aberto, que incluiu ZFS, terminou após a Oracle Corp. ter adquirido a Sun em 2010 e registrado o termo ZFS. Os engenheiros da Oracle continuam a melhorar e adicionar recursos ao ZFS no Solaris. A Oracle usa seu código proprietário ZFS como base para Oracle Solaris, o Oracle ZFS Storage Appliance e outras tecnologias Oracle.

Uma comunidade de desenvolvimento iniciou um novo projeto de código aberto, chamado OpenZFS, baseado no código fonte ZFS na versão final do OpenSolaris. A comunidade aberta trabalha em novos recursos, melhorias e correções de bugs para o código OpenZFS. Os sistemas operacionais que suportam OpenZFS incluem Apple OS X, FreeBSD, illumos (que é baseado no OpenSolaris), e variantes do Linux como Debian, Gentoo e Ubuntu. O OpenZFS funciona em todas as distribuições Linux, mas apenas alguns vendedores comerciais o fornecem como parte de suas distribuições. Empresas com produtos comerciais construídos no OpenZFS incluem Cloudscaling, Datto, Delphix, Joyent, Nexenta, SoftNAS e Spectra Logic.

ZFS e OpenZFS tendem a atrair empresas que precisam gerenciar grandes quantidades de dados e garantir a integridade dos dados. Os usuários incluem instituições científicas, laboratórios nacionais, agências governamentais, empresas financeiras, telecomunicações e empresas de mídia e entretenimento.

ZFS inicialmente significava Zettabyte File System, mas a palavra zettabyte não tem mais nenhum significado no contexto do sistema de arquivos. Como um sistema de arquivo de 128 bits, ZFS tem o potencial de escalar para 256 quadrilhões de zettabytes.

Como ZFS funciona

ZFS é projetado para rodar em um único servidor, potencialmente com centenas se não milhares de unidades de armazenamento anexadas. ZFS agrupa o armazenamento disponível e gerencia todos os discos como uma única entidade. Um usuário pode adicionar mais unidades de armazenamento ao pool se o sistema de arquivos precisar de capacidade adicional. O ZFS é altamente escalável e suporta um grande tamanho máximo de arquivo.

ZFS armazena pelo menos duas cópias de metadados cada vez que os dados são gravados no disco. Os metadados incluem informações tais como os setores do disco onde os dados são armazenados, o tamanho dos blocos de dados e um checksum dos dígitos binários de um pedaço de dado. Quando um usuário solicita acesso a um arquivo, um algoritmo de soma de verificação executa um cálculo para verificar se os dados recuperados correspondem aos bits originais gravados no disco. Se o checksum detectar uma inconsistência, ele sinaliza os dados ruins. Em sistemas com um pool de armazenamento espelhado ou a versão ZFS do RAID, o ZFS pode recuperar a cópia correta da outra unidade e reparar a cópia de dados danificados.

ZFS é comumente referido como um sistema de arquivo copy-on-write, embora a Oracle o descreva como redirecionamento na gravação. Quando o ZFS grava dados no disco, ele não sobrescreve os dados no lugar. ZFS grava um novo bloco em um local diferente no disco e atualiza os metadados para apontar para o bloco recém escrito, enquanto também retém versões antigas dos dados.

Um verdadeiro sistema de arquivo copy-on-write faria uma réplica exata de um bloco de dados em um local separado antes de sobrescrever o bloco original. Antes de sobrescrever os dados, o sistema precisaria ler o valor anterior do bloco. Um sistema de arquivo copy-on-write requer três operações de E/S — ler, modificar e gravar — para cada gravação de dados. Em contraste, um sistema de redirecionamento na gravação requer apenas uma operação de E/S, facilitando maior eficiência e desempenho.

ZFS é uma escolha popular para sistemas de armazenamento conectado à rede, rodando NFS no topo do sistema de arquivos, bem como em ambientes de servidor virtual. Outro cenário comum de implantação é a criação de um sistema de arquivos em cluster, como o Sistema de Arquivos Paralelos Gerais (GPFS) ou Lustre, em cima do ZFS para permitir o escalonamento para nós adicionais do servidor. Os usuários do OpenStack podem implementar o ZFS como o sistema de arquivos subjacente para armazenamento em bloco Cinder e armazenamento de objetos Swift.

Key features of ZFS

Snapshots e clones: ZFS e OpenZFS podem fazer cópias point-in-time do sistema de arquivos com grande eficiência e velocidade porque o sistema retém todas as cópias dos dados. Snapshots são cópias imutáveis do sistema de arquivos, enquanto os clones podem ser modificados. Snapshots e clones são integrados em ambientes de inicialização com ZFS no Solaris, permitindo que os usuários retornem para um snapshot se algo der errado quando corrigirem ou atualizarem o sistema. Outro benefício potencial do ZFS é como uma técnica de recuperação contra o ransomware.

RAID-Z: RAID-Z permite que os mesmos dados sejam armazenados em vários locais para aumentar a tolerância a falhas e melhorar o desempenho. O sistema reconstrói os dados no drive perdido usando as informações armazenadas nos outros drives do sistema. Semelhante ao RAID 5, o RAID-Z risca as informações de paridade em cada drive para permitir que um sistema de armazenamento funcione mesmo que um drive falhe. No entanto, com RAID-Z, os dados em faixas são um bloco completo, que é variável em tamanho. Embora o RAID-Z seja tipicamente comparado ao RAID 5, ele executa algumas operações de forma diferente para resolver certos problemas de longa data com o RAID tradicional. Um problema que o RAID-Z aborda é conhecido como o efeito “write hole”, onde um sistema não pode determinar quais dados ou blocos de paridade foram gravados no disco devido a uma falha de energia ou a uma interrupção catastrófica do sistema. Os fornecedores de sistemas que utilizam RAID tradicional normalmente resolvem o problema através do uso de uma fonte de alimentação ininterrupta ou hardware dedicado.

RAID-Z2 suporta a perda de duas unidades de armazenamento, semelhante ao RAID 6, e o RAID-Z3 pode tolerar a perda de três dispositivos de armazenamento. Os usuários têm a opção de organizar as unidades em grupos, como com o RAID convencional. Por exemplo, um sistema com dois grupos de seis drives configurados como RAID-Z3 pode tolerar a perda de três drives em cada grupo.

Compressão: A compressão de dados em linha é um recurso incorporado em ZFS e OpenZFS para reduzir o número de bits necessários para armazenar dados. ZFS e OpenZFS suportam um número de algoritmos de compressão. Os usuários têm a opção de ativar ou desativar a compressão em linha.

Deduplicação: A deduplicação de dados em linha é um recurso embutido no ZFS e OpenZFS que permite a eficiência do armazenamento eliminando dados redundantes. ZFS e OpenZFS encontram os dados duplicados olhando para o checksum de um bloco, que pode variar em tamanho. Os usuários podem ativar ou desativar a deduplicação em linha.

ZFS enviar/receber: ZFS e OpenZFS permitem que um snapshot do sistema de arquivos seja enviado para um nó de servidor diferente, permitindo que um usuário replique dados para um sistema separado para propósitos como backup ou migração de dados para armazenamento em nuvem.

Security: ZFS e OpenZFS suportam permissões delegadas e listas de controle de acesso mais finas para gerenciar quem pode realizar tarefas administrativas. Os usuários têm a opção de definir o ZFS como somente leitura, para que nenhum dado possa ser alterado. Oracle suporta criptografia no ZFS em Solaris.

ZFS vantagens e limitações

ZFS integra o sistema de arquivos e o gerenciador de volume para que os usuários não tenham que obter e aprender ferramentas e conjuntos de comandos separados. ZFS oferece um rico conjunto de recursos e serviços de dados sem custo, uma vez que está incorporado no sistema operacional Oracle. O OpenZFS é de código aberto e está disponível gratuitamente. O sistema de arquivos pode ser expandido adicionando unidades ao pool de armazenamento. Os sistemas de arquivo tradicionais requerem que a partição de disco seja redimensionada para aumentar a capacidade, e os usuários geralmente precisam de produtos de gerenciamento de volume para ajudá-los.

ZFS é limitado a rodar em um único servidor, em contraste com sistemas de arquivo distribuídos ou paralelos, como GPFS e Lustre, que podem ser escalados para vários servidores.

O rico conjunto de recursos oferecido com ZFS pode tornar o software complicado de usar e gerenciar. Recursos como os algoritmos de soma de verificação ZFS integrados podem requerer poder de processamento adicional e afetar a performance.

Na comunidade Linux, há várias opiniões sobre licenciamento com respeito à redistribuição do código ZFS e módulos do kernel binário. Por exemplo, a Red Hat considera problemático distribuir código protegido sob uma CDDL com código protegido sob uma licença pública geral (GPL). Em contraste, a Canonical, que distribui o Ubuntu, determinou que ele está em conformidade com os termos das licenças CDDL e GPL.

ZFS vs. OpenZFS

Oracle’s ZFS e OpenZFS de código aberto derivam do mesmo código fonte ZFS. Em caminhos separados, Oracle e a comunidade de código aberto adicionaram extensões e fizeram melhorias significativas na performance do ZFS e OpenZFS, respectivamente. As atualizações do Oracle ZFS são proprietárias e estão disponíveis apenas em tecnologias Oracle. As atualizações para o código aberto OpenZFS estão disponíveis gratuitamente.

A lista de melhorias que a Oracle tem feito no ZFS desde 2010 inclui:

  • encryption;
  • suporte para a persistência de dados comprimidos através de reinicializações de SO no cache de substituição adaptável L2 (ARC);
  • etiqueta de Firmware Extensível que fornece suporte para discos físicos e volumes de discos virtuais maiores que 2 TB em tamanho;
  • quotas padrão de usuário e grupo; e
  • monitoramento de sistema de pool/arquivo.

A lista de atualizações que a comunidade de código aberto fez para o OpenZFS inclui:

  • algoritmos de compressão adicional;
  • envio/recepção retomável, que permite que uma operação de envio/recepção ZFS de longa duração seja reiniciada a partir do ponto de interrupção do sistema;
  • envio/recepção comprimido, que permite que o sistema envie dados comprimidos de um pool ZFS para outro sem ter que descomprimir/recomprimir os dados ao mover-se do nó de envio para o destino;
  • ARC comprimido, que permite ao ZFS manter os dados comprimidos na memória, permitindo um conjunto de dados de trabalho maior em cache; e
  • aumento do tamanho máximo do bloco de 128 KB para 16 MB para melhorar o desempenho quando se trabalha com arquivos grandes e acelerar a reconstrução dos dados quando se recupera de uma falha do drive.

Deixe uma resposta

O seu endereço de email não será publicado.