Qual o melhor sistema de arquivos para usar dentro de uma máquina virtual

Dentro de uma máquina virtual, você provavelmente terá um ou mais discos virtuais. Cada qual, com uma ou mais partições.
Quanto mais for otimizado uso dos recursos de hardware/software, melhor será o desempenho do trabalho e das tarefas executadas dentro das VMs, lógico.
Este assunto pode suscitar várias dúvidas — por isto sugiro, dar uma olhada na tag #sistema-de-arquivos, deste blog — onde você poderá encontrar artigos complementares.

É um tema muito vasto e eu não sou o dono da verdade — por isso, sinta-se à vontade para comentar sobre a sua experiência no assunto.

Neste post, vou discutir especificamente qual o mais recomendado para formatar os discos rígidos (ou SSD) virtuais usados em máquinas virtuais (ou VMs).
No contexto deste artigo, uso algumas máquinas virtuais Debian 9 “Stretch” testing. O drive físico, em que se encontram instaladas, é um HDD (disco rígido).


Se você está com pressa e usa Linux, a resposta rápida (e mais segura), para a pergunta do título, é: formate com o ext4! 😉
Caso você tenha 2 ou 3 minutos (a depender da velocidade com que você consegue ler), posso explicar melhor as vantagens e desvantagens do ext4 e de outros sistemas de arquivos — e isto pode levar a outras respostas…

Em que casos o ext4 é perfeito para formatar um HD dentro de uma máquina virtual

O ext4 está para ser substituído, no universo GNU/Linux, há um bom tempo.
Este processo está em curso há mais ou menos uma década e pode levar outra para ser concluído. Sistema de arquivos é uma coisa séria e precisa de muitos testes para se provar confiável, seguro, eficiente.
O ext4 ou fourth extended filesystem (quarto sistema de arquivos extendido) teve sua primeira versão estável lançada em Outubro de 2008 — o que lhe dá, aproximadamente, 10 anos de estrada.

É o mais jovem (e, possivelmente, último) de uma linhagem, iniciada em 1992, com o ext — criado pelo desenvolvedor Francês, Rémy Card.

Este fato eleva o tempo de experiência do sistema, como um todo, para aproximadamente 25 anos.
Por isto é que o ext4 satisfaz as condições de segurança e eficiência.
Ele incorpora, inclusive, recursos modernos e avançados para manipular dados eficientemente em unidades SSD.

Se você tem dúvidas e precisa decidir rapidamente, opte pelo ext4.

virtualbox snapshot list
A falta de suporte nativo a snapshots no ext4, dentro do contexto de uma máquina virtual, pode ser um ponto a favor: por que o torna mais leve.
Para quem pretende rodar máquinas virtuais dentro do Virtual Box ou qemu, por exemplo, o suporte já está incluído no programa — o que o torna dispensável dentro do sistema de arquivos hóspede.

Outro argumento a favor do ext4: se o host (máquina hospedeira), já usa um sistema de arquivos com suporte a snapshots (como o BTRFS ou o ZFS), não há necessidade para a redundância.

O que os outros sistemas de arquivos oferecem a mais

Testar outras opções é sempre o melhor caminho para descobrir o que se adequa às suas necessidades.
Se as VMs estão em um host com SSDs, certamente é mais benéfico usar um sistema de arquivos construído do zero para este tipo de tecnologia.
Os sistemas de arquivo BTRFS e ZFS podem oferecer melhor performance dentro das seguintes situações, entre outras:

  • As VMs estão em um host equipado exclusivamente com SSDs.
  • Por alguma razão, você necessita do suporte a snapshots dentro do sistema de arquivos hóspede.
  • Os sistemas de armazenamento dos hóspedes são realmente grandes, você pretende usar RAID, pools etc.

Referências

Como instalar suporte ao sistema de arquivos ZFS no Ubuntu

