Projeto e Implementação de Sistemas de Arquivos Prof. Dr. Norian Marranghello Grupo 14 Roger Souza de Paula Maurício Nigro Tronco Ementa • INTRODUÇÃO • CARACTERÍSTICAS DE UM SAD • Arquivos • Hierarquia • PROJETO E IMPLEMENTAÇÃO DE UM SAD • Montagem de Arquivos • Registro de Servidores • Servidores Com ou Sem Informações de Estado • Acesso a Arquivos • Controle de Coerência • Semântica de Compartilhamento • Controle de Versão Introdução Conceitos em comum dos sistemas distribuídos e sistemas de arquivos distribuídos: • transparência; • serviço de diretório; • performance e disponibilidade; • controle de acesso e proteção; Características de um SAD • dispersão de arquivos e usuários; • multiplicidade de arquivos e usuários; Sistema Distribuído Arquivos • Arquivos são mecanismos de abstração de dados ; • Consistem de três componentes lógicos: Seqüência de itens de dados Nome simbólico Nome + Atributos + Dados + Posse, tipo, tamanho, timestamp, autorização de acesso Hierarquia (1) • Arranjo dos diretórios (pais) com seus respectivos subdiretórios (filhos) Sistema de Arquivos Hierárquico • Operações: • leitura; • escrita; • anexação de informações; Serviço de arquivos • criação e remoção de arquivos; • gerência de diretórios; Serviço de diretórios Hierarquia (2) • A hierarquia pode ser esquematizada de duas formas: • árvore; • grafo; Hierarquia (3) • Árvore diretório pai A diretórios filhos C B D E Hierarquia (4) • Grafo contador do número de diretórios apontando para este diretório A B D 1 1 2 C E 1 1 máquina 1 máquina 2 Hierarquia (5) • Visão de hierarquia • Considere os seguintes servidores de arquivos: Servidor de arquivos 1 Servidor de arquivos 2 D A B C E F Hierarquia (6) • Exemplo 1: um sistema no qual todos os clientes têm a mesma visão do sistema de arquivos. cliente 1 cliente 2 root root A B A D C E F B D C E F Hierarquia (7) • Exemplo 2: um sistema no qual diferentes clientes têm diferentes visões do sistema de arquivos. root cliente 1 cliente 2 A root B A C D D B C E F E F Projeto e Implementação de um SAD • Um SAD possui dois componentes: • servidor de arquivos; • servidor de diretórios; • Problemas no projeto e implementação de um SAD: • compartilhamento de arquivos; • replicação de arquivos; Montagem de Arquivos (1) • Montagem de Arquivos Liga o sistema de arquivos de uma máquina remota em um sistema de arquivos de uma máquina local; • Aspectos importantes: • tabela de montagem; • ponto de montagem; • uso de nomes de caminho concatenados; • referências desnecessárias de hosts remotos ou dispositivos locais; Montagem de Arquivos (2) • A montagem de arquivos pode ser feita de três formas: Montagem Explícita: clientes fazem chamadas de montagem explícita do sistema quando é desejado; Montagem de Boot: um conjunto de servidores de arquivo é prescrito e todas as montagens são executadas no tempo de boot do cliente; Automontagem: a montagem de servidores é implicitamente feita quando um arquivo é aberto primeiramente por um cliente; Montagem de Arquivos (3) • Exemplo 3: sistemas de arquivo local e remoto. Servidor de arquivos 1 Servidor de arquivos 2 /root Cliente /root /root export vmlinux Montagem alunos pessoas Remota pedro joão paula usr x nfs Montagem assistentes usuário Remota joana gê ana Registro de Servidores (1) Requer conhecimento da localização dos servidores de arquivo O protocolo de montagem não é transparente Montagem inicial de arquivos Como então localizar os servidores? Registro de Servidores (2) • Resposta: através do uso de um protocolo de resolução de endereço . • Assim, um servidor de arquivo pode ser localizado de duas maneiras: Clientes consultam o registro do servidor antes da montagem; Servidores de arquivos respondem aos pedidos dos clientes; • Conseqüência: Melhorperformance performance Melhor performance Melhor Melhor performance Servidores Com ou Sem Informações de Estado (1) • A cada sessão de arquivo, está associada uma ou mais informação de estado ; Arquivos abertos e seus clientes Montagem de informação Chaves de sessão Informações de Estado Cache ou Buffer Lock status Ponteiros do arquivo Descritores e controladores de arquivos Servidores Sem Informações de Estado: Stateless (1) Não mantêm nenhuma informação de estado; Mais fácil de se implementar; Mais tolerante a falhas: Falhas no cliente não afetam o servidor; Falhas no servidor são fáceis de se recuperar; Não há necessidade de chamadas open/close; Não gasta espaço de memória do servidor para se armazenar tabelas; Servidores Sem Informações de Estado: Stateless (2) Cliente 1 Cliente 2 Cliente 3 Cliente 4 Servidor Servidores Sem Informações de Estado: Stateless (3) Necessidade de idempotência Mecanismo de bloqueio do arquivo Implementação de um servidor Stateless Consistência em cache Gerenciamento de chaves de sessão Servidores Com Informações de Estado: Statefull Mantêm uma ou mais informação de estado; Mensagens menores para solicitações de serviço; Possível ler informações adiantadas; Fácil de se obter idempotência; É possível bloquear arquivos; Acesso a Arquivos (1) Compartilhamento: Sobreposição; Intercalação; Controle de coerência; Controle de concorrência; Acesso a Arquivos (2) Tempo Acesso Remoto Acesso ao cache Acesso de download e upload Simples leitura/escrita Falso compartilhamento Controle de coerência Controle de coerência Transação Controle de concorrência Controle de concorrência Coerência e concorrência Não aplicável Não aplicável Compartilhamento ignorado Espaço Sessão Controle de Coerência (1) • As interpretações (ou definições) a seguir estão listadas em ordem de inflexibilidade: Todas as réplicas são idênticas em todos os instantes; Réplicas são percebidas como idênticas apenas em alguns instantes; Os usuários sempre podem ler os dados ‘mais recentes’ nas réplicas; Operações de escrita são sempre executadas ‘imediatamente’ e seus resultados são propagados em um estilo de melhor esforço. Controle de coerência (2) • A transação deve ser atômica; • Para isso, devem satisfazer as propriedades de atomicidade, consistência, isolamento e durabilidade (ACID); • A função para forçar a se ter atomicidade e consistência em um servidor de arquivo é chamada de serviço de transação. Semântica de Compartilhamento (1) • Controla problemas de coerência e concorrência; • Quatro formas de tratar arquivos compartilhados em sistemas distribuídos: Semântica UNIX; Semântica de sessão; Arquivos imutáveis; Transações. Semântica de Compartilhamento (2) Sistema com um único processador: arquivo original X a b a b c Y Escrita de “c” A leitura obtém “abc” Semântica de Compartilhamento (3) • Sistema distribuído: X a b a b a c Cliente 1 Cliente 2 Leitura obtém “ab” Escrita de “c” b Leitura obtém “ab” a b Servidor de arquivos Y Controle de Versão (1) • O que é? A responsabilidade de forçar semânticas de compartilhamento de arquivo é separada do serviço de arquivo para um serviço de alto nível chamado controle de versão; Para que serve? Solução para se obter o compartilhamento de escrita; Pode pode ser implementado como uma função do serviço de diretório; Controle de Versão (2) • Cada arquivo no diretório é associado a um número de versão; • O arquivo com o mais alto número de versão é considerado ser o de versão atual do arquivo compartilhado; • A chamada de abertura a um arquivo sempre retorna a versão atual; • Operações de leitura/escrita no arquivo aberto são feitas somente no local da cópia em andamento; Controle de Versão (3) • Tentative Version: • Quando um arquivo é fechado, localmente é modificada a versão do arquivo, uma espécie de versão provisória (tentative version), que é atualizada no controle de versão; • Se a versão provisória é fundamentada na versão corrente, é feita uma atualização e a versão provisória se torna a versão atual com um novo número de versão; • Senão, três ações diferentes podem ser realizadas: Desconsiderar conflito; Resolver conflito de versão; Resolver seriabilidade de conflitos; Controle de Versão (4) Exemplo 1: 103 104 disco Servidor Atualiza 104 103 modifica copiar Cliente 1 mem. cache Controle de Versão (5) Exemplo 2: Atualização ? 103 105 Cliente x disco Servidor 104 103 modifica copiar Cliente 1 mem. cache ? Controle de Versão (6) • Conclusões: Resoluções mais complexas de conflito ou esquemas de controle de versão podem ser implementadas dependendo das necessidades das aplicações; O uso de arquivos imutáveis ameniza suas mudanças de responsabilidade do serviço de arquivo para outros sistemas de serviço, permitindo implementações independente dos diferentes modelos de semântica;