Faculdade Integrada do Ceará – FIC Graduação em Redes de
Transcrição
Faculdade Integrada do Ceará – FIC Graduação em Redes de
Faculdade Integrada do Ceará – FIC Graduação em Redes de Computadores Disciplina - Sistemas Distribuídos Prof. Andrey Halysson Lima Barbosa Aula 8 – Sistema de Arquivos Distribuído Sumário • • • • • • • • • • • Problemas Solução Introdução Arquitetura de Sistemas de Arquivos Interfaces dos Sistemas de Arquivos Transparência de nomes Semântica de compartilhamento Implementação Usos de arquivos Replicação Caching Problemas! • O computador não lê disquete • Onde está o arquivo que eu gravei nessa máquina? • O disco rígido crashou!!! • Discos rígidos: ▫ 80GB → R$ 145,00 ▫ 160GB → R$ 203,00 ▫ 250GB → R$ 235,00 Solução! • Sistema de Arquivos Distribuídos ▫ Acesso remoto aos arquivos armazenados em um servidor (diretório /home) ▫ Acesso aos dispositivos de E/S de outras máquinas ▫ Controle de versão e restauração de cópias de segurança • Os sistemas de arquivos distribuído devem prover: ▫ ▫ ▫ ▫ ▫ Confiabilidade Redundância Disponibilidade Escalabilidade Etc. Introdução • Os sistemas de arquivos são responsáveis pela organização, armazenamento, recuperação, atribuição de nomes, compartilhamento e proteção de arquivos. • Os arquivos contêm dados e atributos. ▫ Os dados consistem de uma sequência de elementos (normalmente 8 bits) ▫ Os atributos são mantidos como um único registro contendo informações como: tamanho do arquivo, indicações de tempo, tipos de arquivo, identidade do proprietário e listas de controle de acesso. Introdução • Requisitos dos sistemas de arquivos distribuídos ▫ Transparência Do acesso De localização De mobilidade De desempenho De mudança de escala ▫ Atualização concorrente ▫ Replicação de arquivos Introdução • Requisitos dos sistemas de arquivos distribuídos ▫ ▫ ▫ ▫ Tolerância a falhas Consistência Segurança Eficiência Introdução • Serviço de arquivos ▫ Descreve os serviços oferecidos pelo sistema de arquivos aos clientes • Servidor de arquivos ▫ Processo executado em alguma máquina e que implementa o serviço de arquivos • Mais de um servidor de arquivo pode estar executando simultaneamente, inclusive com serviços diferentes, por exemplo um servidor UNIX e um MSDOS Arquitetura de Sistemas de Arquivos • Sistema de arquivos pode ser dividido em: ▫ Serviço de arquivos (plano) Implementa operações em arquivos como leitura e escrita. São usados identificadores exclusivos de arquivos (UFIDs) para fazer referência aos arquivos em todas as requisições de operações. ▫ Serviço de diretórios Implementa criação e manipulação de diretórios e adição e deleção de arquivos de diretórios. Fornece uma mapeamento entre nomes textuais e os UFIDs Interface do Sistemas de Arquivos • O que é um arquivo? (sequência de bytes) • Serviço de arquivos descreve primitivas para que se possa alterar alguns dos atributos ou dados • Arquivos podem ou não (imutáveis) ser modificados após criação • Proteção é implementada usando-se capacidades ou listas de controle de acesso ▫ Capacidades são tickets que descrevem acesso permitido do usuário para cada objeto Interface do Sistemas de Arquivos • Listas de controle de acesso são associadas com cada arquivo e descrevem quem pode acessar os arquivos e como (bits de controle do UNIX é uma lista de controle de acesso simplificada) • Serviços de arquivos podem usar modelos upload/download (arquivos são transferidos por inteiro) ou de acesso remoto (partes dos arquivos são transferidas) Interface do Sistemas de Arquivos a) Modelo de acesso remoto b) Modelo upload/download Interface do Sistemas de Arquivos • Serviço de diretórios define um alfabeto e sintaxe para criação de nomes de arquivos e diretórios • Implementados hierarquicamente, geralmente permitem a criação de links para diretórios ou arquivos arbitrários, que podem gerar grafos de diretórios • O ideal é que todas as máquinas tenham mesma visão do sistema de arquivos. Isso geralmente não é possível quando se usa montagem remota Interface do Sistemas de Arquivos Transparência de nome • A idéia de transparência de localização é que o nome completo do arquivo não tenha nenhuma parte que indique onde o arquivo está fisicamente • Sistema onde arquivo pode ser realocado sem que mude de nome possui independência de localização • Abordagens máquina:nome e montagem remota de arquivos são simples mas não implementam espaço único de nomes Nomes em dois níveis • Arquivos possuem nomes simbólicos e nomes binários, e diretórios são responsáveis por mapear os nomes simbólicos em binários • Nome binário varia de sistema a sistema, por exemplo, inodes em UNIX, ou pode indicar um servidor mais o nome do arquivo (link simbólico) • Mapeamento pode retornar mais de uma localização do arquivo Semântica de compartilhamento de arquivos • Necessária sua definição quando mais de um usuário compartilha o mesmo arquivo • A semântica UNIX diz que leitura de um arquivo deve retornar valor mais recente do arquivo. Pode ser conseguida em um SD se somente um servidor é usado • Baixa performance. Uso de caches melhora performance mas dificulta a manutenção da semântica de compartilhamento Semântica de compartilhamento de arquivos • Propagar todas as mudanças de volta para o servidor • Pode-se enviar mudanças para o servidor após fechamento do arquivo. Outros processos acessam arquivo antigo enquanto isso não acontece. É a chamada semântica de sessão • Uso de transações atômicas garante que operações serão efetuadas sem interferências de outras transações Implementação • Experimentos feitos em um sistema acadêmico mostraram que: 1. 2. 3. 4. 5. 6. 7. A maioria dos arquivos são pequenos Leitura é muito mais comum que escrita Acessos randômicos em leituras e escritas são raros A maioria dos arquivos tem uma duração curta Compartilhamento de arquivos não é comum O processo médio usa poucos arquivos Existem classes de arquivos diferentes com propriedades diferentes Usos de arquivos • Será que essa observações podem ser extrapoladas para outros tipos de sistemas ou SDs? • A dominância de pequenos arquivos sugere que podemos transferir arquivos inteiros de uma vez e prover mecanismos para transferência de pedaços de grandes arquivos. (otimize o caso comum!) • Arquivos criados são mantidos no cliente e caso não sejam deletados, são enviados ao servidor • Pouco compartilhamento de arquivos sugere uso de caches nos clientes Estrutura do Sistema • Como servidores de arquivos e diretórios são organizados internamente? • Pode haver ou não distinção entre servidores e clientes? • Serviços de arquivos e diretórios podem ser combinados em um ou não (menos comunicação x flexibilidade) • Servidores com ou sem estado (informações dos processos que estão acessando os arquivos) Estrutura do Sistema • Servidores sem estado: ▫ Mais tolerantes a falhas ▫ Não precisam de chamadas OPEN/CLOSE (reduz número de mensagens) ▫ Não gastam espaço no servidor com tabelas ▫ Não limitam número de arquivos abertos ▫ Não tem problema caso cliente falhe • Servidores com estados armazenados em uma tabela: ▫ Requerem mensagens menores ▫ Tem melhor performance ▫ Podem ler antecipadamente ▫ São mais fáceis de se implementar idempotencia* ▫ Pode-se bloquear arquivos *Propriedade da reunião de conjuntos que diz: A reunião de qualquer conjunto com ele próprio é sempre ele próprio Caching • • • • Caching no lado do servidor e do cliente Qual é a unidade que a cache gerencia? Qual algoritmo de troca na cache? Onde colocar a cache ? ▫ Dentro de cada processo: não permite compartilhamento com outros processos ▫ No kernel: chamada para o kernel é necessária até em acertos na cache ▫ Em um processo gerenciador de cache: tem de se evitar que páginas deste processo sejam pagedout Consistência de Caches • Métodos para implementar consistência de cache: ▫ Caches writethrough: funciona mas não afeta tráfego de escritas. (cliente grava -> servidor) ▫ Delayed writing (Escrita retardada): melhor performance mas semântica é ambígua ▫ Escrita no fechamento: implementa semântica de sessão ▫ Controle centralizado: implementa semântica UNIX mas não é robusto e não te boa escalabilidade Replicação • Arquivos geralmente são mantidos em mais de um servidor, o que exige replicação • Isso é feito por questões de: ▫ Confiabilidade ▫ Disponibilidade ▫ Eficiência • Modo de replicação define se sistema é ou não transparente à replicação • Replicação explícita, preguiçosa ou usando grupos Replicação • Na replicação explícita o programador controla o processo de criação de arquivos com o cliente enviando mensagens para os servidores envolvidos • Na replicação preguiçosa o cliente envia mensagens para um servidor mestre, que quando possível (daí o nome preguiçosa), envia mensagens para os outros servidores • Na replicação usando grupos, as mensagens para todos os servidores são enviadas simultaneamente Protocolos de atualização • Atualizações dos arquivos criados no processo de replicação podem ser feitas usando-se replicação de cópia primária ou votação ▫ Cópia primária - Todas as atualizações devem ser feitas em um servidor mestre, enquanto que leituras podem ser feitas usando-se qualquer servidor ▫ No algoritmo de votação cliente tem de adquirir permissões de escrita de vários servidores (mais robusto) Estudo de caso: Sun Network File System • Exemplo canônico de sistema de arquivos distribuído • Desenvolvido pela Sun e incorporado no SunOS nos anos 80 • NFS – Network File System ▫ Versão 3, 2000 ▫ Versão 4, 2003 • Multiplataforma, seguro e confiável Estudo de caso: Sun Network File System • Idéia básica ▫ Coleção de clientes e servidores compartilham um sistema de arquivos Servidores exportam os diretórios Clientes acessam os diretórios exportados “montando” os mesmos ▫ Suporta sistemas heterogêneos ▫ Possui um protocolo bem definido cliente/servidor mounting: retorna o I-node read write Estudo de caso: Sun Network File System • Uma máquina é cliente NFS se ela monta ou “importa” o arquivos ou diretórios • Uma máquina é servidora se ela “exporta” arquivos ou diretórios Estudo de caso: Sun Network File System • Um sistema pode ser: ▫ ▫ ▫ ▫ Cliente e servidor Unicamente cliente Unicamente servidor Uma máquina servidora pode ter várias máquinas clientes ▫ Uma máquina pode ser cliente de vários servidores Estudo de caso: Sun Network File System • Sistema de Arquivos Virtuais - VFS ▫ Implementada no núcleo do sistema ▫ Permite acesso a diferentes tipos de sistema de arquivos (Unix, DOS,..) ▫ A cada sistema de arquivos montado corresponde uma estrutura VFS no núcleo ▫ O sistema de arquivos virtual é mapeado no sistema de arquivos real se o arquivo é local Estudo de caso: Sun Network File System • Arquitetura Estudo de caso: Sun Network File System • Arquitetura Estudo de caso: Sun Network File System • Como fazer uso? ▫ Passos Instalar o servidor Configurar o servidor Instalar o cliente Montar o diretório remoto Estudo de caso: Sun Network File System • Como fazer uso? ▫ Exemplo Debian Linux No servidor: apt-get install portmap nfs-kernel-server nfs-common No cliente: apt-get install portmap nfs-common Instruções de configuração: man nfs Para utilizar: mount <address>:/<remote_dir> /mnt <options> ls /mnt/<remote_dir> Estudo de caso: Sun Network File System • NFSv3 x NFSv4 – requisição composta Estudo de caso: Sun Network File System • Cache em cliente no NFSv4 Estudo de caso: Sun Network File System • Funcionamento com dois clientes Estudo de caso: Sun Network File System • Funcionamento dois servidores Estudo de caso: Sun Network File System • Aula prática ▫ Servidor: 1) Instalando NFS Server no debian: apt-get install portmap nfs-kernel-server nfs-common 2) editando o arquivo /etc/exports /tmp 192.168.1.0/24(rw,no_root_squash) 3) Para exportar: exportfs -a Estudo de caso: Sun Network File System • Aula prática ▫ Cliente: 1) Instalando NFS Client no debian: apt-get install portmap nfs-common 2) Montando: mount -t nfs 192.168.1.1:/tmp /mnt/compartilhamento 3) Via /etc/fstab 192.168.1.1:/tmp /mnt/compartilhamento nfs rw,sy nc,auto 0 0 Estudo de caso: Andrew File System - AFS • Similar ao Network File System (NFS) da Sun Microsystems e sua arquitetura, o Andrew File System (AFS) foi especificamente projetado para fornecer serviços de arquivo confiáveis em grandes ambientes distribuídos; • Projeto iniciado em 1982 pelo Information Technology Center da Carnegie Mellon University (CMU) patrocinado pela IBM; • Concebido para uso no campus da CMU; Estudo de caso: Andrew File System - AFS • O AFS cria ambientes distribuídos gerenciáveis com uma estrutura baseada em células; • Uma célula é um grupo de sistemas de arquivo servidores e clientes dentro de uma área autônoma que é gerenciada por uma autoridade específica; • Os usuários podem facilmente compartilhar informações com outros usuários dentro da célula; Estudo de caso: Andrew File System - AFS • Eles também podem fazer isso com usuários em outras células, dependendo dos direitos de acesso dados pelas autoridades nessas células; • O principal objetivo do AFS é fazer que os usuários recuperem informações igualmente de qualquer localização, permitindo aos usuários colaborarem e compartilharem informações. Estudo de caso: Andrew File System - AFS • Versões em produção do AFS ▫ ▫ ▫ ▫ ▫ CMU Transarc/IBM University of Michigan (OS/390) OpenAFS ARLA/milko Estudo de caso: Andrew File System - AFS • Arquitetura de um ambiente AFS é composta de vários elementos. • Do ponto de vista físico temos: ▫ ▫ ▫ ▫ Equipamentos servidores; Máquinas cliente; Dispositivos de armazenamento; Meios de comunicação local e de longa distância. Estudo de caso: Andrew File System - AFS • Do ponto de vista funcional (lógico): ▫ ▫ ▫ ▫ Serviços de diretório; Serviços de arquivo; Serviços de segurança e administração; Serviços a nível de usuário. • No AFS, arquivos sempre são armazenados nos servidores, mas os usuários acessam apenas “cópias” desses arquivos, depositados na área de cache da máquina cliente que utilizam no momento. Estudo de caso: Andrew File System - AFS • Vice e Venus são programas que estabelecem as interfaces entre o servidor de arquivos (que pode estar em qualquer uma das células da rede), a máquina cliente e o usuário; Estudo de caso: Andrew File System - AFS Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ Arquivo Para o AFS não há restrições quanto ao tipo de arquivo a tratar; ▫ Diretório O conceito de diretório no AFS é parecido com o adotado em qualquer outro sistema de arquivos. ▫ Volume O AFS divide os discos dos servidores em partições, que são por sua vez divididas em volumes. Volumes são containers que armazenam arquivos e diretórios gerenciados em conjunto. Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ Célula Em uma visão física, uma célula é um conjunto de servidores e máquinas cliente, administradas independentemente e que estejam utilizando o AFS. ▫ Rede AFS Uma rede AFS é um conjunto de células que se conectam para formar um único sistema de arquivos distribuídos. Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ Usuário Em um ambiente AFS o usuário é a pessoa que, utilizando uma máquina cliente, cria novos arquivos ou acessa arquivos existentes para leitura, atualização ou remoção. ▫ Administrador Em um ambiente AFS existem os administradores gerais do ambiente, que regulam as questões entre as células e os administradores de células, que gerenciam os usuários e recursos da célula. Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ Cache Para o AFS, a área de cache é uma área de armazenamento temporário, criada no disco ou na memória da máquina cliente. ▫ Vice Os servidores de arquivo rodam um único software chamado Vice, que é um corpo de código independente do kernel do UNIX. A função do Vice é tratar as requisições dos usuários para executar operações sobre os arquivos armazenados no sistema. Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ Venus As máquinas cliente também rodam um programa adicional, chamado Venus. Esse programa, que era inicialmente independente, foi incorporado ao kernel do UNIX por questões de performance. A função do Venus é fazer a interface entre o usuário, a máquina cliente e o servidor de arquivos. O Venus funciona ainda como o gerenciador de cache. Estudo de caso: Andrew File System - AFS • Entidades do Sistema ▫ FID Um FID é um identificador de arquivo, que é utilizado tanto pelo Vice como pelo Venus. Ele é uma estrutura de 3 blocos de 32 bits cada, que representam respectivamente o volume onde o arquivo está armazenado, o arquivo dentro desse volume e um número único de identificação do arquivo. Estudo de caso: Andrew File System - AFS Estudo de caso: Andrew File System - AFS • Características do Sistema ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Cliente/Servidor; Modelo de Acesso Remoto; Independência de SO; Independência de localização; Replicação; Escalabilidade; Disponibilidade; Usa semântica de sessão; Estudo de caso: Andrew File System - AFS • Características do Sistema ▫ Segurança – Controle de acesso Em um ambiente AFS, ele primeiro tem que provar sua identidade a um sistema de autenticação baseado no Kerberos; Depois de autenticado o usuário recebe um token, que é utilizada pelo Gerenciador de cache quando requisitando serviços de um servidor AFS. Esse token expira em um prazo determinado, cujo default é 25 horas. Estudo de caso: Andrew File System - AFS • Características do Sistema ▫ Segurança – Controle de acesso Depois do usuário ter sido identificado e autenticado, o AFS utiliza uma Lista de Controle de Acesso (ACL) para determinar seus direitos de acesso a um arquivo ou diretório e para determinar que operações o usuário pode executar em relação a esses arquivos ou diretórios. Comparando NFS x AFS • No AFS os servidores de arquivos e máquinas cliente formam uma unidade lógica sob uma mesma administração, chamada célula, enquanto que no NFS isso não ocorre e cada servidor é gerenciado independentemente; • No AFS a administração é feita por coleções de arquivos, chamadas volumes, enquanto que no NFS a administração é feita por arquivos individuais; Comparando NFS x AFS • No AFS a visão do conjunto de nomes de arquivos é global e comum a todas as máquinas, enquanto que no NFS a visão entre várias máquinas nem sempre é consistente; • No AFS a localização dos arquivos é automaticamente realizada por processos do sistema, com base em um banco de dados de localização dos volumes, enquanto no NFS os pontos de partida para a localização física de arquivos tem que ser informado pelo administradores ou usuários; Comparando NFS x AFS • No AFS os procedimentos de caching em grandes blocos reduzem o tempo de carga nos servidores e na própria rede, enquanto no NFS os procedimentos de caching são repetitivos, utilizando pequenos buffers de memória, e consequêntemente com maior ocupação do servidor e da própria rede; • O AFS apresenta performance melhor que o NFS em configurações com ampla distribuição geográfica, mantendo praticamente o mesmo nível de performance em qualquer tamanho de configuração, já o NFS é mais adequado para pequenas e médias instalações. Comparando NFS x AFS • No AFS a autenticação do usuário é feita pelo Kerberos, enquanto no NFS a identificação do usuário não é criptografada e pressupõe hosts e usuários confiáveis. Mas pode ser configurada para utilizar o Kerberos; • No AFS o uso de réplicas distribui as atividades de carga entre os servidores escolhidos, já no NFS não é feita replicação entre servidores; Estudo de caso: Distributed Files System - DFS • Continua...