Gerência de arquivos distribuidos Prof: Diovani Milhorim Gerência de arquivos distribuidos Em um sistema de arquivos distribuídos os arquivos se encontram armazenados e um ou mais servidores, e se tornam disponíveis a clientes da rede que os enxerga de forma transparente. Gerência de arquivos distribuidos Razões para uso de arquivos distribuídos. Deseja adicionar servidores de arquivos ou modificar a localização de arquivos. Os usuários que acessam destinos estão distribuídos por um ou vários locais. A maioria dos usuários requer acesso a vários destinos. O equilíbrio da carga do servidor pode ser melhorado com a redistribuição de destinos. Gerência de arquivos distribuidos Os sistemas de arquivos distribuídos devem prover: Confiabilidade Redundância Disponibilidade Escalabilidade Gerência de arquivos distribuidos Os sistemas de arquivos distribuídos devem prover: Confiabilidade Redundância Disponibilidade Escalabilidade Gerência de arquivos distribuídos Esses sistemas são responsáveis por organizar armazenar, recuperar, nomear, compartilhar, proteger, autorizar acesso a arquivos e rede. Fornecendo: Conjunto de operações para programador (API, desconhecimento dos detalhes) Chamadas do sistema relacionadas: open, close, read, write, dup, lseek, chmod, umask. Estrutura de Dados (i-node): armazena timestamp de criação, de alteração, de acesso, tamanho, proprietário e lista de acesso rwx (ready-write exclusive). Define-se sintaxe para os arquivos (caracteres inválidos, extensão, etc.). Gerência de arquivos distribuídos Diretório Tipo especial de arquivo que fornece mapeamento entre nome textual e identificador interno. Pode-se incluir nome de outros diretórios (atualmente conhecido como pastas). Possui a hierarquia de estrutura em árvore, formando os pathnames cujo diretório raiz global é representado por “/”. As árvores dispõem das seguintes operações com diretório: criar, remover, nomear, renomear e mover. Havendo também a possibilidade de criar vínculos (com outros diretórios. Gerência de arquivos distribuídos DFS Possuem dois componentes distintos para lidar com arquivos ou diretórios. Sistema de Arquivo: operação em arquivos individuais (leitura, escrita, concatenação, remoção) Serviço de Diretório: criação e gerência de diretórios, manipulação de arquivos em diretórios. Gerência de arquivos distribuídos Existem dois modelos de Projeto do Serviço de Arquivos: Upload/Download: simplicidade, o cliente precisa dispor do mesmo espaço do servidor, causando overhead em alterações mínimas. Acesso Remoto: amplo número de operações, requer pouco espaço nos clientes por isso tornou-se um modelo consagrado Gerência de arquivos distribuidos a) Modelo de acesso remoto b) Upload/download Gerência de arquivos distribuídos Nomeação A nomeação é um mapeamento entre objetos lógicos e físicos. Usuários lidam com objetos lógicos de dados representados por nomes de arquivos, enquanto que o sistema manipula blocos físicos de dados, armazenados em trilhas de discos. Geralmente, um usuário faz referência a um arquivo por meio de um nome textual. Este mapeamento é um identificador numérico de baixo nível que, por sua vez, é mapeado em blocos de disco. Esse mapeamento em vários níveis fornece aos usuários uma abstração de um arquivo que oculta os detalhes de como e onde no disco o arquivo está de fato armazenado. Gerência de arquivos distribuídos Transparência: Em um DFS transparente, uma nova dimensão é adicionada à abstração: a de ocultar o local na rede onde o arquivo se encontra. sistema de arquivos convencional: mapeamento = endereço em disco Esse intervalo é aumentado para incluir a máquina específica em cujo disco o arquivo está armazenado. Também existe a possibilidade de replicação de arquivos. Dado um nome de arquivo, o mapeamento retorna um conjunto das posições das réplicas desse arquivo. Gerência de arquivos distribuídos Estruturas de Nomeação Existem duas noções no contexto de mapeamento de nomes em um DFS que precisam ser diferenciadas: Transparência de posição: o nome de um arquivo não revela qualquer indício da posição do arquivo no armazenamento físico. Independência de posição: o nome de um arquivo não precisa ser alterado quando muda da posição do arquivo no armazenamento físico. (raro de ser encontrado. AFS e sistemas experimentais) Gerência de arquivos distribuídos Semântica Quando dois ou mais usuários compartilham o mesmo arquivo, é necessário definir a semântica de leitura e escrita precisamente. Se o sistema possui um único processador, ele é forçado a uma ordenação em todas as operações e sempre retorna o valor mais recente (chama-se semântica UNIX). Em um sistema distribuído a semântica UNIX pode ser atingida facilmente se existe um único servidor de arquivos e os clientes não guardam arquivos em cache. (pode ocorrer problema de gargalo) Gerência de arquivos distribuídos Semântica Para diminuir gargalos podemos usar políticas de cache. Problema de cache: Uso simultâneo de mesmo arquivo por diferentes usuários. Solução do problemas: Propagação instantânea de toda modificação no arquivo. Compartilhamento do ponteiro de escrita do arquivo. Gerência de arquivos distribuídos História O primeiro SAD que se tem notícia usava a ARPANET, chamava-se datacomputer, e entrou em funcionamento em 1973. O Interim File Server (IFS), criado por pesquisadores do Xerox Palo Alto Research Center (PARC). Woodstock File Server (WFS), criado também pelo PARC. Em 1977, o PARC criou o Xerox Distributed File System O LOCUS (1980) que já implementava transparência de localização, replicação O SWALLOW (início dos anos 80) do MIT, que usava uma técnica de controle de acesso concorrente baseado em timestamps. Acorn File Server (início dos anos 80), desenvolvido para implantação de uma rede de microcomputadores em escolas a um custo muito baixo o VICE (1984), ancestral do AFS e do CODA Gerência de arquivos distribuídos Principais DFS em uso comercial: Network File System (NFS) Andrew File System (AFS) Coda Gerência de arquivos distribuídos NFS (network file system) Desenvolvido pela Sun Microsystems (1985), sendo o primeiro serviço de arquivos projetado como produto com suporte a estações diskless (sem disco rígidos, quando eram caros). Alcançando seu sucesso técnico e comercial em 1989 (RFC1094) suas interfaces foram disponibilizadas em domínio público (openess). Gerência de arquivos distribuidos Arquitetura NFS Gerência de arquivos distribuídos NFS (network file system) Características: Transparência de Acesso: Os programas clientes não se preocupam com a distribuição dos arquivos. Um único conjunto de operações acessa arquivos locais e remotos. Transparência de Localização: Servidor exporta (compartilha) o sistema de arquivo para onde o cliente escolheu o ponto de montagem e visualiza como se fosse local. Transparência de Falha: Uso de servidores stateless , onde falha no cliente não o afeta, podendo ser reinicializado com recuperação de contexto de cada cliente. Gerência de arquivos distribuídos. NFS (network file system) Transparência de Desempenho: Tem como objetivo trabalhar satisfatoriamente na variação de carga, onde o cliente e o Servidor empregam cache para melhorar desempenho Transparência de Migração: O serviço de montagem (mount) roda em cada nó e fornece interface via RPC para montagem e desmontagem – Utilizado no boot das máquinas – Não é totalmente resolvida pelo NFS: mudança da localização do FS requer atualização de tabelas locais – Automontagem (automounter) permite distribuição de carga por servidores de arquivos somente leitura (read-only) Gerência de arquivos distribuídos NFS (network file system) Transparência de Replicação: O sistema não fornece esse tipo de replicação Transparência de Concorrência: O sistema não fornece esse tipo de transparência, dispõe apenas do lock rudimentar do Unix. Escalabilidade: O sistema não fornece uma escalabilidade, ou seja, ela é limitada, projetada para suportar de 5 a 10 Clientes, onde o gargalo passa a ser o desempenho do Servidor o qual utiliza UDP (User Datagram Protocol) para transporte (default) e o portmap para serviço de registro para programas que utilizam RPC. Gerência de arquivos distribuídos Nfs3 x Nfs4 Operação v3 v4 Descrição Create Não Sim Cria um arquivo não regular Link Sim Sim Cria uma ligação para um arquivo (hard link) Symlink Sim Não Cria uma ligação simbólica para um arquivo (symbolic link) Mkdir Sim Não Cria um sub-diretório in um dado diretório Mknod Sim Não Cria um arquivo especial Rename Sim Sim Altera o nome de um arquivo Open Não Sim Abre um arquivo Close Não Sim Fecha um arquivo Lookup Sim Sim Procura um arquivo em função do nome Readdir Sim Sim Lê o conteúdo de um diretório Readlink Sim Sim Lê o nome de um caminho armazenado em uma ligação simbólica Getattr Sim Sim Lê os atributos de um arquivo Setattr Sim Sim Configura o valor dos atributos de um arquivo Read Sim Sim Lê os dados contidos em um arquivo Write Sim Sim Escreve dados no arquivo Gerência de arquivos distribuídos Nfs3 x Nfs4 Leitura dos dados de um arquivo no NFS versão 3 Leitura dos dados utilizando procedimentos compostos no NFS versão 4 Gerência de arquivos distribuídos Cache em sistemas NFS Gerência de arquivos distribuídos NFS em dois clientes. Gerência de arquivos distribuídos NFS em dois servidores. Gerência de arquivos distribuídos NFS (network file system) Passos Instalar o servidor Configurar o servidor Instalar o cliente Montar o diretório remoto Exemplo Debian Linux No servidor: apt-get install nfs-kernel-service nfs-common portmap No cliente: apt-get install nfs-common portmap Para utilizar: mount <address>:/<remote_dir> /mnt <options> ls /mnt/<remote_dir> Gerência de arquivos distribuídos :Andrew File System (AFS) AFS é um produto de sistemas de arquivos distribuídos que oferece uma arquitetura do cliente-servidor de arquivos compartilhados, fornecendo independência de posição, escalabilidade, segurança e potencial transparecia de migração de dados. Um sistema usando AFS é organizado em células, que são compostas de máquinas clientes e servidores. As máquinas servidoras executam diversos programas servidores, onde cada um deles cuida de um serviço diferente, como serviço de cache, serviço de arquivos, segurança, localização de arquivos, dentre outros. Uma célula é um agrupamento de administração independente, onde um administrador de uma célula não necessita conhecer ou compartilhar da configuração de outras células. Gerência de arquivos distribuídos . Coda File System É uma evolução do AFS, onde um sistema de arquivo distribuído permite operações desconectadas, e a replicação do servidor e cache se dá pelo cliente. Gerência de arquivos distribuídos :Andrew File System (AFS) Gerência de arquivos distribuídos :Andrew File System (AFS)/coda Venus é um processo executado no nível do usuário que fornece basicamente as mesmas operações que NFS Gerência de arquivos distribuídos :Andrew File System (AFS) Características: O Volume : Embora possam variar em tamanho, em geral são menores que uma partição. Seu tamanho reduzido facilita sua movimentação entre partições e até entre servidores (a fim de aumentar a ciência do sistema e também para manter a carga balanceada entre os servidores). Cada volume corresponde logicamente a um diretório na árvore de arquivos. Assim pode-se manter um volume para cada diretório raiz de um usuário. Desempenho e Cache: Nas máquinas clientes são mantidos caches dos arquivos em utilização, visando melhora na desempenho do sistema. Recursos de rede são economizados quando um cliente obtém um arquivo diretamente do seu cache, sem necessidade de obtê-lo remotamente. O sistema mantém um mecanismo de callback para garantir que os caches dos clientes estejam atualizados em caso de alterações feitas por outros clientes. Gerência de arquivos distribuídos :Andrew File System (AFS) Segurança: Um mecanismo de autenticação mútua garante aos servidores que eles apenas disponibilizam os arquivos aos clientes autorizados, e garante aos clientes que ele estão obtendo os arquivos também dos servidores corretos. O sistema também mantém lista de controle de acessos mantido pelos usuários que permitem uma configuração mais precisa do controle de acesso. Transparência de Localização: Os arquivos disponíveis em um sistema AFS fazem parte de um espaço de nomes único e global. É completamente transparente aos clientes a localização física de um arquivo. Os clientes acessam os arquivos como se eles estivessem efetivamente em seu computador local. Além disto, o espaço de nomes é uniforme entre os diversos clientes. Gerência de arquivos distribuídos Google File system (GFS) Desenvolvido por Larry Page e Sergei Brin, quando ainda eram alunos da Universidade de Stanford Atualmente, o sistema é comercializado pela Google Projetado para buscas em grandes bases de dados Replicação e acesso paralelo: no mínimo 3 réplicas Gerência de arquivos distribuídos Google File system (GFS) Arquitetura Gerência de arquivos distribuídos Google File system (GFS) Passo a passo Gerência de arquivos distribuídos Google File system (GFS) Passo a passo Gerência de arquivos distribuídos Google File system (GFS) Operação de escrita Gerência de arquivos distribuídos Google File system (GFS) Operação de escrita Gerência de arquivos distribuídos Google File system (GFS) oAltamente escalável oMestre apenas coordena, são os Chuncks que fazem todo o trabalho pesado oA arquitetura Mestre/Chuncks pode ser reaplicada, criando super mestres oTodos os índices ficam em memória oExploração de paralelismo oLeitura, escrita e incluir dados (append) em paralelo Gerência de arquivos distribuídos Google File system (GFS)