1) O documento discute sistemas de arquivos distribuídos, incluindo conceitos, requisitos, serviços básicos e aspectos de implementação como geração de identificadores de arquivos, modos de acesso e semântica de compartilhamento.
2) É descrito o uso de memória cache nos servidores e clientes para melhorar o desempenho, assim como técnicas de consistência de cache.
3) A replicação é abordada como forma de aumentar a confiabilidade e disponibilidade dos dados, discutindo diferentes abord
1. Sistemas
Distribuídos
Parte 08
Sistemas de Arquivos Distribuídos
Conteúdo adaptado a partir do material dos professores Luís Fernando Friedrich
(Universidade Federal de Santa Catarina) e Frederico Madeira (Faculdade Maurício de
Nassau – PE)
2. Sistema de Arquivo
• Parte importante dos sistemas operacionais, pois ele
fornece:
– Visão abstrata dos dados persistentes
– Controle sobre o serviço de nomes
– Acesso à arquivos e sua organização geral.
– 2 –
3. Sistema de Arquivo
• Conceitos
– Arquivo
• Uma sequencia de bytes.
• Um sistema especifico de uma estrutura interna.
• Atributos Tamanho, acesso, datas, dono.
– Diretório (arquivo especial)
• Mapeia os nomes para os identificadores.
• Pode conter subdiretórios (arvore).
– 3 –
4. Sistema de Arquivos Distribuído
• “Permite aos programas armazenarem e
acessarem arquivos remotos exatamente como
se fossem locais, possibilitando que os usuários
acessem arquivos a partir de qualquer
computador em uma rede. O desempenho e a
segurança no acesso aos arquivos armazenados
em um servidor devem ser comparáveis aos
arquivos armazenados em discos locais.”
– [Coulourus, G.; Dollimore, J.; Kindberg, T. Sistemas Distribuídos
Conceitos e Projeto] – Cap 7.
– 4 –
5. SAD - Sistemas de Arquivos
Distribuídos
• Oferecem:
– Acesso remoto aos arquivos armazenados em um servidor
– 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ídos devem prover:
– Confiabilidade
– Redundância
– Disponibilidade
– Escalabilidade
– 5 –
6. Por que adotar SAD?
• Compartilhamento de recursos é sempre um desafio.
– Clientes dispersos
– Ponto de vista centralizado
– Mobilidade e flexibilidade
• SAD oferece um esquema de compartilhamento bem
estruturado.
– Espaço em disco.
– Administração compartilhada.
– Cada maquina não tem que armazenar arquivos que irá
acessar.
– 6 –
7. SAD – O que se busca?
• Tolerância a Falhas
– Se um servidor cair ou ficar fora do ar ou da rede, o sistema de
arquivos não pode perder informações e nem ficar indisponível
total ou parcialmente
• Acesso Concorrente
– Vários usuários podem acessar vários arquivos, ou os mesmos
arquivos, sem sofrer danos, perda de performance ou quaisquer
outras restrições
• Replicação de Arquivos
– Com esta funcionalidade, a confiança e a eficiência do serviço
de arquivos é aumentada significativamente
– 7 –
8. SAD - Requisitos
• Transparência de...
– Acesso: clientes tratam arquivos como locais
– Localização: espaço de nomes uniforme e sem mudança
quando arquivos mudarem
– Concorrência: operações dos clientes não devem interferir
umas com as outras
– Falha: servidores devem operar normalmente na falha dos
clientes, e vice-versa
– Desempenho: não deve variar com a carga
– 8 –
9. SAD - Requisitos
• Usabilidade depende de...
– Heterogeneidade de HW e SW
• Interfaces definidas de forma que possam ser implementadas por
vários HW e SW
– Escalabilidade
• Serviço deve ser extensível para acomodar mudanças de escala do SD
• Se escalabilidade envolver muitos hosts...
– Transparência de replicação
• Arquivos podem estar fisicamente replicados e cliente ignora esse
fato
– Transparência de migração
• Arquivos podem mudar de lugar e isso não deve alterar os clientes
– 9 –
10. SAD - Requisitos
– E ainda...
• Compartilhamento
– Toda operação em um arquivo deve ser visível a todos processos
– Semântica de sessão: nenhuma modificação é visível aos outros
processos até que o arquivo seja fechado.
• Arquivos imutáveis:
– Modificações não são possíveis;
– Simplifica compartilhamento e replicação;
– Modificações ocorrem em diretórios apenas
• Transações:
– Todas as modificações têm a propriedade do tudo-ou-nada
(atomicidade);
– Serialização
– 10 –
11. SAD – Serviços Básicos
• Serviço de Nomes Distribuído
– O serviço de nomes cuida de indicar a localização de um
determinado arquivo dado o seu nome ou caminho.
• Serviço de Arquivos Distribuído
– Responsável por fornecer operações sobre os arquivos que compõe
o sistema.
– Os arquivos podem ser armazenados de diferentes formas,
dependendo do seu tipo e uso.
• Serviço de Diretórios Distribuído
– Responsável por manter a organização dos arquivos armazenados
no sistema.
– Ele fornece uma interface para que os usuários possam arranjar seus
arquivos num formato hierárquico, que é estruturado em
diretórios e subdiretórios. – 11 –
12. SAD – Aspectos de Implementação
• Componentes
– Para preencher os requisitos e
implementar serviços, ajuda
bastante se o SA for
implementado com três
componentes:
• Serviço de arquivo básico
• Serviço de diretório
• Módulo de cliente
– Quem faz o que?
– 12 –
13. SAD – Aspectos de Implementação
• Serviço de arquivos básico
– Implementa operações nos arquivos
– Arquivos são referenciados por seus FIDs (File Ids)
• FIDs devem ser únicos no SD
– Criação de um novo arquivo?
• Gera um FID e devolve ao requisitante
– 13 –
14. SAD – Aspectos de Implementação
• Serviço de Diretorio
– Responsável por converter nomes textuais em FIDs
– Diretório
• Conjunto de FIDs e nomes textuais
– Cliente do serviço de arquivo básico
• Arquivos de diretório são arquivos, e gerenciados pelo
SAB
• Hierarquia de diretórios
– 14 –
15. SAD – Aspectos de Implementação
• Modulo Cliente
– Chamadas de sistema para manipulação de arquivos
• Criar, ler, escrever...
– Armazena localização na redes do serviço de diretório e de
arquivo básico
– Pode gerenciar cache local
– 15 –
16. SAD – Aspectos de Implementação
• Interface do Serviço de Arquivo Basico (SAB)
– Aspectos dessa interface
• Não tem open/close; manipula usando IA (identificador
de arquivo)
• Servidor sem estado (stateless)
– Clientes são responsáveis por saber onde estão
lendo/escrevendo
– No caso de falha, depois do retorno não há
procedimento especial
– 16 –
17. SAD – Aspectos de Implementação
• Apenas relembrando...
– Stateless
• Servidor não guarda informação sobre clientes nem
sobre arquivos (IAs)
– Responsabilidade do cliente em manter o estado
– Stateful
• Mantém informação de qual cliente abriu qual arquivo,
e em que bloco está
• Requisições são atendidas mais rápido, pois não precisa
localizar o IA do arquivo
– 17 –
18. SAD – Aspectos de Implementação
• Geraçao de IAs
– Devem ser gerados de forma única no
espaço/tempo e difícil de forjar
• Arquivo removido, IA descartado
– IA não é endereço
• Não contém informações sobre localização do arquivo
– 18 –
19. SAD – Aspectos de Implementação
• Geraçao de IAs
– Como garantir unicidade e integridade?
• Usar um espaço de números pouco populoso
• Unicidade
– IA = ID do grupo + inteiro (não reutilizável)
• – Integridade
– Acrescentar uma parte aleatória ao inteiro
– Tornar a distribuição de IAs válidos esparsa
– Parte aleatória inacessível aos clientes
– 19 –
20. SAD – Aspectos de Implementação
• Modos de Acesso
– Controle de acesso tem por base o IA
• Uma chave ou “capacidade” (capability)
• Só fornecer IA a quem tem direito de acesso
– E arquivo compartilhado?
• Dono precisa de direitos especiais
– Incorporar seletividade na capacidade do IA
• Incluir campo de permissão no IA proposto
– 20 –
21. SAD – Aspectos de Implementação
• Modos de Acesso
– Bits adicionais indicando permissão
• Leitura
• Escrita/truncamento
• Remover
• Obter/definir permissões
– Na criação, usuário pode tudo
– Durante Lookup (busca), IA retorna apenas com
permissões concedidas ao usuário
– 21 –
22. SAD – Aspectos de Implementação
• Modelos de Arquivos
– Arquivos estruturados e não-estruturados
• Arquivos estruturados (sequência ordenada de
registros) são raramente utilizados, podendo ser
indexado ou não-indexado. A maioria dos SO’s
modernos utilizam arquivos não-estruturados.
– Arquivos modificáveis e não-modificáveis
• O modelo mais usado é o modificável. Alguns sistemas
atuais utilizam o modelo não-modificável que permite
um compartilhamento consistente e assim facilita
caching e replicas.
– 22 –
23. SAD – Aspectos de Implementação
• Semântica de Compartilhamento
– Quando há mais de um processo lendo e/ou
escrevendo em um arquivo
• Controle de concorrência (ok!)
• Semântica de compartilhamento
– Quatro tipos básicos de semântica
• Semântica UNIX
• Semântica de sessão
• Arquivos imutáveis
• Transações
– 23 –
24. SAD – Aspectos de Implementação
• Semântica UNIX
– Um read que segue um write vê o valor escrito
pelo write
• Obrigatoriedade de ordenação total
• Sempre retorna o valor mais atual
– Implementação fácil
• Servidor central que processa requisições na ordem
(lógica)
– 24 –
25. SAD – Aspectos de Implementação
• Semântica de sessão
• – Relaxamento na semântica UNIX
– Mudanças em um arquivo aberto são visíveis apenas
ao processo que modifica o arquivo
– Quando o arquivo é fechado, as mudanças são
visíveis para outros processos. O arquivo fechado é
enviado de volta para o servidor
– Está errado?
• Não
• Amplamente implementado
– 25 –
26. SAD – Aspectos de Implementação
• Semântica de sessão (continuação)
• Servidor centralizado trás problemas de gargalo e ponto
central de falha
• Gargalo pode ser aliviado com uso de caches nos clientes
– Cliente-1 lê o arquivo (coloca no cache) e altera
– Cliente-2 lê o arquivo versão antiga do arquivo
• O que acontece se dois ou mais clientes estão modificando
um mesmo arquivo em suas caches?
– O resultado final depende do último close
– Pode-se usar uma regra arbitrária para decidir
– 26 –
27. SAD – Aspectos de Implementação
• Semântica de arquivos não modificados
• Por que se preocupar?
• Arquivos não podem ser alterados
– Apenas READ e CREATE
• E para alterar um arquivo?
– Nenhum arquivo pode, ser alterado, mas pode-se criar um novo
de forma atômica
– Arquivos são imutáveis, mas diretórios não
• Problema : se dois clientes desejam trocar um arquivo no
mesmo tempo?
– Usa-se o último ou adota-se qualquer regra não determinística
– 27 –
28. SAD – Aspectos de Implementação
• Semântica de transação
• Tratar operações de forma atômica
– Uma transação
– Todas modificações nos arquivos são delimitados por
um Begin e um End transaction
• Dois processos ao mesmo tempo?
– Transações permitem concorrência
– Sistema faz serialização
– 28 –
30. SAD – Uso de Memória Cache
• Na memória do servidor
– Elimina transferência de/para disco em cada acesso
– Unidade de cache: arquivos inteiros; blocos
– Quando a cache está cheia Descartar informação mais antiga
– Transparente para clientes Sem problemas com consistência ante
suas requisições
• Na memória do cliente
– Reduz volume de acesso via rede
– Esquemas:
• Cache direto no processo do usuário
• Cache no núcleo do S.O.
• Cache em um processo separada a nível de usuário
– 30 –
31. SAD – Uso de Memória Cache
• Métodos de consistência de cache
– Write through
• Operação de escrita é propagada instantaneamente
– Delayed write
• Operações de escrita são propagadas em bloco (após tempo x).
• Melhor desempenho, mas risco de ambiguidade na semântica (depende de
timing[x])
– Write on close:
• Semântica de sessão equivalente a sistemas centralizados
– Centralized control
• Semântica UNIX Toda operação pode ser vista instantaneamente
• Performance e escalabilidade comprometidas;
– 31 –
32. SAD - Replicação
• SDs geralmente oferecem alguma forma de
replicação de dados
– Múltiplas cópias do mesmo objeto
• Por que?
– Aumentar confiabilidade - a quebra de um servidor não
implica na perda de dados
– Permitir acesso mesmo na caso de falha mesmo que
um servidor não esteja disponível o acesso continua
– Divisão de carga entre servidores espalhar a carga de
trabalho em vários servidores
• Principal problema: transparência
– 32 –
33. SAD - Replicação
• Replicação explícita
– Programador faz todo o “trabalho
sujo”
– Serviço de diretório pode permitir
múltiplos IAs por arquivo
• Recupera todos no lookup
• Quando for manipular, tenta
sequencialmente um por um
dos IAs, até conseguir
– Funciona, mas é muito trabalhoso,
e nada transparente
– 33 –
34. SAD - Replicação
• Replicação atrasada
– Apenas uma cópia é feita em um
servidor
– O servidor é responsável por...
• Propagar atualizações
• Selecionar outro servidor para
atender, se ele não puder
– 34 –
35. SAD - Replicação
• Replicação em grupos
– Operação de escrita é feita ao
mesmo tempo em todos os nós
• Multicast atômico (tudo-ou-nada)
– Atrasada x grupo
• Um servidor x grupo
• Segundo plano x atômica
– 35 –
37. SAD – Estudo de Caso: NFS
• O sistema NFS (Network File System)
– Desenvolvido inicialmente pela Sun Microsystems, (1985)
– Objetivo:
• Compartilhar arquivos e diretórios entre computadores
conectados em rede, formando assim um diretório
virtual.
• Intuito de permitir a montagem de uma partição que
pertence a uma máquina remota, como se fosse uma
partição local.
– É um método rápido e eficaz de compartilhar arquivos e
espaço em disco entre máquinas distintas em uma rede.
– 37 –
38. SAD – Estudo de Caso: NFS
• Vantagens do NFS:
– Os dados acessados por todos os usuários podem ser
mantidos numa máquina central, com os clientes
montando seus diretórios no momento da inicialização.
• Por exemplo: pode-se manter todas as contas de usuários em uma
única máquina e ter-se todas as máquinas da rede montando os
diretórios pessoais /home a partir daquela máquina (um típico
servidor de arquivos).
• Dados que consomem muito espaço em disco podem ser
mantidos em uma única máquina.
• Dados Administrativos podem ser mantidos em uma única
máquina, não sendo necessário mais utilizar cópias remotas para
instalar o mesmo arquivo em várias máquinas diferentes.
– 38 –
39. SAD – Estudo de Caso: NFS
• A implementação do NFS oferece cinco tipos de
transparência:
– Tipos de sistemas de arquivos
– Localização dos sistemas de arquivos
– Tipo de sistema operacional
– Tipo de máquina (hardware)
– Tipo de rede
– 39 –
40. SAD – Estudo de Caso: NFS
• Montagem de diretórios
– Montagem estática ou dinâmica
• A opção dinâmica introduz alguma tolerância a falha
• Permite várias entradas para mesmo ponto de montagem
– Dois clientes podem montar o mesmo diretório
• Eles podem se comunicar através de arquivos desse diretório
– Simplicidade é o principal atrativo
– 40 –
41. SAD – Estudo de Caso: NFS
• Arquitetura NFS:
– 41 –