Sd08 (si) sistemas de arquivos distribuídos

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

description

 

Transcript of Sd08 (si) sistemas de arquivos distribuídos

Page 1: Sd08 (si)   sistemas de arquivos distribuídos

Sistemas Distribuídos

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)

Page 2: Sd08 (si)   sistemas de arquivos distribuídos

Sistema de ArquivoSistema 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 –

Page 3: Sd08 (si)   sistemas de arquivos distribuídos

Sistema de ArquivoSistema 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 –

Page 4: Sd08 (si)   sistemas de arquivos distribuídos

Sistema de Arquivos DistribuídoSistema 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 –

Page 5: Sd08 (si)   sistemas de arquivos distribuídos

SAD - Sistemas de Arquivos DistribuídosSAD - 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 –

Page 6: Sd08 (si)   sistemas de arquivos distribuídos

Por que adotar SAD?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 –

Page 7: Sd08 (si)   sistemas de arquivos distribuídos

SAD – O que se busca?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 –

Page 8: Sd08 (si)   sistemas de arquivos distribuídos

SAD - RequisitosSAD - 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 –

Page 9: Sd08 (si)   sistemas de arquivos distribuídos

SAD - RequisitosSAD - 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 –

Page 10: Sd08 (si)   sistemas de arquivos distribuídos

SAD - RequisitosSAD - 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 –

Page 11: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Serviços BásicosSAD – 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 –

Page 12: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 13: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 14: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 15: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 16: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 17: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 18: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 19: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 20: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 21: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 22: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 23: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 24: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 25: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 26: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 27: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 28: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – 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 –

Page 29: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Aspectos de ImplementaçãoSAD – Aspectos de Implementação

– 29 –

Page 30: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Uso de Memória CacheSAD – 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 –

Page 31: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Uso de Memória CacheSAD – 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 –

Page 32: Sd08 (si)   sistemas de arquivos distribuídos

SAD - ReplicaçãoSAD - 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 –

Page 33: Sd08 (si)   sistemas de arquivos distribuídos

SAD - ReplicaçãoSAD - 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 –

Page 34: Sd08 (si)   sistemas de arquivos distribuídos

SAD - ReplicaçãoSAD - 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 –

Page 35: Sd08 (si)   sistemas de arquivos distribuídos

SAD - ReplicaçãoSAD - 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 –

Page 36: Sd08 (si)   sistemas de arquivos distribuídos

SAD – ExemplosSAD – Exemplos

• NFS• GFS(Global FileSystem)• PVFS (parallel virutal file system)• AFS (Andrew FileSystem)• GMAILFS• DFS• CODA (Constant Data Availability)

– 36 –

Page 37: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Estudo de Caso: NFSSAD – 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 –

Page 38: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Estudo de Caso: NFSSAD – 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 –

Page 39: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Estudo de Caso: NFSSAD – 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 –

Page 40: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Estudo de Caso: NFSSAD – 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 –

Page 41: Sd08 (si)   sistemas de arquivos distribuídos

SAD – Estudo de Caso: NFSSAD – Estudo de Caso: NFS

• Arquitetura NFS:

– 41 –