terça-feira, 8 de novembro de 2011

ZFS (FreeBSD, Linux e Solaris)

O ZFS (Zettabyte File System) é o sistema de arquivos (file system ou FS) do futuro. Por que? Segurança dos dados, persistência, consistência e integração nativa com os novos processadores.

Sistemas de arquivos representam o "nó górdio" de um sistema operacional (SO). Normalmente, o usuário sabe pouco e espera muito de um sistema de arquivos. Os dados de sistemas operacionais, dados de aplicativos e dados do usuário ficam gravados aí e, exatamente aí, reside o problema. Dados podem se corromper facilmente e mantê-los seguros é o propósito de um FS confiável.

O ZFS foi desenvolvido pela Sun Microsystems e foi implementado, pela primeira vez no Solaris 10. Ele foi desenvolvido com código aberto sob licença CDDL (Common Development and Distribution License) para ser implementado no projeto do OpenSolaris. Uma vez que a Oracle comprou a Sun, o projeto OpenSolaris não mais existe. Mas isto não impede que o projeto do FreeBSD continue a desenvolver sobre o código do ZFS, pois é compatível com a licença BSD. O mesmo não ocorre com a licença GNU (veja no final deste artigo).

A Oracle continua a usar o ZFS no novo sistema (Solaris 11) que vem sendo distribuído livremente, mas não se sabe se estão sendo feitas alterações no código do ZFS ou no Kernel do novo Solaris.

As vantagens do ZFS sobre os outros FS tais como o UFS, ext2, ext3, Reiser, QNX, etc. é a facilidade com que este FS lida com problemas que para os outros sistemas são críticos. Note que aqui cito sistemas de arquivos decentes e deixo de lado os da Microsoft® que são uma "barbárie escatológica" que nem vale a pena comparar, já que "tela azul" é coisa natural para eles.

Além disso o ZFS apresenta a facilidade de manutenção e administração e, o melhor, a integração nativa com a criptografia dos processadores i5 e i7. Assim, para quem precisa rodar o sistema criptografado isto é uma vantagem imensa na performace de disco.

Outra funcionalidade muito interessante é a maneira como o sistema de arquivo lida com os blocos danificados (bad blocks). Em um sistema normal, no espelhamento de dados (Virtual Disk Mirrors), se o sistema físico de um deles tem um bloco de dados defeituoso, o espelho não tem como saber e o valor lido é passado para o FS que pode emitir um sinal de falha (panic) ou, caso contrário passará um dado corrompido e errado para o aplicativo.

No caso do ZFS um checksum revela que um bloco está danificado e, então, o ZFS verifica o checksum do espelho. Se o dado está bom ele é passado para o aplicativo e usado para corrigir o bloco ruim do outro disco.

Querem mais? Pois bem, como cita Dawidek [1]:

  • Nunca mais volumes e partições! É isso aí... lida com o armazenamento em disco do mesmo modo que a memória virtual faz com a memória.  
  • Usa o modelo "copy-on-write" ou cópia simultânea com a escrita
  • Nunca mais fsck ou journaling porque os dados estão sempre consistentes no disco.
  • Compressão e criptografia nativa
  • Independente de endianness, sempre lida com endianness nativa

O pessoal do Kernel do Linux também está desenvolvendo e portando o ZFS com o nome de FUSE, não considerado como parte do kernel Linux. (veja em: http://zfsonlinux.org/faq.html)

O ZFS, no entanto, passa a ser um sistema desejável para aplicações críticas, principalmente para data centers provedores de conteúdo, armazenamento e bancos de dados.

[1] Dawidek, P. J. "Porting the ZFS file system to the FreeBSD operating system" White Paper, FreeBSD Foundation, http://wiki.freebsd.org/ZFS, acesso em 8/11/2011

Nenhum comentário:

Postar um comentário