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