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

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