O sistema de arquivos ZFS foi projetado originalmente nos laboratórios da Sun Microsystems, bem antes da empresa ser adquirida pela Oracle.
Trata-se de um sistema de arquivos avançado, com um gestor de volumes lógicos.
open zfs logo
Além do Solaris e nos sistemas operacionais derivados, ele roda em várias outras plataformas.
No FreeBSD, o ZFS é o sistema de arquivos padrão.
À medida em que problemas de licenciamento foram sendo resolvidos, tornou-se possível portar o sistema para várias distribuições GNU/Linux, incluindo Debian, Ubuntu etc.

O ZFS possui recursos importantes de proteção contra corrupção de dados, além de compressão, gestão de volumes, integridade de dados, software RAID, cache e muito mais.

Os exemplos deste texto se baseiam em uma instalação Ubuntu 16.04 LTS. Se você deseja obter informações mais específicas sobre instalação do ZFS no Debian, leia este artigo.
Os links do texto e da seção “Referências”, ao final, podem ajudar, caso você deseje aprofundar mais em determinado assunto.

Como instalar o ZFS no Ubuntu 16.04

No exemplo abaixo, vou demonstrar como encontrar softwares relacionados ao ZFS e como instalar o que você precisa.
Como sempre, comece por atualizar os repositórios. Depois faça a busca, com ‘search‘:

sudo apt update
sudo apt search openzfs

O resultado pode ser extenso (e nem tudo serve ao que queremos realizar aqui):

 Sorting...
            Full Text Search...
            libuutil1linux/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Solaris userland utility library for Linux  

            libuutil1linux-dbg/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Debugging symbols for libuutil1linux

            libzfs2linux/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS filesystem library for Linux            

            libzfslinux-dev/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS filesystem development files for Linux 

            libzpool2linux/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS pool library for Linux
                      
            zfs-dkms/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS filesystem kernel modules for Linux

            zfs-doc/xenial-updates,xenial-updates 0.6.5.6-0ubuntu10 all
              Native OpenZFS filesystem documentation and examples.

            zfs-initramfs/xenial-updates,xenial-updates 0.6.5.6-0ubuntu10 all

            libzfslinux-dev/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS filesystem development files for Linux 

            libzpool2linux/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS pool library for Linux
                      
            zfs-dkms/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS filesystem kernel modules for Linux

            zfs-doc/xenial-updates,xenial-updates 0.6.5.6-0ubuntu10 all
              Native OpenZFS filesystem documentation and examples.

            zfs-initramfs/xenial-updates,xenial-updates 0.6.5.6-0ubuntu10 all
              Native OpenZFS root filesystem capabilities for Linux

            zfs-zed/xenial-updates 0.6.5.6-0ubuntu10 amd64
              OpenZFS Event Daemon (zed)

            zfsutils-linux/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Native OpenZFS management utilities for Linux

            zfsutils-linux-dbg/xenial-updates 0.6.5.6-0ubuntu10 amd64
              Debugging symbols for zfsutils-linux

Para fazer a instalação do sistema ZFS básico, basta executar o comando que segue:

sudo apt install zfs

As dependências necessárias, como você já deve saber, serão instaladas automaticamente.
Para verificar se o suporte ao sistema de arquivos se encontra instalado no seu sistema:
use o comando cat:

cat /proc/filesystems | grep zfs
	zfs

Se o seu resultado estiver de acordo com o que se vê acima, então tudo correu bem.

Referências

Como instalar o ZFS no Debian.
Conheça o sistema de arquivos ZFS.

Introdução ao sistema de arquivos BTRFS – parte 1

Neste artigo pretendo descrever algumas das capacidades básicas que descobri ao começar a usar e me familiarizar com o sistema de arquivos Btrfs, no meu laptop de trabalho, rodando o Debian 8.3 “Jessie”, com o kernel Linux 4.3 (instalado via backports).
Desde que você esteja usando um sistema operacional atualizado, todas as informações dadas neste texto são universais.

