Histórico de sistemas de arquivos distribuídos

Concluído

Como recapitulação, um DFS (sistema de arquivos distribuído) é um sistema de arquivos que tem arquivos distribuídos entre vários servidores de arquivos. É importante observar que em um sistema de arquivos distribuído o cliente exibe um namespace global que abrange todos os arquivos em todos os servidores de sistema de arquivos. Um DFS exige que haja um gerenciamento de metadados para que os clientes possam localizar os arquivos e blocos de arquivos necessários nos servidores de arquivos. Eles normalmente são implantados em vários nós de compartilhamento de arquivos e devem ser usados por vários usuários ao mesmo tempo. Assim como acontece com todos os recursos compartilhados, várias considerações de design precisam ser consideradas: Desempenho, consistência, tolerância a falhas e disponibilidade são algumas delas.

Origens e evolução dos sistemas de arquivos distribuídos

Os sistemas de arquivos têm sido amplamente influenciados pelo sistema de arquivos UNIX e pelo FFS (Sistema de Arquivos Rápido) do BSD, que foram usados como sistemas de arquivos locais. Lembre-se de que o foco principal desses sistemas de arquivos é organizar os dados no disco de maneira rápida e confiável.

Os sistemas de arquivos em rede, como o NFS, foram criados para permitir que os usuários compartilhem arquivos por meio de redes. O NFS usa uma arquitetura cliente-servidor em que um servidor pode compartilhar com vários clientes os dados que ele mantém. É um protocolo simples que continua sendo usado até hoje para compartilhar arquivos em uma rede. Os arquivos não podem ser distribuídos em vários servidores de maneira coordenada no NFS, pois cada servidor pode compartilhar apenas um número de arquivos. Também não há uma exibição global consistente do namespace. Os clientes podem montar compartilhamentos do NFS em qualquer lugar dentro da árvore local de sistema de arquivos. Portanto, essa abordagem é limitada em dois aspectos: na capacidade de dimensionar para milhares de clientes/servidores e no uso em LANs (redes locais).

O AFS (Sistema de Arquivos Andrew) é um exemplo pioneiro de um verdadeiro sistema de arquivos distribuído. O AFS habilita hosts de cooperação (clientes e servidores) para compartilhar recursos do sistema de arquivos com eficiência em redes locais e de longa distância. O AFS consiste em células, um agrupamento administrativo de servidores que apresentam um sistema de arquivos coeso. As células podem ser combinadas para formar um namespace global. Todos os clientes que acessam os dados do AFS copiarão primeiro o arquivo localmente para o cliente. As alterações no arquivo serão feitas localmente enquanto o arquivo estiver aberto. Quando o arquivo for fechado, o cliente do AFS sincronizará as alterações de volta para o servidor. Uma evolução do AFS é o CODA, um sistema de arquivos distribuído que aprimora o AFS, especialmente em relação ao compartilhamento de semântica e replicação. O AFS e o CODA estão em conformidade com o POSIX, o que significa que eles funcionam com os aplicativos UNIX existentes sem nenhuma modificação.

Em 2003, o Google revelou o design do seu sistema de arquivos distribuído, o GFS2, que foi projetado do zero para fornecer acesso eficiente e confiável aos dados usando grandes clusters de hardware de commodities. O GFS foi projetado para armazenar arquivos muito grandes como partes armazenadas em vários servidores, normalmente com tamanho de 64MB, de maneira replicada. Embora o GFS tenha uma exibição singular de cliente como o AFS, a localização das partes do arquivo será exposta ao usuário, fornecendo aos clientes oportunidades para buscar arquivos da réplica mais próxima disponível. No entanto, o GFS não está em conformidade com o POSIX, o que significa que os aplicativos precisam usar uma API especial para funcionar com o GFS. O HDFS (Sistema de Arquivos Distribuído Hadoop) é uma variante de software livre do GFS que exploraremos de maneira detalhada neste módulo.

Em 2006, o Ceph foi descrito pela primeira vez em um documento de Weil et.al.1 Ceph foi projetado para ser um serviço de armazenamento de objetos distribuídos que podem ser escalonados para centenas de milhares de computadores, armazenando petabytes de dados ao mesmo tempo. Os aplicativos se comunicam com o Ceph por meio de várias APIs que variam de uma API nativa semelhante ao modo de funcionamento do GFS, até uma API de sistema de arquivos em conformidade com o POSIX chamada Ceph FS. O Ceph também é compatível com uma abstração de dispositivos de blocos, o que o torna um sistema de arquivos adequado para armazenar imagens de máquinas virtuais.

Desde então, o Google evoluiu o GFS, transformando-o em um sistema conhecido como Colossus.3.


Referências

  1. Weil, S. A., Brandt, S. A., Miller, E. L., & Maltzahn, C. (2006). Ceph: um sistema de arquivos distribuído de alto desempenho e escalonável* Processos do 7º simpósio sobre design e implementação de sistemas operações (OSDI) 307-320
  2. Sanjay Ghemawat, Howard Gobioff e Shun-Tak Leung (2003). Os sistemas de arquivos do Google 19º simpósio da ACM sobre princípios de sistemas operacionais
  3. McKusick, Kirk e Quinlan, Sean (março de 2010). GFS: evolução das comunicações avançadas do ACM