|
Alguns desenvolvedores tem suas áreas de trabalho preferidas muito bem definidas. Alguns vão além disso. Dos que vão além um exemplo é o Pawel Jakub Dawidek, polonês desenvolvedor do FreeBSD há cerca de dois anos e meio. Não da para dizer que PJD dê preferencia para trabalhar com sistemas de armazenamento, sistema de arquivos e discos. P.J.D é um tarado por esse tema. Quem acompanha seu trabalho desde cedo, talvez se lembre que PJD antes de se tornar commiter do FreeBSD, tinha uma série de patches e módulos de kernel para FreeBSD que permitiam controlar como os sistemas de arquivos montados seriam apresentados em um ambiente FreeBSD virtualizado com Jail, mais que permitindo, garantindo completa separação de escopo de disco para cada instância virtualizada com Jail. Depois, FreeBSD 5 foi lançado, Poul-Henning Kamp completou o trabalho em cima do subsistema GEOM, que garantiu uma API flexível e poderosa para controle de dispositivos de storage. Parecia ser tudo que o PJD queria. Foi um passo para começar a trabalhar em cima do GEOM, e se tornar commiter do FreeBSD. Poucos meses depois, existiam módulos como GEOM Mirror e GEOM Concat. Depois foram GEOM ELI, GEOM RAID3, GEOM SHSEC, GEOM Gate e mais uma série de recursos que implementam RAID e RAID via rede, entre diversos outros recursos como criptografia de disco, dependência entre discos e gerenciamento de volumes - recursos GEOM aliás documentados por Daniel Bristot aqui na FUG . Recentemente PJD começou criar uma implementação de sistema de arquivos jornalado para FreeBSD, o GEOM Journal, que mais do que ser um FS que implementa todo o Journaling como concebido pela Sun Microsystems, implementa sem precisar modificar a estrutura interna do UFS2, ou seja apenas altera o método de manipulação dos dados, permitindo que o mesmo sistema de arquivos passe de Soft Updates para GEOM Journal, e vice-versa, sem reformatar ou recriar o FS inteiro - são apenas métodos distintos. E parece que P.J.D. gostou da aventura de trabalhar com sistemas de arquivos concebidos pela Sun. Acaba de anunciar que começou o projeto de portar o ZFS para o FreeBSD. ZFS é um sistema de arquivos inovador, projetado pela Sun e disponível no Solaris 10 (e OpenSolaris) que redefine o conceito de volumes de armazenamento em disco, permitindo maior flexibilidade, escalabilidade e poder total de armazenamento final, e com enorme performance, sem dispensar segurança e integridade dos dados em disco. Algumas técnicas chave que garante essas caracterísitcas ao ZFS são: - Striping dinâmico de discos entre devices
- Tamanho múltiplo de blocos de disco, escolhidos dinâmicamente 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 pre-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
- E COW (Copy-On-Write), técnica criada no FreeBSD que aumenta performance e segurança nas operações de escrita de dados entre áreas fisica ou logicamente distintas (técnica aliás criticada abertamente por Linus Torvalds - felizmente muita gente não pensa como Mr. Torvalds, e a empresa de Bill Joy é claramente um bom exemplo)
P.J.D em recente discussão na lista hackers deixou claro que ainda há muito trabalho a realizar, mas o port vem caminhando de forma rápida. As aplicações de userland (libzfs, zfs e zpool) já estão prontas, e a ztest e zpool foram intensamente testadas, até onde foi possível, pois agora o principal trabalho está sendo no código em kernel. Em kernel o subsistema está separado em três partes, a primeira é o ZFS (zfs.ko) que implementa a principal camada ZFS no sistema operacional, e adicionalmente foram criados o VDEV_GEOM que permite dentro da infra-estrutura GEOM que qualquer provider seja adicionado em um pool ZFS; VDEV_GEOM é implementada como classe consumer apenas, dependendo de outros provider que podem por exemplo ser GEOM ELI ou GEOM MIRROR, ou quem sabe até, GEOM Gate (possibilidades, mas não foco atual). O terceiro subsitema é o ZVOL que exporta armazenamento GEOM como provider, que é o lado apenas provider dessa classe GEOM. O commiter PJD já testou por ezemplo RAID-Z sobre discos criptografados com GELI em um volume ZFS. A ordem ou classe utilizada pode ser qualquer uma. No momento o trabalho principal está sendo feito em cima do ZPL que é parte do sistema de arquivos ZFS, e que PJD considera a mais importante e trabalhosa etapa para portar o ZFS, pois ele fala com a parte mais complexa do kernel do FreeBSD, o VFS. O comando zfs create já permite criar sistemas de arquivos ZFS, arquivos e diretórios, e este já pode ser montado, e ter atributos de privilégios, permissões e propriedades - inclusive atributos extendidos como ACL - manipulados. O trabalho mais importante pendente nesse momento inclui (1) subsistema de autoconfiguração com exploração e descoberta automática de devices VDEV (auto discovery) baseado no mecanismo de identificação de providers e classes do próprio subsistema GEOM; (2) a maior parte da calada ZPL do ZFS, como comentado; (3) diretório de controle .zfs/ e mais vários detalhes, que devem demandar aproximadamente 10 dias de trabalho. PJD informa que se alguma compania tiver interesse especial no ZFS, para entrar em contato com ele. Mark Maybee, engenheiro de pesquisa e desenvolvimento do Grupo de Sistema de Arquivos da Sun Microsystems se dispôes, em nome da Sun a ajudar técnica e financeiramente o trabalho de portar o ZFS para o FreeBSD, e a Sun é um dossponsors de PJD nesse trabalho. Ou seja em algumas semanas teremos o ZFS disponível no FreeBSD 7.0-CURRENT, e não o ZFS pura e simplesmente, mas sim o ZFS no topo do framework GEOM, permitindo alguns bons níveis de integração com os recursos GEOM que já temos hoje, oferecendo poder arquitetural para combinação de classes não disponível em qualquer outro sistema operacional. Aos poucos o GEOM vem se tornando para sistemas de arquivos o que o Netgraph é para o subsistema de redes do FreeBSD: um verdadeiro lego, cheio de peças que quase sempre podem ser combinadas entre sí, montando ambientes com recursos que separados desempenham funções diversas, mas combinados tornam-se ainda mais podersos. Que venha agora o ZFS então, e que a empolgação de PJD em discos e storage nunca diminua, e principalmente que o MFS seja agendado para pouco tempo depois de estabilizada a tecnologia no -CURRENT, pois queremos mesmo é ver isso no -STABLE o quanto antes.
|