A pronúncia do nome, em inglês, é alvo de uma (bem leve) polêmica.
Pode ser Butter FS, Better FS ou B-Tree FS — sendo que, este último, está mais próximo de ter um significado técnico.

Esta é a primeira parte de 2 artigos voltados para iniciantes no sistema de arquivos Btrfs.
Neste, pretendo explorar os aspectos teóricos básicos, que possam ajudar a decidir se a tecnologia dispõe dos recursos que a tornam ideal para você.
Na segunda parte, pretendo introduzir alguns comandos administrativos básicos, voltados a quem deseja iniciar já o uso do sistema.
Sistema de arquivos Btrfs - logo

Alguns dos temas tratados superficialmente aqui, são descritos com mais profundidade nos links, encontrados no decorrer do texto — clique neles.

A proposta e a história do sistema de arquivos Btrfs

Por anos, os sistemas de arquivos da série Ext predominou nas principais distribuições GNU/Linux — passando pelas gerações do Ext2, Ext3 e, mais recentemente, Ext4.
Houve uma evolução significativa no hardware de armazenamento, o que inclui o aumento da capacidade de armazenamento e o surgimento da tecnologia das unidades flash.
Embora o Ext4 ainda esteja evoluindo, não há planos, até o momento, para lançamento de uma versão Ext5.
Se quiser entender melhor as diferenças entre o Ext4 e o Btrfs, clique aqui.
Atualmente, o desenvolvimento caminha na direção de outros sistemas de arquivos, como o ZFS, o Btrfs e o F2FS.
As equipes de desenvolvimento do Btrfs procuram dar respostas às necessidades crescentes de armazenamento de arquivos cada vez maiores, a sistemas “clusterizados” entre outros.
Entre as capacidades avançadas do Btrfs, citam-se:

  • Suporte a sistemas e arquivos grandes.
  • Oferece gestão integrada de múltiplos volumes e subvolumes.
  • Tem funcionalidades de RAID incorporadas.
  • Garante a segurança dos seus dados usando técnicas copy-on-write e de verificação de soma (checksumming).
  • Provê snapshots alteráveis.

Criado por Chris Mason, dentro da Oracle, a proposta inicial estava ligada a uma apresentação de Ohad Rodeh, sobre implementações B-tree que facilitassem o copy-on-write (COW)

Os snapshots têm várias utilidades: se recuperar de remoção acidental de arquivos, reverter um sistema corrompido a um estado em que ele estava bom, mineração de dados, backup eficiente e muito mais.
Clones ou writeable-snapshots são uma extensão do conceito de snapshot, em que ele pode ser alterado para incluir novos dados.
Um clone pode ser usado para criar um ponto de retorno seguro para quem deseja experimentar softwares novos no sistema.

Mason tem experiência prévia com o desenvolvimento do sistema de arquivos ReiserFS — armazenamento baseado em extensão, empacotamento de pequenos arquivos, armazenamento de dados e metadados em estruturas B-tree etc.
O Btrfs foi apresentado à comunidade Linux em 2007. A partir deste momento, os engenheiros da Oracle têm continuado a manter e desenvolver os novos recursos do sistema — em estreita colaboração com outros contribuidores da comunidade Linux, o que inclui engenheiros das distribuições (Red Hat, SuSE etc.) e outras companhias, como Dreamhost, Fujitsu, HP, IBM e Intel.
Atualmente, todas as grandes distribuições Linux dão-lhe suporte.
Chris Mason - Oracle - Btrfs File System

Explorando o Btrfs

