ZFS no GNU/Linux

Este artigo é uma introdução básica ao uso do sistema de arquivos ZFS no GNU/Linux.

[ Hits: 28.322 ]

Por: Fernando em 15/08/2015 | Blog: https://github.com/phoemur/


Introdução



ZFS é um sistema de arquivos livre, desenvolvido pela Sun Microsystems (atualmente Oracle) para seu sistema operacional Solaris. O significado original era Zettabyte File System, porém agora é um pseudo-acrônimo.

As características do ZFS incluem grande capacidade de armazenamento, integração de conceitos de sistema de arquivos e administração de volumes (LLVM), RAID via software, nova estrutura de dados no disco, sistema de arquivos de rápido acesso, administração de espaços de armazenamento eficiente, compressão dos dados eficiente (LZMA ou GZIP), segurança e proteção contra corrupção dos dados, checagem contínua da integridade dos dados com reparação automática, instantâneos (snapshots), implementação nativa NFSv4 ACLs.

Tudo isso de forma fácil e com a mesma ferramenta de administração do sistema de arquivos.

Características do ZFS

1. Integridade dos dados

Uma das principais características que distingue ZFS dos demais sistemas de arquivos é seu foco na integridade dos dados.

Todos os ponteiros com blocos de um sistema de arquivos contém um checksum (fletcher4 ou SHA-256) sobre o bloco apontado, que é checado ao se ler o bloco. Se houver divergência com o checksum, o sistema de arquivos consegue corrigir os dados automaticamente se houver outra cópia disponível (Mirror, RAID-Z, journal/ZIL ou então redundância no mesmo volume). Tudo isso de forma automática e online, sem necessitar desmontar o volume como nos sistemas que utilizam-se da ferramente fsck (etx3, etx4 etc.).

Isso torna o sistema de arquivos extremamente eficiente contra a bad blocks e dados corrompidos.

2. Capacidade de armazenamento

ZFS é um sistema de arquivos de 128 bits, ou seja, suporta 1,84 × 10^19 vezes a capacidade de um sistema de arquivos de 64 bits como o BTRFS. Os limites de ZFS estão desenhados para ser tão grandes que não se encontram nunca na pratica. Sobre a capacidade do sistema, Jeff Bonwick, o arquiteto chefe da Sun para ZFS, disse: "Criar um sistema de arquivos de 128 bits excederia os limites quânticos de armazenamento da terra."

Alguns limites teóricos do ZFS:
  • 2^48 - número de entradas em um diretório individual
  • 2^64 bytes - tamanho máximo de um arquivo
  • 2^64 bytes - tamanho máximo de qualquer atributo
  • 2^78 bytes - tamanho máximo de um pool
  • 2^56 - número de atributos de um arquivo
  • 2^64 - número de dispositivos em qualquer pool
  • 2^64 - número de pools em um sistema
  • 2^64 - número de sistemas de arquivos em um pool
  • 2^128 bytes (340,282,366,920,938,463,463,374,607,431,768,211,456 bytes) - capacidade máxima de armazenamento

Como exemplo das capacidades expressadas por estes números, se um indivíduo criasse 1000 arquivos por segundo, levaria 8925,51 anos para alcançar o limite imposto pelo número de arquivos (2^48) em um diretório.

3. Modelo transacional (Copy-on-write)

ZFS utiliza um modelo transacional copy-on-write. Todos os ponteiros com blocos de um sistema de arquivos contém um checksum (fletcher ou SHA-256) sobre o bloco apontado, que se comprova ao ler o bloco. Os blocos que contém dados ativos não se sobrescrevem nunca; em seu lugar, se reserva um novo bloco, e os dados modificados se escrevem nele, então qualquer bloco de metadados que o referencie é, de modo similar, recuperado e escrito. Para reduzir a sobrecarga deste processo, se agregam varias atualizações em grupos de transações, e se utiliza um log de eventos quando se necessitam escrituras síncronas.

4. Snapshots

Como ZFS não sobrescreve dados, tomar um instantâneo (snapshot) simplesmente significa não liberar os blocos utilizados por versões antigas de dados. A vantagem é que os instantâneos se tomam rapidamente e também são eficientes desde o ponto de vista do espaço, pois compartilham os dados sem modificar com o sistema de arquivos.

Podem ser criados instantâneos modificáveis (chamados clones), o que resulta em dois sistemas de arquivos independentes que se criam compartilhando um conjunto comum de blocos. A medida que se realizam trocas os blocos do sistema de arquivos divergem, porém os blocos comuns se manterão independentemente de quantos clones existam.

É possível voltar o sistema de arquivos a um snapshot anterior após alguma mudança indesejada, o que funciona parecido com pontos de restauração do sistema no Windows.

4. Dynamic striping

A medida que se anexem dispositivos de armazenamento ao pool, a largura das bandas se expande de forma automática para inclui-los, de maneira que se utilizam todos os discos no pool para balancear a carga de escritas entre todos os dispositivos.

5. Tamanhos de bloco variável

