Sistemas de Ficheiros Distribuídos
Transcrição
Sistemas de Ficheiros Distribuídos
Sistemas Distribuídos e Paralelos Sistemas de Ficheiros Distribuídos Ricardo Mendão Silva Universidade Autónoma de Lisboa [email protected] December 16, 2014 Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 1 / 32 Outline 1 Introdução 2 Características dos sistemas de ficheiros distribuídos 3 Requisitos dos SFD 4 Arquitectura de um serviço de ficheiros 5 Caso de estudo: Sun Network File System 6 Caso de estudo: Andrew File System 7 Caso de estudo: Dropbox Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 2 / 32 Introdução Os mecanismos para a partilha de dados podem tomar diferentes formas, dependendo dos meios, do objectivo e dos recursos disponíveis. Por exemplo, os servidores web apresentam um modo restrito de partilhar ficheiros, nos quais ficheiros guardados localmente, são disponibilizados na Internet. O desenho de sistemas de ficheiros de larga-escala coloca diversos problemas de balanceamento de carga, fiabilidade,disponibilidade e segurança - exactamente os problemas que os sistemas peer-to-peer ambicionam resolver. A necessidade de partilha em redes locais e intranets levou à necessidade de implementar um tipo de serviço de partilha distinto um sistema que suportasse o armazenamento persistente de dados e programas, em nome dos clientes, e que garantisse a distribuição consistente e actualizada dos dados. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 3 / 32 Introdução Um sistema de ficheiros distribuídos básico é um sistema cujo principal objectivo é emular o funcionamento de um sistema de ficheiros não-distribuído em clientes remotos. Um sistema de ficheiros distribuídos não mantém múltiplas réplicas persistentes de dados nem suporta grandes larguras de banda ou tempos de resposta, requeridos, por exemplo, pelos sistemas de streaming. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 4 / 32 Introdução Os sistemas de ficheiros foram originalmente desenvolvidos, como parte dos sistemas operativos, para sistemas centralizados e desktops. Mais tarde ganharam capacidades adicionais, tais como, controlo de acessos e mecanismos de bloqueamento, que os tornaram úteis para a partilha de dados e programas. Os sistemas de ficheiros distribuídos suportam a partilha de informação no formato de ficheiros e partilha de recursos de hardware no formato de armazenamento persistente. Um sistema de ficheiros distribuído bem desenhado deve fornecer acesso a ficheiros armazenados num qualquer servidor com performance e fiabilidade similar, ou mesmo superior, aos sistemas de ficheiros locais. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 5 / 32 Introdução A concentração dos dados persistentes num ou num cluster de servidores, reduz a necessidade de grandes capacidades de armazenamento local e permite economizar na gestão e arquivamento dos dados persistentes de uma organização. Para além disso, outros serviços, tais como, serviços de nomes, serviços de autenticação de utilizadores ou serviços de impressão, são mais facilmente implementados quando suportados pelo sistema de ficheiros. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 6 / 32 Introdução Sistemas de armazenamento e as suas características Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 7 / 32 Características dos sistemas de ficheiros distribuídos Os sistemas de ficheiros são responsáveis pela organização, armazenamento, aquisição, nomeação, partilha e protecção de ficheiros. Os sistemas de ficheiros fornecem interfaces de programação que caracterização a abstracção do ficheiro, libertando o programador de qualquer preocupação com os detalhes da alocação. Os ficheiros estão armazenados em discos ou noutros sistemas de memória não-volátil. Os ficheiro contêm tanto dados como atributos. Os dados consistem em sequências de items acessíveis pelas operações read e write. Os atributos são mantidos num único componente contendo informação diversa, tal como, o tamanho do ficheiro, timestamps, o tipo de ficheiro, a identidade do owner e a lista de controlo de acesso. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 8 / 32 Características dos sistemas de ficheiros distribuídos Os sistemas de ficheiros são desenhados para armazenar e gerir grande número de ficheiros, com capacidade para criar, nomear e apagar ficheiros. A nomeação de ficheiros é suportada pela criação de directorias. Uma directoria é um ficheiro, tipicamente de um tipo especial, que fornece um mapeamento entre nomes e identificadores de ficheiros internos. As directorias podem conter os nomes de outras directorias, originando não só a familiar hierarquia de ficheiros e esquemas de nomes, como também os caminhos multi-particionados comuns tanto em Unix como noutros sistemas operativos(Ex: /home/rmsilva/Documents ou c: programs sdp ) Os sistemas de ficheiros são ainda responsáveis pelo controlo de acesso, restringindo o acesso a cada ficheiro de acordo com a autorização de cada utilizador e o tipo de acesso requerido (leitura, actualização, execução, etc...) Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 9 / 32 Características dos sistemas de ficheiros distribuídos Operações nos sitemas de ficheiros Estas operações são implementadas pelo Kernel e utilizadas pelos programadores através de livrarias existentes nas diversas linguagens. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 10 / 32 Requisitos dos Sistemas de Ficheiros Distribuídos Inicialmente, a transparência no acesso e a transparência na localização eram os requisitos principais. Actualmente a lista de requisitos é bem mais extensa, incluíndo: Transparência Transparência no acesso - os programas clientes não devem estar cientes da distribuição dos ficheiros. Programas desenhados para trabalhar com ficheiros locais, devem conseguir fazê-lo de igual modo com ficheiros remotos. Transparência na localização - os programas clientes devem ver os sistema de ficheiros de modo uniforme. Os ficheiros ou grupos de ficheiros remotos podem ser re-alocados, mas os clientes devem ver sempre os mesmos caminhos. Transparência na mobilidade - Os ficheiros ou grupos de ficheiros podem ser movidos, automaticamente ou pelos administradores de sistemas, sem necessidade de actualizar as tabelas nos nós clientes. Transparência na performance - os programas cliente devem manter a mesma performance independentemente das variações de carga no serviço. Transparência na escalabilidade - o serviço pode ser expandido de modo a lidar com o aumento dos requisitos. Sistemas Distribuídos Concorrência na actualização dee Paralelos ficheiros Ricardo Mendão Silva (UAL) December 16, 2014 11 / 32 Requisitos dos Sistemas de Ficheiros Distribuídos E ainda: Concorrência na actualização de ficheiros - Mudanças num ficheiro por um cliente não devem afectar acções simultâneas de outros clientes, mesmo que se tratem de actualizações. Replicação de ficheiros - Num serviço de ficheiros com suporte de replicação, um ficheiro pode ser representado por várias réplicas armazenadas em diferentes localizações. Deste modo, torna-se possível balancear a carga, no acesso aos ficheiros, entre diferentes servidores, aumentando a disponibilidade e a performance, e ainda, implementar mecanismos de tolerância a falhas quer na manutenção do serviço quer na segurança dos dados. Heterogeneidade de hardware e sistemas operativos - As interfaces do serviço devem ser definidas de modo a que possam ser implementadas por qualquer cliente e servidor, independentemente do sistema operativo e hardware. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 12 / 32 Requisitos dos Sistemas de Ficheiros Distribuídos E ainda: Tolerância a falhas - mecanismos de tolerância a falhas capazes de garantir as semânticas no máximo um ou pelo menos um devem ser assegurados. Consistência - mecanismos de consistência devem garantir que todos os clientes que simultaneamente consultam um ficheiro, tenham todos a mesma visão. Segurança - virtualmente todos os sistemas de ficheiros fornecem mecanismos de controlo de acessos. Nos sistemas de ficheiros distribuídos existe a necessidade de autenticar devidamente os clientes que requerem acesso e pode existir a necessidade de incluir assinaturas digitais e mesmo encriptação dos dados. Eficiência - Os sistemas de ficheiros distribuídos devem fornecer, pelo menos, os mesmos níveis de serviços e qualidade de serviço, existentes nos sistemas de ficheiros centralizados. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 13 / 32 Arquitectura de um serviço de ficheiros Uma arquitectura que forneça um serviço adequado de acesso a ficheiros deve ser estruturada em três componentes: serviço básico de ficheiros serviço de directorias módulo cliente Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 14 / 32 Arquitectura de um serviço de ficheiros Serviço básico de ficheiros: Este módulo é responsável por todas as operações sobre os conteúdos dos ficheiros. Cada ficheiro é identificado por um Unique file identifiers(UFIDs). O UFID é uma sequência longa de bits, escolhida de modo a que cada ficheiro tenho um id único em todo o sistema distribuído. Quando um serviço básico de ficheiros recebe um pedido para criar um ficheiro, ele gera um novo UFID para o novo ficheiro e devolve-o ao elemento que realizou o pedido. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 15 / 32 Arquitectura de um serviço de ficheiros Serviço de directorias: O serviço de directorias fornece um mapeamento entre os nomes dos ficheiros e os seus UFIDs. Os clientes podem obter o UFID de um ficheiro, citando o seu nome ao serviço de directorias. O serviço de directorias fornece ainda as funções base para gerar directorias, para aicionar novos ficheiros a directorias e para obter UFIDs das directorias. O serviço de directorias é um cliente do serviço básico de ficheiros - os ficheiros directoria estão armazenados em ficheiros do sistema básico de ficheiros. Quando existem esquemas hierárquicos de nomes de ficheiros, como no UNIX, as directorias utilizam ainda referências para outras directorias. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 16 / 32 Arquitectura de um serviço de ficheiros Módulo cliente: O módulo cliente corre em cada computador cliente, integrando e estendendo as operações do serviço básico de ficheiros e do serviço de directorias. O módulo cliente mantem informação sobre a localização na rede do servidor básico de ficheiros e do servidor de directorias. O módulo cliente pode ainda desempenhar um papel fundamental na gestão da performance, implementando uma cache dos blocos de ficheiros recentemente utilizados. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 17 / 32 Arquitectura de um serviço de ficheiros Interface do serviço básico de ficheiros: Esta interface é uma interface RPC utilizada pelos módulos clientes, com as seguintes funções: Read(FileId, i, n) -> Data - Lê a sequência da i até n e devolve em Data Write(FileId,i,Data) - Lê a sequência de Data para o ficheiro FileId a começar em i Create() -> FileId - Cria um novo ficheiro de tamanho 0 e devolve o UFID gerado. Delete(FileId) - Remove o ficheiro do armazenamento. GetAttributes(FileId) -> Attr - Devolve os atributos do ficheiro:permissões, timestamps, etc. SetAttributes(FileId, Attr) - Configura os atributos do ficheiro. Normalmente só o serviço de directorias tem permissões para executar o set. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 18 / 32 Arquitectura de um serviço de ficheiros Interface do serviço de directorias: Esta interface é uma interface RPC utilizada pelos módulos clientes, com as seguintes funções: Lookup(Dir, Name) -> FileId - Localiza o Name na Dir e devolve o UFID. Se o Name não consta na Dir retorna uma excepção. AddName(Dir, Name, FileId) - Se Name não existe em Dir, adiciona Name na Dir e actualiza os seus atributos. Senão retorna uma excepção. UnName(Dir, Name) - Se Name está em Dir, remove Name da Dir. Senão reporta excepção. GetNames(Dir, Pattern)-> NameSeq - Devolve todos os nomes de ficheiros de Dir que correspondem à expressão regular Pattern. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 19 / 32 Arquitectura de um serviço de ficheiros Controlo de Acessos: Num sistema distribuído o controlo de acessos a ficheiros é efectuado no servidor, uma vez que não existe qualquer protecção nas interfaces RPC. A identidade do utilizador tem de ser passada no pedido e o servidor é vulnerável a identidades forjadas. Para além disso, se o resultado de um acesso fica guardado no servidor para acessos futuros, o servidor deixa de ser uma entidade sem estados. Como tal, duas soluções podem ser tomadas: A cada primeiro acesso são verificadas as permissões e para cada UFID são gerados os resultados, que são codificados na resposta ao cliente, para que nos próximos pedidos, este anexe esses resultados. Em todos os acessos, mesmo que repetidos, o servidor verifica as permissões do utilizador. Ambas as soluções permitem implementações de servidores sem estados, apesar da segunda solução ser a mais popular e utilizada no NFS e AFS (apresentados mais à frente). Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 20 / 32 Arquitectura de um serviço de ficheiros Sistema de ficheiros hierárquico: Um sistema hierárquico consiste num número de directorias organizadas em árvore. Cada directoria mantém o nome dos ficheiros e de outras directorias que estão acessíveis a partir desta. Cada ficheiro ou directoria pode ser referenciado utilizando um caminho constituído por múltiplas partes, que representa o caminho pela árvore (Ex: /usr/share/tomcat7/bin) A raiz tem um nome distinto e cada ficheiro ou directoria tem um nome numa directoria. Em UNIX o esquema não é uma árvore restrita, uma vez que um ficheiro pode ter vários nomes e estar em várias localização, através dos links simbólicos (ln -s). Num serviço de directorias hierárquico, cada ficheiro mantem um atributo tipo que distingue entre ficheiro e directoria, de modo a que na construção de um caminho se garanta que só o último elemento é um ficheiro. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 21 / 32 Caso de estudo: Sun Network File System A arquitectura do NFS segue o mesmo modelo apresentado anteriormente. Todas as implementações de NFS suportam o protocolo NFS, ou seja, um conjunto de RPCs que fornecem meios para os clientes efectuarem as operações num armazenamento de ficheiros remoto. O NFS é independente de SO, mas foi originalmente desenvolvido para UNIX. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 22 / 32 Caso de estudo: Sun Network File System O módulo NFS server reside no Kernel de cada computador que funciona como servidor NFS. Pedidos referenciando um ficheiro remoto são traduzidos pelo módulo cliente em operações NFS e depois passados ao servidor NFS. Tanto os módulos cliente como servidor comunicam via RPC, tendo o sistema Sun RPC sido desenvolvido precisamente para NFS. Pode operar tanto em UDP como em TCP. Existe ainda um serviço de mapeamento de porto que permite que um cliente vincule serviços. A interface RPC do servidor NFS é aberta e qualquer cliente pode efectuar pedidos.Se o pedido for válido e incluir credenciais de utilizador válidas, será aceite. A submissão de credenciais de utilizador assinadas pode ser um requisito de segurança, tal como a encriptação dos dados para privacidade e integridade. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 23 / 32 Caso de estudo: Sun Network File System Virtual File System Na figura anterior, vemos claramente que o NFS fornece transparência clara, uma vez que os utilizadores invocam os ficheiros, locais ou remotos, sem distinção. Essa integração é alcançada através do sistema de ficheiros virtual (Virtual File System - VFS). O VFS foi adicionado ao kernel do UNIX para distinguir entre ficheiros locais e remotos e para traduzir os identificadores tanto dos ficheiros independentes de UNIX localizados no NFS e os ficheiros locais (UNIX ou não). Para além disso o VFS mantém referências para os sistemas de ficheiros actualmente disponíveis, sejam locais ou remotos, passando cada pedido para o local apropriado. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 24 / 32 Caso de estudo: Sun Network File System Integração do cliente O módulo do cliente NFS desempenha a mesma função que o módulo descrito na arquitectura anterior, fornecendo uma interface para uso das aplicações locais. No entanto, o cliente NFS emular precisamente a mesma semântica que os sistemas de ficheiros UNIX e está integrado no kernel UNIX. Essa integração no Kernel, em vez de disponibilização via livrarias, permite: que os programas possam aceder aos ficheiros através de chamadas do sistema UNIX, sem recompilações ou re-carregamentos. que um simples módulo cliente suporte todos os processos ao nível do utilizador, com um cache dos blocos mais utilizados partilhada entre todos. que a chave de encriptação utilizada para autenticar o id do utilizador, seja retida no kernel, prevenindo personalizações pelos clientes ao nível do utilizador. O módulo cliente coopera com o VFS em cada máquina cliente, operando como um sistema de ficheiros UNIX convencional. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 25 / 32 Caso de estudo: Sun Network File System Controlo de acessos e autenticação O servidor NFS é um servidor sem estado e, como tal, não mantem nem sessões abertas nem ficheiros alocados a clientes. Assim, o servidor deve verificar a identidade e respectivas permissões dos utilizadores a cada pedido. O protocolo RPC da Sun, obriga a que cada cliente envie informação da autênticação do utilizador (UID e GID) em cada pedido, o que depois é utilizado para verificar as permissões de acesso nos atributos do ficheiro. Este método, permitia que os utilizadores pudessem tomar identidades que não as suas, o que levou à adopção da opção de encriptação com DES. Mais recentemente, a solução de segurança evoluiu para integração de kerberos no NFS, permitindo resolver os problemas de autenticação existentes. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 26 / 32 Caso de estudo: Sun Network File System Interfaces RPC do servidor NFS versão 3 lookup, create, remove, getattr, setattr read, write, rename, link, symlink readlink, mkdir, rmdir, readdir, statfs Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 27 / 32 Caso de estudo: Andrew File System Tal como o NFS, também o AFS fornece transparência no acesso aos ficheiros remotos. O acesso aos ficheiros AFS é efectuado através da via normal do UNIX, existindo compatibilidade com NFS. Ao contrário do NFS o AFS foi desenhado para garantir maior escalabilidade, sendo altamente eficaz em servir um largo número de utilizadores simultaneamente. O ponto estratégico para alcançar tamanha escalabilidade é a realização de caching de todos os ficheiros nos nós clientes. O AFS tem duas características incomuns: Whole-file serving - Todo o conteúdo das directorias e ficheiros é transmitido para os computadores clientes pelos servidores AFS. Whole-file caching - Uma vez que uma cópia de um ficheiro é transmitido a um cliente, esta é mantida em cache no disco local. A cache contem milhares de ficheiros utilizados recentemente, sendo permanente, ou seja, sobrevive a reinicializações da máquina. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 28 / 32 Caso de estudo: Andrew File System O AFS é implementado em dois componentes de software que existem como processos UNIX, nomeadamente o Vice e o Venus Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 29 / 32 Caso de estudo: Dropbox Dropbox é um sistema de ficheiros distribuídos, bastante popular, alojado na cloud - em particular nos servidores da Amazon (Amazon Web Services - AWS), com o serviço S3 - Simple Storage Service combinado com o EC2 - Elastic Cloud Compute. Dropbox utiliza ainda o SQS - Simple Queue Service e o Route 53, o servidor de DNS altamente escalável, ambas as soluções também da Amazon. Para além disso, o Dropbox conta ainda com dois datacenters gigantes localizados em lados opostos do globo. Estes datacenters contêm os metadados de cada ficheiro existente no sistema. Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 30 / 32 Caso de estudo: Dropbox Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 31 / 32 Sistemas de Ficheiros Distribuídos Capítulo 12: George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, "Distributed Systems: Concpets and Design", Fifth Edition, published by Addison Wesley, May 2011 ISBN 0-13-214301-1 [email protected] Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos December 16, 2014 32 / 32
Documentos relacionados
sistemas distribuidos e paralelos
• Os sistemas distribuídos estão ainda mais suscetíveis a falhas que os sistemas centralizados. • Faltas na rede isolam os computadores, o que não impede que eles parem de trabalhar. Os programas q...
Leia mais