A partir do momento em que comecei a fazer uso do Btrfs, na unidade SSD do meu laptop, comecei a descobrir uma série de funcionalidades contidas no sistema, que eu ainda não conhecia.
Algumas destas funcionalidades não se aplicam ao uso em notebooks ou desktop workstations, uma vez que são desenvolvidas para uso em sistemas de armazenamento em servidores de grande porte.
Outras são ótimas opções para se ter a mão em um pequeno computador de trabalho.
Vejamos algumas:

  1. Escalabilidade e gestão de volumes. É importante dizer que o Btrfs é um sistema de arquivos 64-bit, escalável e que pode abranger vários volumes para prover arquivos e sistemas de arquivos até 16 exabytes.
    Incluída a possibilidade de gestão de vários dispositivos de armazenamento subjacentes — similar ao tradicional LVM.
    Por exemplo, o Btrfs permite a um sistema de arquivos abarcar vários dispositivos e representados por um único endereço.
    Os dispositivos do sistema podem ser adicionados ou removidos enquanto este permanece online e disponível.

  2. Metodologia de escrita e acesso. O Btrfs armazena tipos de dados e aponta para informações dentro da unidade em uma estrutura B-tree.
    Diferente de outros sistemas de arquivos, não faz journaling de transações. Como resultado, sua escrita é feita uma única vez — o que remove limitações consequentes do espaço ocupado pelo journal e reduz desgaste causado por gravações repetitivas na mesma seção do disco rígido ou do SSD.
    A técnica copy-on-write garante que blocos e extensões não sejam sobrescritos.
    Atributos estendidos e ACLs limitam o acesso e a manipulação do conteúdo do sistema de arquivos por usuários e aplicações.
  3. Tunables ou possibilidades de ajustes.
    O Btrfs provê ajustes mínimos para proteger o sistema de mau uso ou de erros de configuração.
    Uma das opções interessantes de montagem de uma unidade Btrfs, é -o autodefrag .
    Este parâmetro ativa a auto desfragmentação do volume.
    Outra possibilidade é a desativação do COW, com o uso do parâmetro nocow, que pode ajudar a reduzir fragmentação dos arquivos no sistema — particularmente para arquivos que requeiram acesso sequencial, tais como os produzidos por bancos de dados e mídias para transmissão (streaming media).
    No modo nocow, blocos de arquivos são sobrescritos, tal como em qualquer outro sistema de arquivos tradicional.

Integridade de dados

O Btrfs tem recursos nativos para garantir a integridade de dados no volume.
Veja alguns:

  • Configurações redundantes. Suporta espelhamento de dispositivos e configurações RAID para aumentar chances de sobrevivência de dados e facilitar a recuperação de informações destruídas.
    Por padrão, ele espelha os metadados por entre 2 dispositivos e distribui os dados entre todos os dispositivos sob a camada do sistema de arquivos.
    Mesmo dentro de uma única unidade de armazenamento, os metadados são duplicados
  • Verificação de somas. Gera checksums para dados e metadados para preservá-los de corrompimento.
    Os checksums são verificados a cada leitura de blocos de dados do volume.
    Havendo detecção de erros, o sistema tenta obter ou criar uma cópia boa do bloco defeituoso de algum outro dispositivo espelho.
    Se encontrar uma cópia boa, ela será usada e o bloco ruim corrigido.
  • Isolamento de falhas e algoritmos de verificação de somas. O Btrfs provê isolamento de falhas através do armazenamento separado dos metadados dos dados dos usuários.
    Adicionalmente, provê proteção através dos CRCs.
    Os CRCs são armazenados em um B-tree, separado dos dados — para oferecer isolamento de possíveis falhas.
  • Tempo de reconstrução. Mason chama a atenção para o fato de que o Btrfs só reconstrói os blocos ativamente usados pelo sistema de arquivos.
    À medida em que a capacidade de armazenamento dos drives aumenta, esta característica constitui uma vantagem considerável sobre sistemas de arquivos tradicionais e mecanismos RAID de proteção.
    Nas abordagens tradicionais, o tempo de reconstrução de unidades de alta capacidade de armazenamento pode ser medido em dias — e durante este processo, a proteção do sistema estará suspensa.
  • Encriptação. Não há funcionalidade de criptografia embutida ainda.
    Um sistema de arquivos Btrfs pode ser criado sobre um subsistema de encriptação de discos dm_crypt e sob uma camada LUKS (Linux Unified Key Setup) — que dá suporte a uma boa variedade de padrões de criptografia.
    Esta configuração, contudo, desabilita algumas das capacidades e vantagens do sistema — tais como suporte avançado a dispositivos de bloco raw e detecção de unidades SSD.

