Guia de administração do ZFS Oracle Solaris

O que é ZFS?

O sistema de arquivos do ZFS é um novo e revolucionário sistema de arquivos que basicamente altera a forma como os sistemas de arquivos são administrados, com recursos e benefícios que não são encontrados nos sistemas de arquivos disponíveis atualmente. O ZFS é robusto, dimensionável e fácil de administrar.

Armazenamento de ZFS em pool

O ZFS usa o conceito de pools de armazenamento para gerenciar armazenamentos físicos. Os sistemas de arquivos sempre foram construídos em cima de um dispositivo físico. Para abordar vários dispositivos e prevenir a redundância de dados, introduziu-se o conceito de um gerenciador de volumes, com o intuito de fornecer uma representação de um dispositivo único para que os sistemas de arquivos não precisassem ser modificados, a fim de aproveitar os vários dispositivos. Esse design adicionou outra camada de complexidade e, finalmente, impediu certos avanços do sistema de arquivos porque o sistema de arquivos não possuia controle sobre a localização física dos dados nos volumes virtualizados.

O ZFS elimina totalmente o gerenciamento de volumes. Em vez de forçá-lo a criar volumes virtualizados, o ZFS agrega os dispositivos em um conjunto de armazenamento. O conjunto de armazenamento descreve as características físicas do armazenamento (layout do dispositivo, redundância de dados e assim por diante) e atua como um armazenamento de dados arbitrário a partir do qual podem ser criados sistemas de arquivos. Os sistemas de arquivos já não estão mais limitados a dispositivos individuais, permitindo-lhes compartilhar espaço em disco com todos os sistemas de arquivos do conjunto. Já não é mais necessário pré-determinar o tamanho de um sistema de arquivos, visto que os sistemas de arquivos crescem automaticamente dentro do espaço em disco alocado para o conjunto de armazenamento. Quando novos armazenamentos são adicionados, todos os sistemas de arquivos que estão dentro do conjunto podem utilizar imediatamente o espaço adicional sem trabalho adicional. Em muitos aspectos, o conjunto de armazenamento trabalha de maneira similar a um sistema de memória virtual: quando uma memória DIMM é adicionada a um sistema, o sistema operacional não o força a executar comandos para configurar a memória e atribuí-la a processos individuais. Todos os processos do sistema usam automaticamente a memória adicional.

Semânticas transacionais

O ZFS é um sistema de arquivos transacional, o que significa que o estado do sistema de arquivos é sempre consistente no disco. Os sistemas de arquivos tradicionais substituem os dados no local, o que significa que, se a máquina apagar, por exemplo, entre o momento em que um bloco de dados está sendo alocado e o momento em que está sendo vinculado a um diretório, o sistema de arquivos ficará em um estado de inconsistência. Historicamente, esse problema era solucionado através da utilização do comando fsck. Esse comando era responsável por revisar e verificar o estado do sistema de arquivos e tentar reparar quaisquer inconsistências encontradas durante o processo. Esse problema de sistemas de arquivos inconsistentes deu muito trabalho aos administradores e nunca era garantido que o comando fsck resolvesse todos os possíveis problemas. Mais recentemente, os sistemas de arquivos introduziram o conceito de ocorrências . O processo de ocorrências registra ações em um diário diferente, que pode então ser reproduzido de forma segura se ocorrer uma quebra no sistema. Esse processo introduz uma sobrecarga desnecessária, pois os dados precisam ser gravados duas vezes, resultando frequentemente em novos conjuntos de problemas, tais como quando o diário não pode ser reproduzido apropriadamente.

Com um sistema de arquivos transacional, os dados são gerenciados utilizando as semânticas de copiar ao gravar. Os dados nunca são substituídos e nenhuma seqüência de operações é totalmente comprometida ou totalmente ignorada. Assim, o sistema de arquivos nunca será corrompido por perdas acidentais de energia ou por quebra no sistema. Embora as últimas partes de dados gravadas possam se perder, o sistema de arquivos em si será sempre consistente. Além disso, os dados síncronos (escritos com o sinalizador O_DSYNC) sempre serão gravados antes de retornarem, de modo que nunca se perderão.

Somas de verificação e autocorreção de dados

Com o ZFS, todos os dados e metadados são verificados ao utilizar um algoritmo de soma de verificação selecionável pelo usuário. Os sistemas de arquivos tradicionais, que oferecem a soma de verificação, efetuavam tal soma com base em blocos sem necessidade, devido à camada de gerenciamento de volumes e ao design do sistema de arquivos tradicional. O design tradicional significa que determinadas falhas, tais como gravar um bloco completo em um local incorreto, podem resultar em dados incorretos mas sem erros de soma de verificação. As somas de verificação do ZFS são armazenadas de forma que essas falhas sejam detectados e possam ser recuperados adequadamente. Todas as somas de verificação e recuperações de dados são efetuadas na camada do sistema de arquivos e são evidentes para os aplicativos.

Além disso, o ZFS oferece a autocorreção de dados. O ZFS suporta conjuntos de armazenamento com níveis variados de redundância de dados. Quando um bloco de dados incorreto é detectado, o ZFS busca os dados corretos em outra cópia redundante e repara os dados incorretos substituindo-os pela cópia dados corretos.

Escalabilidade não paralela

Um elemento de design fundamental do sistema de arquivos do ZFS é a escalabilidade. O sistema de arquivos em si é de 128 bits, permitindo 256 quatrilhões de zettabytes de armazenamento. Todos os metadados estão alocados dinamicamente, de forma que não há necessidade de pré-alocar inodes ou de limitar a escalabilidade do sistema de arquivos quando este for criado pela primeira vez. Todos os algoritmos foram gravados levando-se em consideração a escalabilidade. Os diretórios podem possuir até 248 (256 trilhões) de entradas e não há limites para o número de sistemas de arquivos ou para o número de arquivos que pode ser contido em um sistema de arquivos.

Instantâneos do ZFS

Um instantâneo é uma cópia de somente leitura de um volume ou de um sistema de arquivos. Os instantâneos podem ser criados rápida e facilmente. No início, os instantâneos não utilizam espaço adicional em disco dentro do conjunto.

Conforme os dados dentro dos conjuntos de dados ativos são alterados, o instantâneo passa a utilizar mais espaço em disco devido às contínuas referências aos dados antigos. Como conseqüência, o instantâneo evita que os dados sejam liberados de novo no pool.

Administração simplificada

O mais importante é que o ZFS oferece um modelo de administração muito simplificado. Através do uso de um layout de sistema de arquivos hierárquico, da herança de propriedade e do gerenciamento automático de pontos de montagem e de semânticas compartilhadas de NFS, o ZFS facilita a criação e o gerenciamento de sistemas de arquivos sem a necessidade de vários comandos ou de editar os arquivos de configuração. Você pode definir facilmente as cotas ou reservas, habilitar ou desabilitar a compactação ou gerenciar os pontos de montagem de numerosos sistemas de arquivos com um único comando. É possível examinar ou substituir dispositivos sem conhecer um conjunto separado de comandos do gerenciador de volume. É possível enviar e receber fluxos de instantâneos do sistema de arquivos.

O ZFS gerencia sistemas de arquivos através de uma hierarquia que possibilita esse gerenciamento simplificado de propriedades como cotas, reservas, compactação e pontos de montagem. Nesse modelo, sistemas de arquivos são o ponto central de controle. Os sistemas de arquivos em si são muito baratos (equivalentes à criação de um novo diretório), de modo que você é estimulado a criar um sistema de arquivos para cada usuário, projeto, área de trabalho, etc. Esse design permite que você defina pontos de gerenciamento detalhados.