ZFS utiliza blocos de tamanho variável até 128K. O código disponível atualmente permite ao administrador ajustar o tamanho máximo de blocos utilizados, pois certas cargas não rendem bem com blocos grandes. Também está contemplado um ajuste automático para adequar-se as características da carga de trabalho.

Se ativar-se a compressão se utilizam de tamanhos de bloco variáveis, um bloco pode comprimir para que resulte em um bloco de tamanho menor, então utiliza o bloco pequeno no disco, de maneira que não utilize menos capacidade, senão pode aumentar o throughput de entrada/saída (com isso aumentar a sobrecarga da CPU).

6. Espaços de armazenamento (storage pools)

A diferença dos sistemas de arquivos tradicionais que residem sobre um só dispositivo subjacente e portanto requerem um gestor de volumes separado quando se precisa um sistema de arquivos maior que o dispositivo, ZFS se apoia em espaços de armazenamento virtuais (virtual storage pools).

Os espaços se constroem a partir de um ou mais dispositivos virtuais (vdevs), de que cada um é o raw device, um mirror (RAID 1) de um ou mais dispositivos, ou um grupo RAID-Z de dois ou mais dispositivos. A capacidade de armazenamento de todos os vdevs está disponível para todos os sistemas de arquivos do pool.

Para limitar a quantidade de espaço que um sistema de arquivos pode ocupar, se podem aplicar cotas de disco, e garantir que haverá espaço disponível para determinado sistema de arquivos. Pode-se fixar uma reserva de disco.

7. Criação de sistemas de arquivos de rápido acesso

A criação de um novo sistema de arquivos no interior de um espaço de armazenamento ZFS e extremamente rápida e fácil, muito mais parecida em tempo e esforço a criar um novo diretório em sistema de arquivos tradicional que ao tempo e esforço necessário para criar um novo sistema de arquivos em qualquer outro S.O. tradicional.

Estes sistemas de arquivos podem ter cotas reservadas e outras capacidades de administração úteis. Entre os usos possíveis se encontra a criação de um sistema de arquivos separado, não só um diretório, para cada usuário do sistema.

8. Capacidades adicionais:
  • Prioridade I/O explícita com deadline scheduling.
  • Ordenação e agregação de I/O globalmente ótima.
  • Múltipla e independente prefetch streams com tamanho automático e detecção de passos.
  • Operações de Diretório de tempo constante e Paralelo.
  • Striping dinâmico de discos entre devices.
  • Tamanho múltiplo de blocos de disco escolhidos dinamicamente de acordo com os dados e carga de armazenamento.
  • Escalonamento explícito de prioridade de operações de E/S.
  • Ordenação de operações de E/S em disco agregada e global.
  • Streams múltiplos de independentes de pré-aquisição de dados com detecção automática de demanda.
  • Snapshots lógicos instantâneos e limitados, segundo padrão de McKusick, implementado no UFS2 do FreeBSD pela primeira vez.
  • Operações de diretório em tempo constante e paralelas.
  • COW (Copy-On-Write), técnica criada no FreeBSD que aumenta performance e segurança nas operações de escrita de dados entre áreas física ou logicamente distintas.
  • Capacidade de gerenciar RAID via software e LLVM pelo próprio sistema de arquivos.

Introdução adaptada de:
    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação
   3. Tutorial básico
   4. Teste do conceito / Comparação entre ZFS e Btrfs
   5. Considerações finais
Outros artigos deste autor

Honeypot Kippo 0.8 - Instalação e utilização

i3 - Tilling Window Manager

Wake-on-LAN (WOL) utilizando Netcat - Dissecando o protocolo

Leitura recomendada

Instalação dual boot UEFI Linux Mint/Ubuntu com Windows 8.1/10

Configuração de Servidor SFTP

FAM - Monitorar alteração de arquivos

Entendendo o ReiserFS

Tunando sistemas de arquivos para GNU/Linux

  
Comentários
[1] Comentário enviado por removido em 16/08/2015 - 00:03h

Sistema de arquivos fantástico!
Agora além do IP de tudo temos o armazenamento de tudo.
Vou usar como referência quando for explorar este sistema de arquivos.
Parabéns.
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

[2] Comentário enviado por usuariodeti em 29/08/2015 - 12:17h

Plágio na cara de PAU, https://www.viazap.com.br/?p=4136

[3] Comentário enviado por removido em 29/08/2015 - 15:33h


[2] Comentário enviado por usuariodeti em 29/08/2015 - 12:17h

Plágio na cara de PAU, www.viazap.com.br/?p=4136">https://www.viazap.com.br/?p=4136


Não duvido, mas note que o artigo do @phoemur foi publicado dia 15/08/2015 (E pode ter ficado vários dias na fila de espera antes da publicação), ja o do site www.viazap.com.br, segundo a pagina la, é do dia 19/08/2015, quatro dias "mais velho" que o do VOL.

De todo o modo, favoritado pelo bom conteúdo.
*Uso o ZFS no FreeNAS e vou fazer novo teste dele no FreeBSD. Porem no desktop, ainda fico com o nativo BTRFS (openSUSE) na partição de dados.

