Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Distribuidos Sistema de Arquivos Distribuídos 1 Curso de Sistemas Distribuídos Sistemas de Arquivos Distribuídos: DFS Projeto Sistemas Distribuidos Sistema de Arquivos Distribuídos 2 Autoria ! Autoria " 1a versão # Alunos de disciplina do PPGC " Revisões # C. Geyer ! Versão atual " V13, nov 2011 " C. Geyer Sistemas Distribuidos Sistema de Arquivos Distribuídos 3 Súmula ! Súmula " Projeto " Implementação # Obs.: outro conjunto de slides " Tendências # Obs.: outro conjunto de slides Sistemas Distribuidos Sistema de Arquivos Distribuídos 4 ! Bibliografia " Tanenbaum: MOS (1ª versão), DOS, DS # Distributed Systems – Principles and Paradigms. Prentice-Hall, 2002. # Cap. 10 " Silberschatz: versões mais recentes # (exemplo): Sistemas Operacionas com Java. 7ª edição, ed. Campus, 2008. # Cap. 17 Súmula Sistemas Distribuidos Sistema de Arquivos Distribuídos 5 ! Bibliografia " Coulouris # Sistemas Distribuídos – Conceitos e Projeto. 4ª edição, Bookman, 2007. # Cap. 8 # Cap. 10 (sistemas p2p) # Cap. 15 (SAD com replicação # Cap. 17 (sistemas de dados multimídia) Súmula Sistemas Distribuidos Sistema de Arquivos Distribuídos 6 Projeto de Sistemas de Arquivos Distribuídos (DFS) Sistemas Distribuidos Sistema de Arquivos Distribuídos 7 ! Roteiro (somente projeto) ! Conceitos Básicos ! Interface do Sistema de Diretórios ! Interface do Serviço de Arquivos ! Semântica de Compartilhamento de Arquivos ! Exemplos Roteiro Sistemas Distribuidos Sistema de Arquivos Distribuídos 8 ! Funções de um Sistema de Arquivos Distribuído " Armazenar e compartilhar programas e dados " idênticas às de um sistema centralizado (local) " Ênfase na disponibilidade, confiabilidade e segurança " Questões de SDs " Desempenho " questão importante porque acessos remotos podem ser significativamente mais lentos que os locais " não se pretende em geral que o SAD seja mais rápido que um SA local " mas sim que a degradação seja aceitável Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 9 ! Funções de um Sistema de Arquivos Distribuído " Usualmente o serviço mais usado # Funcionalidade e Desempenho são críticos " Deve suportar alguns dos requisitos típicos de SDs # Transparência # Heterogeneidade do hardware e SO # Escalabilidade # Suportar falhas de rede # Particionamento da rede # Desconexão (planejada ou fortuita) Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 10 ! (grandes) Exemplos de SADs " Tanenbaum 2002 # NFS e CODA (evolução do AFS) " Coulouris # NFS e AFS " Silberschatz # AFS Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 11 Conceitos Básicos ! Distinção entre Servidor de arquivos e Serviço de arquivos " Serviço de Arquivos (File Service) # especificação do sistema de arquivos # interface: primitivas, parâmetros e ações # visão do cliente # Usuário e programador " Servidor de Arquivos (File Server) # processo(s) que executa(m) o File Service # implementação Sistemas Distribuidos Sistema de Arquivos Distribuídos 12 ! Componentes básicos de serviço de um DFS " Segundo Tanenbaum # interface de serviço de diretórios # interface de serviço de arquivos Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 13 ! Componentes básicos de serviço de um DFS " Segundo Coulouris # Serviço de diretório # Trabalha com nomes lógicos (strings) # Serviço “flat” de arquivos # Trabalha com identificador único (UFID) # Usualmente inteiros # Módulo cliente # Emula interfaces dos outros serviços # Guarda informações de rede como os endereços dos outros serviços # Junto com outros serviços garante bom desempenho # Por exemplo, usando caching Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 14 ! Componentes básicos segundo Silberschatz " Serviço # Entidade de sw executando em 1 ou mais máquinas # Fornece um tipo específico de função aos clientes " Servidor # Um sw executando em 1 (uma) máquina # Em SA: controla dispositivos de armazenamento locais " Cliente # Um processo (1 máquina) fazendo uso do serviço # Através de operações # => interface do cliente " Interação interna entre máquinas # Nível mais baixo Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 15 ! Componentes básicos segundo Silberschatz " Um SA tem os componentes acima " Um SAD (DFS) é um SA onde todos os componentes estão distribuídos " Um SAD pode fazer uso de vários dispositivos de armazenamento distribuídos " Uma máquina pode ser cliente e servidor Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 16 ! Questões de projeto ou requisitos " Transparência ao usuário (convencional ou programador) # Mesma interface em operações locais e remotas " SAD localiza e transporta arquivos na rede " Desempenho # SA local: acesso ao dispositivo de armazenamento e cpu # SAD: idem mais comunicação (uso da rede) # Desempenho ideal do SAD: comparável ao do SA " Gerenciamento do espaço de armazenamento distribuído # Composto de vários espaços locais # Cada espaço local: conjunto de arquivos Conceitos Básicos Sistemas Distribuidos Sistema de Arquivos Distribuídos 17 ! Interface do sistema de diretórios: visão geral " Cliente do serviço “flat” de arquivos " Funções básicas " Cria/Remove diretórios " (re)nomeia arquivos (em geral) " e altera a posição (move) de arquivos (em geral) " Nomes de arquivos (nome + extensão) Interface do Sistema de Diretórios Sistemas Distribuidos Sistema de Arquivos Distribuídos 18 ! Interface do sistema de diretórios: visão geral " Organização de Diretórios $ Árvore ou hierárquico $ Grafo $ links a qualquer outro diretório $ cuidado com loops e “perda” de diretórios $ mais complexo em sistemas distribuídos devido falta de memória global (compartilhada) Interface do Sistema de Diretórios Sistemas Distribuidos Sistema de Arquivos Distribuídos 19 ! Organização de Diretórios Interface do Sistema de Diretórios A CB ED (a) Árvore de Diretórios A CB ED 2 1 1 0 1 (b) Grafo de Diretórios Máquina 1 Máquina 2 Sistemas Distribuidos Sistema de Arquivos Distribuídos 20 Interface do Sistema de Diretórios ! Interface do sistema de diretórios: visão geral " Visão dos usuários # única ou não # mounting: permite visão com diferentes caminhos por diferentes clientes " Diretório raiz # global, único: desejável (?) # opção: subdiretórios são unicamente servidores # caminho: /servidori/path # exemplo: Unix clássico, NFS # diversos # exemplo: Windows: cada unidade (letra) tem uma raiz distinta Sistemas Distribuidos Sistema de Arquivos Distribuídos 21 ! Transparência de nomes " Transparência de Localidade " nome completo (path) não indica a localização do arquivo (qual máquina) " exemplo: /servidor1/arquivo " servidor1 pode estar em qualquer máquina " exemplo: NFS " Independência de Localidade " transparência de migração " arquivo pode ser movido sem alteração de nome (path) Interface do Sistema de Diretórios Sistemas Distribuidos Sistema de Arquivos Distribuídos 22 ! Transparência pelo Coulouris " De acesso # Interfaces únicas " De localização # Nome não indica local " De concorrência # Mecanismos de controle de acessoconcorrente # Padrões e opcionais " De falhas # Correção das operações em caso de falhas de um cliente ou de rede (mensagens perdidas, ...) " De desempenho # Desempenho satisfatório em variação forte da # de clientes Interface do Sistema de Diretórios Sistemas Distribuidos Sistema de Arquivos Distribuídos 23 ! Transparência pelo Coulouris " De replicação # Arquivos são totalmente ou parcialmente replicados para maior desempenho ou maior disponibilidade " De migração # Arquivos mudam de servidor para melhor desempenho ou outra métrica Interface do Sistema de Diretórios Sistemas Distribuidos Sistema de Arquivos Distribuídos 24 Interface do Sistema de Diretórios ! Nomeação em dois-níveis " Nomes simbólicos (ASCII) # usados pelos usuários " Nomes binários (sistema) # usados pelo servidor # mapeamento simbólico -> binário # opções em sistemas distribuídos # somente posição local # indicação de servidor + posição local # Mais usada # Se réplicas: -> lista de réplicas " Links simbólicos (x links físicos – hard) # caminhos completos, podendo incluir servidor # permite acessar outros servidores Sistemas Distribuidos Sistema de Arquivos Distribuídos 25 Interface do Sistema de Diretórios ! Nomeação em dois-níveis " nomes binários múltiplos # usualmente original e cópias de segurança # permite escolher o melhor servidor no momento # mais disponível Sistemas Distribuidos Sistema de Arquivos Distribuídos 26 Interface do Serviço de Arquivos ! Interface do serviço de arquivos: visão geral " estrutura dos arquivos # seqüência de bytes (DOS, Unix): mais comum em DFS # registros (mainframes) # padrão: tamanho fixo # organizações indexadas " atributos de arquivos # proprietário, tamanho, datas, direitos de acesso, ... Sistemas Distribuidos Sistema de Arquivos Distribuídos 27 Interface do Serviço de Arquivos ! Interface do serviço de arquivos (cont.) " Arquivos modificáveis ou imutáveis # imutáveis: simplifica uso de cache e replicação " Segurança # capabilities: por usuário/objeto (arquivo) # listas de controle de acesso: por arquivo/usuário ou tipo de usuário # exemplo: bits de proteção do Unix (lista simplificada) " Modelos de acesso # Upload/Download # Acesso Remoto Sistemas Distribuidos Sistema de Arquivos Distribuídos 28 ! Modelo Upload/Download Interface do Serviço de Arquivos Cliente Servidor 1. O arquivo é transferido para o cliente 2. Os acessos ao arquivo são feitos exclusivamente no cliente 3. Quando o cliente termina, o arquivo é reenviado ao servidor Arquivo antigo Arquivo atual (1) (3) (2) Sistemas Distribuidos Sistema de Arquivos Distribuídos 29 Interface do Serviço de Arquivos ! Modelo Upload/Download " Vantagens # Interface simples: # Entre cliente / servidor # 2 primitivas principais # Read/Write arquivo # Eficiência na execução do cliente (acesso local) " Desvantagens # Espaço suficiente nos clientes # “Granularidade” da aplicação do cliente -> eventual desperdício no uso da rede " Exemplo # Andrew File System (AFS) => /cache (blocos 64Kb) Sistemas Distribuidos Sistema de Arquivos Distribuídos 30 ! Modelo de Acesso Remoto Interface do Serviço de Arquivos Cliente Servidor • Os arquivos permanecem no Servidor • Apenas as partes necessárias do arquivo são repassadas ao Cliente Sistemas Distribuidos Sistema de Arquivos Distribuídos 31 ! Modelo de Acesso Remoto " Sistema de arquivos executa no servidor (operações) " Maior complexidade (primitivas) " Requer pouco espaço de armazenamento nos clientes " Aplicações de “granularidade” baixa são beneficiadas " Granularidade baixa: cada read/write com poucos bytes " Pode seguir o modelo cliente/servidor (request/reply) " ou usar “Caching” => desempenho melhor " Exemplos: " com caching: NFS, Locus, Sprite, Spring " sem caching: Amoeba Interface do Serviço de Arquivos Sistemas Distribuidos Sistema de Arquivos Distribuídos 32 ! Semântica de compartilhamento: tipos " Semântica do tipo Unix " Semântica de Sessão " Arquivos Imutáveis " Transações Atômicas Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 33 ! Semântica do tipo Unix (local) " Efetua ordenação temporal das operações (R/W) efetuadas nos arquivos " “Um Read nota os efeitos de todos os Writes anteriores” " Por exemplo, ordenados por relógio físico de um único computador " Assegura a leitura do valor mais recente (último Write) " Podem compartilhar ponteiros para arquivos " Simples em um Sistema Distribuído: " com um único servidor (seqüenciador de operações) " clientes sem cache (evita a propagação de atualizações) Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 34 ! Semântica do tipo Unix x SDs " Múltiplos servidores (replicação ou distribuição): " solução para " tolerância a falhas " melhor desempenho " Cache nos clientes: solução para " menor tráfego de mensagens " Uso de cache e/ou múltiplos servidores " semântica diferente ou degradada em geral " exemplo: NFS da Sun Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 35 ! Semântica do tipo Unix x SDs " Tentativas de emulação distribuída do Unix " Ex: Sprite, Locus (ver Silberschatz) " manter compatibilidade (mesma semântica) " Sem muito sucesso (?) Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 36 ! Semântica de Sessão " Efetua ordenação temporal das operações (R/W) efetuadas nos arquivos por sessão " Sessão: open – close de um cliente (programa) " “Mudanças em um arquivo aberto " são visíveis somente ao processo que modificou o arquivo " somente no fechamento as atualizações são visíveis aos outros processos” " Não garante a leitura dos valores “reais” (atuais) Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 37 ! Semântica de Sessão " Problema: " 2 ou mais clientes modificando o mesmo arquivo => qual o conteúdo final? " SGBDs devem usar outra semântica (“Serialização”) Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 38 ! Semântica de Arquivos Imutáveis " Existem somente 2 operações: CREATE e READ " Uma operação de WRITE equivale a " criar um arquivo no diretório com o mesmo nome anterior mais um índice de versão " Não atualiza os arquivos, e sim, os diretórios " Problema: # um arquivo é modificado enquanto outro processo efetua um READ " Exemplos: " Amoeba (Bullet Server) (somente essa semântica) " Pode coexistir em um SAD com outras semânticas " Um tipo de arquivo Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 39 ! Semântica de Transações Atômicas " Acessos a arquivos são feitos por primitivas do tipo: BEGIN/END TRANSACTION " Não há interferência entre transações concorrentes " são serializadas se necessário " Similar aos modelos de SGBDs " Oferece as propriedades ACID (BD) - total ou parcialmente " Exemplo: Cambridge File System (CFS) Semântica de Compartilhamento Sistemas Distribuidos Sistema de Arquivos Distribuídos 40 ! Resumo Comparativo Semântica de Compartilhamento Cada operação em um arquivo é visível a todos os processos Semântica do tipo UNIX Semântica de Sessão Comentário Arquivos Imutáveis Abordagem Transações Atômicas Nenhuma mudança é vista por outros processos até a execução de um CLOSENenhuma atualização é permitida Operações do tipo “tudo-ou-nada” Sistemas Distribuidos Sistema de Arquivos Distribuídos 41 ! SAD com estado e sem estado " Silberschatz: boa discussão sobre o problema " SAD com estado # Servidor mantém informações sobre arquivos abertos pelos clientes # Em memória # Em geral melhor desempenho # Argumentos de operações (mensagens) são mais simples # Por exemplo, uma referência interna ao arquivo aberto # Em caso de falhas # Retomada do sistema pode ser mais complexa # Exemplo: AFS SAD: com e sem estado Sistemas Distribuidos Sistema de Arquivos Distribuídos 42 ! SAD com estado e sem estado " SAD sem estado # Servidor não mantém informações sobre arquivos abertos pelos clientes # Argumentos de operações (mensagens) são mais complexos # Por exemplo, sempre o nome completo do arquivo # Off-set da primeira posição (zero) a ler/gravar # Em caso de falhas # Retomada do sistema é mais simples # Exemplo: NFS original SAD: com e sem estado Sistemas Distribuidos Sistema de Arquivos Distribuídos 43 ! Considerações de Projeto de Caching " Granularidade dos dados (AFS - 64Kb, Unix - 4 ou 8Kb) " Localização da Cache (memória ou disco) – " Menor ou maior confiabilidade " Política de Modificação $ write-through $ Grava “imediatamente” $ delayed-write $ Grava mais tarde $ write-on-close $ Grava somente no close Projeto de Caching Sistemas Distribuidos Sistema de Arquivos Distribuídos 44 ! Considerações de Projeto de Caching " Consistência dos dados no cliente ou no servidor $ Cliente (AFS) $ Servidor (Sprite) Projeto de Caching Sistemas Distribuidos Sistema de Arquivos Distribuídos 45 ! Considerações de Projeto de Caching ! Exemplo ! UNIX 4.2 BSD: ! cache de 400Kb, ! blocos de 4Kb, ! delayed-write de intervalo = 30seg. Projeto de Caching Sistemas Distribuidos Sistema de Arquivos Distribuídos 46 ! Considerações de Projeto de Caching ! Sem. de compartilhamento e Política de Modificação ! Sessão -> write-on-close ! Unix -> write-through Projeto de Caching Sistemas Distribuidos Sistema de Arquivos Distribuídos 47 ! Exemplos " Amoeba (Univ. Vrije, Holanda) # Sem caching, # write-through, # arquivos imutáveis (Read, Create, Delete), # modo usuário (implementação) " Sprite (Univ. Califórnia, Berkeley) # Cache dinâmico (4Kb), # semântica Unix (versões de arquivos), # delayed-write (30 seg.), # kernel-mode Exemplos Sistemas Distribuidos Sistema de Arquivos Distribuídos 48 ! Exemplos " Locus (UCLA) # Semântica - Unix, # delayed-write, # Tokens de Read e Write, # Controle de acesso por operação # Semântica de Bloqueio possível " NFS (Sun) # Acesso remoto + caching (UDP & RPC), # read-ahead e delayed-write, # cache (4Kb), # semântica não definida (dependente do tempo) Exemplos Sistemas Distribuidos Sistema de Arquivos Distribuídos 49 ! Exemplos " AFS (Univ. Carnegie Mellon) # Caching (64Kb) # semântica de sessão, # kernel-mode " Spring (Sun) # Caching, # semântica Unix (mem. comp. distr.), # capabilities, e ACLs, # user-mode Exemplos Sistemas Distribuidos Sistema de Arquivos Distribuídos 50 ! Resumo " Questões de projeto " Servidor x Serviço " Diretório x Arquivos " Interfaces usuais " Árvores x Grafos " Atributos " Nomes e links " Modelo de dados (estrutura interna) " Modo de acesso: remoto e upload/download " Semântica em compartilhamento " Aspectos de implementação # Cache, escrita, tamanho de bloco Resumo Sistemas Distribuidos Sistema de Arquivos Distribuídos 51 ! [Lev90] Levy, E. & A. Silberschatz “Distributed File Systems”. ACM Comp. Surv., dezembro 1990. ! [Dou90] Douglis, F. et al. “A comparison of two Distributed Systems: Amoeba and Sprite”. Comp. Systems. ! [Nel93] Nelson, M. N. “The Spring File System”. Tech. Rep. SMLI TR-93-10. Sun Microsystems Laboratories. ! [Ous88] Ousterhout, J. K. et al.“The Sprite Network Operating System”. IEEE Computer, Fevereiro 1988. Bibliografia Adicional Sistemas Distribuidos Sistema de Arquivos Distribuídos 52 Curso de Sistemas Distribuídos Sistemas de Arquivos Distribuídos: DFS Projeto
Compartilhar