• Nenhum resultado encontrado

Sistemas Distribuídos e Paralelos

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Distribuídos e Paralelos"

Copied!
32
0
0

Texto

(1)

Sistemas Distribuídos e Paralelos

Sistemas de Ficheiros Distribuídos

Ricardo Mendão Silva

Universidade Autónoma de Lisboa

r.m.silva@ieee.org

December 16, 2014

(2)

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

(3)

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.

(4)

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

(5)

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.

(6)

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.

(7)

Introdução

Sistemas de armazenamento e as suas características

(8)

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.

(9)

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...)

(10)

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.

(11)

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.

Concorrência na actualização de ficheiros Replicação de ficheiros

Heterogeneidade de hardware e sistemas operativos Tolerância a falhas

Consistência Segurança Eficiência

(12)

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.

(13)

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.

(14)

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

(15)

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.

(16)

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.

(17)

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.

(18)

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.

(19)

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.

(20)

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).

(21)

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.

(22)

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.

(23)

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.

(24)

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.

(25)

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.

(26)

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.

(27)

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

(28)

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.

(29)

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

(30)

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.

(31)

Caso de estudo: Dropbox

(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

Referências

Documentos relacionados

Tabela 6: Situação dos estudantes do curso de Física Diurno após o término do período letivo 2019/2 Taxa de Eficiência Conclusão (acima do tempo padrão) Conclusão (Total)

O mapa da Figura 4 representa a localização das plataformas logísticas multimodais, por tipologia, em Portugal continental3. Sines (Polos A e B) Tunes Elvas/Caia Poceirão

• Evitar a perda de umidade e a desidratação da superfície durante a secagem após a aplicação do revestimento. A busca de sistemas de aplicação de revestimento mais viáveis,

A direção de prova estará a cargo de José Guedes. Este Troféu de karting será disputado de acordo com o presente Regulamento particular, o qual todos os concorrentes, pelo

Sistemas Distribuídos Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte – Campus Currais Novos.. Tecnologia em Sistemas para Internet

“Você sabe que existe um sistema distribuído quando a falha de um. computador que você nunca

Os (3) três últimos candidatos somente poderão retirar-se da sala de prova simultaneamente e devem fazê-lo após a assinatura da ata de sala. As saídas para: banheiro, tomar

e) Oportunidades de mercado: a exigência de certificação da madeira para atingir o mercado internacional de forma efetiva, faz com que as empresas que praticam