Otimização de espaço

O Btrfs suporta algoritmos de compressão, já na montagem de um dispositivo — ou seja, após a criação de um volume ou subvolume, você pode ativar facilmente a compressão de dados a qualquer momento.
Este assunto é discutido com mais profundidade no artigo Como ativar a compressão de dados no Btrfs.
No atual estágio de desenvolvimento, o sistema tem suporte aos algoritmos de compressão LZO e zlib.
Se um arquivo não consegue atingir taxas de compressão decentes, ele é marcado como “não comprimível” e gravado sem o uso do recurso.
Existe a opção de montagem force-compression que, tal como o nome indica, aplica o recurso arbitrariamente.

Aprimoramento do desempenho

O Btrfs tem funcionalidades e suporte a dispositivos projetados para melhorar o desempenho do sistema de arquivos. Conheça algumas:

  1. Suporte a unidades de estado sólido (SSDs). As memórias flash, tais como os cartões de memória que usamos nos smartphones e nas câmeras (além dos pendrives USB), têm baixo custo de aquisição.
    São dispositivos não voláteis, cujo conteúdo pode ser alterado eletricamente.
    O uso de drives SSD tem aumentado em desktop workstations, notebooks e servidores. Tudo indica que este movimento se intensificará.
    Dispositivos de armazenamento, com tecnologia flash têm desempenho muito superior a dos drives mecânicos.
    O Btrfs é SSD-aware, ou seja, reconhece nativamente o ambiente flash, evita otimizações de busca desnecessárias e envia gravações agressivamente aos clusters — mesmo que sejam de arquivos não relacionados ao contexto.
    Este comportamento resulta em largas operações de escrita e taxas de transferência mais altas.
  2. Desfragmentação online. Ao longo dos anos, temos notado que unidades que experimentam grande rotatividade de arquivos, sofrem com uma crescente fragmentação, o que resulta em desempenho inferior ao que estão capacitadas a oferecer.
    O Btrfs tem a opção de montagem autodefrag, que habilita o helper de auto desfragmentação.
    Quando um bloco é copiado e gravado no disco, o helper marca os fragmentos e realiza o trabalho de desfragmentação em uma thread, executada em segundo plano.
    Esta capacidade pode beneficiar significantemente sistemas com cargas de trabalho de pequenos bancos de dados, caching de navegadores etc.

Como o Btrfs lida com subvolumes, snapshots e dispositivos seed

A característica de ser copy-on-write faz do Btrfs um sistema de arquivos capaz de prover recursos que facilitam replicação, migração, backup e restauração de informações.

  1. Subvolumes. Ponto fulcral da concepção do Btrfs, os subvolumes, são chamados B-trees. É onde se guardam arquivos e diretórios.
    Opcionalmente, os subvolumes podem ter quotas e são montados como se fossem discos.
  2. Snapshots. Na essência, são clones de um subvolume.
    Se deixada inalterada, uma snapshot representa uma cópia fiel do estado do subvolume no momento em que foi criada.
    Do que foi dito no parágrafo anterior, entenda-se que é possível alterar uma snapshot, de forma que são como clones que evoluem em relação a seus subvolumes.
    Pode ser criada quase instantaneamente e, virtualmente, não consome espaço adicional no disco, inicialmente — uma vez que se constitui de pequena quantidade de metadados.
    Este recurso é útil em várias situações — como manter cópias de versões anteriores de uma hierarquia de arquivos ou movê-las para outros sistemas, como cópias de segurança.
    Arquivos individuais podem também ser clonados com o comando cp -reflink, que tem o mesmo efeito sobre arquivos que os snapshots têm sobre volumes.
  3. Seed devices ou dispositivos semente. Este tipo de dispositivo provê uma fundação (não alterável) para criar ou constituir múltiplos outros sistemas de arquivos.
    Em outras palavras, um dispositivo pode ser usado como um sistema de arquivos template (um CD, contendo uma imagem, por exemplo).
    A partir deste dispositivo novos sistemas de arquivos, em outros dispositivos, podem ser criados (usando o copy-on-write).
    Este processo pode ser considerado uma outra forma de clonagem.
  4. Backup e recuperação de cópias de segurança. Não há suporte incorporado ao Btrfs para criar cópias de segurança.
    Neste caso, a melhor prática é criar um snapshot de um volume e usar utilitários tradicionais de backup.
    Para ajudar há o recurso btrfs subvolume find-new, que identifica os arquivos que sofreram alguma mudança em um dado subvolume.
    Testes mostram que ele é mais eficiente que varrer todo o sistema de arquivos com o comando find -mtime, para destacar arquivos modificados.
  5. Ferramenta de conversão de sistemas de arquivos Ext. Há suporte à conversão local de sistemas de arquivos Ext3 e Ext4.
    Os metadados originais dos sistemas antigos são mantidos em um snapshot, de forma que a conversão possa ser revertida, se necessário.
    Obviamente, se o sistema tiver passado por muitas alterações as possibilidades de reversão são limitadas.
    Quando tiver certeza de que não vai voltar atrás na conversão de um sistema Ext para Btrfs, remover o snapshot ajuda liberar espaço em disco.

Referências

https://wiki.debian.org/Btrfs.
https://btrfs.wiki.kernel.org/index.php/Glossary.
http://www.oracle.com/technetwork/articles/servers-storage-admin/gettingstarted-btrfs-1695246.html.

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

Como instalar suporte ao sistema de arquivos ZFS no Debian

O ZFS é um sistema de arquivos criado pela Sun, para o sistema operacional Solaris (Unix).
No Linux, há suporte para o ZFS através do módulo de kernel Linux FUSE, que é muito fácil instalar.
A solução permite driblar incompatibilidades com licenças e, ainda, rodar o sistema de arquivos inteiramente no espaço do usuário, independente do kernel Linux.
instalar sistema de arquivos zfs no debian

Como instalar suporte ao sistema de arquivos ZFS no Debian e no Ubuntu

A solução que segue foi testada no meu sistema Debian 8.2 Jessie e pode ser aplicada a qualquer outro sistema operacional baseado em Debian.
Para usuários do Ubuntu 16.04 LTS Xenial Xerus, há um texto específico sobre a instalação do ZFS.
Faça uma busca por pacotes relacionados ao ZFS, com o comando ‘aptitude search” (Debian) ou ‘apt-cache search’ (Ubuntu):

sudo aptitude search zfs

Entre os pacotes encontrados, destaca-se um pacote com bibliotecas de suporte ao sistema de gestão de imagens de disco hóspede, o zfs-fuse e o zfsnap:

p   libguestfs-zfs                                  - guest disk image management system - ZFS support          
i A zfs-fuse                                        - ZFS on FUSE                                               
i   zfsnap                                          - Automatic snapshot creation and removal for ZFS

Este último, contém ferramentas para crir snapshots ou capturar imagens do sistema de arquivos — recurso que permite reestabelecer ou recuperar rapidamente o seu sistema, após um desastre.
Instale o zfs-fuse:

sudo aptitude update
sudo aptitude install zfs-fuse

Como você já deve saber, o ‘aptitude’ funciona no Ubuntu, mas pode usar o ‘apt-get’ ou o ‘apt’ se for mais confortável para você.

Finalizado o processo de instalação, já é possível criar, acessar e manipular partições e drives ZFS no seu sistema.
Você pode usar o comando mkfs.zfs para criar um novo sistema de arquivos ZFS em alguma partição, por exemplo.