[4] Comentário enviado por phoemur em 29/08/2015 - 20:30h

Realmente é um plágio, porém do animal que publicou o artigo no outro site alguns dias depois como se escrito ele tivesse.
Nem me surpreendo mais, afinal vivemos no país da lei de Gérson, e o que mais tem são pessoas querendo levar fama às custas do trabalho do outro.
Gostaria de saber como poderia ter plagiado um artigo que foi publicado depois, sendo que eu escrevi este artigo no fim de julho.
Apenas parte da introdução é uma tradução livre da wikipedia, mas está citado lá no artigo. O resto escrevi eu mesmo.
De qualquer forma, já encaminhei a seguinde reclamação ao site do ViaZap:

Gostaria de fazer uma reclamação, pois sou o autor do artigo ZFS no GNU/Linux, publicado no site do vivaolinux em 15/08.
Este artigo foi escrito por mim no mês de julho e tive a desagradável surpresa de ver pessoas tentando pegar carona no trabalho alheio. Há uma cópia descarada em seu site do mesmo artigo de que sou autor, sem citação da fonte.
Gostaria que fosse citada a fonte e o autor ou então que fosse removido o artigo.
Link do arquivo Original:
http://www.vivaolinux.com.br/artigo/ZFS-no-GNULinux/

Obrigado


Pelo menos é sinal que gostaram do artigo, se não ninguém copiava..
Ainda bem que não dependo de direito autoral pra viver...rs

[5] Comentário enviado por phoemur em 29/08/2015 - 20:34h


[2] Comentário enviado por usuariodeti em 29/08/2015 - 12:17h

Plágio na cara de PAU, https://www.viazap.com.br/?p=4136



Realmente desanima escrever as coisas. Uma coisa é alguém dizer que gostou ou então que não gostou do que você escreveu. Isso é natural. Agora o que desanima é pensar no tempo perdido pra escrever algum artigo pro VOL e ainda entrar aqui pra ser chamado de criminoso, pois plágio é crime também.
Deveria ter gasto melhor o meu tempo em ficar com a minha família.
Abçs

[6] Comentário enviado por removido em 29/08/2015 - 21:24h


[5] Comentário enviado por phoemur em 29/08/2015 - 20:34h


[2] Comentário enviado por usuariodeti em 29/08/2015 - 12:17h

Plágio na cara de PAU, https://www.viazap.com.br/?p=4136


Realmente desanima escrever as coisas. Uma coisa é alguém dizer que gostou ou então que não gostou do que você escreveu. Isso é natural. Agora o que desanima é pensar no tempo perdido pra escrever algum artigo pro VOL e ainda entrar aqui pra ser chamado de criminoso, pois plágio é crime também.
Deveria ter gasto melhor o meu tempo em ficar com a minha família.
Abçs


Talvez ele tenha apenas se expressado mal, eu mesmo em um primeiro momento fiquei em duvida se era um aviso ou acusação.

Mas esta muito claro quem copiou quem e não precisa se preocupar com isso. Triste é o volume e descaramento da "kibagem" que vemos em vários sites, principalmente quando o conteúdo é livre e bastaria citar o autor, lhe dando o devido credito pelo trabalho.

Mas não desanime não, seu conteúdo sera útil para muita gente(Além do kibador). O ZFS e um sistema de arquivos fantástico e todo conteúdo sobre ele em português é muito bem vindo.

[7] Comentário enviado por zezaocapoeira em 08/04/2018 - 11:45h

Salve mano.

Já havia lido esta excelente explanação sobre o ZFS na data da publicação do mesmo.

Somente recentemente , após conseguir um hd com capacidade suficiente para os backups, criei coragem e implementei o ZFS na minha partição de armazenamento geral.

https://www.vivaolinux.com.br/screenshot/Tiling-window-manager-ZFS/

Obrigado pela atenção, salve!!!

[8] Comentário enviado por StanislausK em 10/01/2020 - 00:21h

Ola,

para atualizar a discussão:

Mais melhorias no ZFS e Zsys chegarão para o Ubuntu 20.04 LTS
https://sempreupdate.com.br/mais-melhorias-no-zfs-e-zsys-chegarao-para-o-ubuntu-20-04-lts/

Linus Torvalds não recomenda o uso do ZFS no Linux
https://sempreupdate.com.br/linus-torvalds-nao-recomenda-o-uso-do-zfs-no-linux/


[9] Comentário enviado por Cristiano_Be em 28/04/2022 - 09:22h

Otimo! Muito bom artigo.

Só tem um detalhe que não consegui fazer. As vezes consegue me ajudar.

Crio um pool com dois discos usando Raid.
Neste pool eu crio um subsistema de arquivo zfs de 25 GB (zfz create ...)
Porem agora eu preciso mudar o tamanho desse sistema de arquivo criado com 25 gb e passar para 50 gb. Não consigo achar alguma explicação na net de como fazer isso. Saberia me dizer o comando?
Obrigado e mais uma vez, parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts