20
Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Embed Size (px)

Citation preview

Page 1: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Equipe:André MonteiroDiego AmaranteRafael CaldasSandrini Andrade

Page 2: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

O sistema de arquivos é uma parte importantíssima dos sistemas operacionais, pois ele fornece uma visão abstrata dos dados persistentes (também chamado de armazenamento secundário), além de ser responsável pelo serviço de nomes, acesso à arquivos e de sua organização geral.

Um Sistema de Arquivos Distribuído (SAD ) tem o objetivo de fornecer os mesmos serviços e recursos de um sistema de arquivos convencional, pelo menos na visão dos clientes que o acessa, com a diferença que o SAD pode ser acessado de qualquer máquina dentro de uma rede (acesso remoto).

Page 3: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Alguns SADs implementam certas transparências para os usuários, que não precisam saber que estão lidando com um sistema de arquivos de um determinado tipo ou natureza. Essas transparências, junto com uma pequena descrição, são:

Nome: O nome do recurso a ser utilizado (como um arquivo) não deve indicar ou conter indícios de onde está localizado.

Localização: O usuário não precisa fornecer a localização física do recurso (no caso um arquivo) para encontrá-lo.

Acesso: O usuário não perceberá se o arquivo que está sendo usado é local ou remoto. Essa é a filosofia usada no sistema de arquivos virtual (VFS) do Linux.

Replicação: Os arquivos do SAD podem ter cópias armazenadas em locais diferentes. O usuário não deve perceber que existem várias cópias do mesmo arquivo. Para ele só será apresentada uma, e quem a escolherá é o SAD.

Page 4: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Concorrência ou Paralelismo: Vários usuários podem acessar o mesmo arquivo ao mesmo tempo, mas isso não deve afetar esses usuários nem outros.

Falha: O SAD deve garantir que o acesso aos arquivos seja ininterrupto e sem falhas, sem que o usuário saiba como isso é tratado.

Page 5: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

CODA (Constant Data Availability) é um sistema de arquivos experimental desenvolvido

pelo grupo do Prof. Satyanarayanan na Carnegie Mellon University nos anos 90, com base no AFS-2.

É um Sistema de Arquivos Distribuídos descendente do AFS. Seu principal objetivo é fornecer acesso a sistemas de arquivo distribuídos para computadores portáteis. Ele implementa alguns mecanismos de replicação não presentes no AFS

Foi o 1º sistema a definir e implementar o modo de operação desconectado.

Page 6: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

O AFS-2 trouxe o conceito de callback, que permite ao cliente abrir e fechar um arquivo várias vezes sem precisar acessar o servidor. Quando um cliente receber um arquivo do servidor, ele também recebe um callback, que é uma promessa de que ele está com a versão mais recente do arquivo. Um callback pode ser quebrado ou quando um cliente atualiza um arquivo, ou quando o servidor recebe uma nova versão do arquivo de um outro cliente. A cópia local pode ser utilizada quantas vezes se quiser, contanto que o cliente possua um callback válido.

O AFS suporta um esquema de replicação simples, que pode ser usado para realizar um backup automático dos arquivos dos usuários e para replicação de diretórios read-only.

Atualmente há mais de 100 células AFS por todo o mundo dando a seus usuários a possibilidade de compartilhar seus arquivos através de diferentes continentes usando uma interface de sistema de arquivos parecida com a do UNIX.

Page 7: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Operação desconectada para dispositivos móveis;

Cache persistente no cliente, aumentando a performance;

Replicação de servidores; Autenticação, criptografia e controle de

acesso; Operação não é interrompida em falhas

parciais da rede; Adaptação a banda de rede disponível; Boa escalabilidade; Semânticas de compartilhamento bem

definidas.

Page 8: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Oferecer aos usuários (em UM ou na rede) acesso contínuo a arquivos & diretórios UNIX mesmo em caso de falhas de servidores, partições na rede ou desconexões das UMs ▶ sistema de arquivos com alta disponibilidade;

Tornar mobilidade transparente para a camada de aplicação

Usa a mesma API UNIX para acesso a arquivos, Variações na conectividade (p.ex. desconexões)

são tratadas de forma transparente;

Page 9: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Na rede, servidores CODA armazenam volumes (subdiretórios UNIX).

Cada volume é replicado em um conjunto de servidores (pelo menos 2) denominado Volume Server Group – VSG.

As réplicas no VSG são mantidas sincronizadas. Para cada cliente, existe um subconjunto de VSGs

chamado AVSG (acessível) com réplicas dos volumes daquele usuário.

Cada atualização é propagada para todos os AVSGs e posteriormente para todos os VSGs (antes de qq outro acesso) assim garante-se réplicas consistentes.

Usa-se um RPC com multicast, multiRPC, que garante que os multicasts são tratados em ordem total.

Funcionamento de MultiRPC: encaminhamento para um S e AVSG, que executa um atomic multicast com os demais servidores em AVGS.

Page 10: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Qualquer servidor pode sair e posteriormente se re-integrar ao grupo, e quando isto ocorre, nenhuma ação imediata é tomada.

Através do multiRPC o cliente pode detectar diferenças entre os volumes nos servidores e AVSG e executar um multiRPC para sincronizar o arquivo/diretório.

A replicação de volumes aumenta a disponibilidade de dados para os clientes.

Clientes executam um Gerente de Cache (Venus), que mantém no cache arquivos e diretórios freqüentemente acessados no disco local da UM.

Page 11: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Venus (um client-side proxy) é responsável por lidar com

as conseqüências de mobilidade e desconexões, e opera em 3 possíveis estados:

hoarding (normal);

desconectado (emulando);

re-integração;

Page 12: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Terminou a UM sincronização UM se reconectou se

desconectou sem diferenças

UM se reconectou com diferenças

Re-Integração Desconectado

Hoarding

Page 13: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

É o estado normal, no qual a UM do cliente está conectada com arede (os servidores do AVSG).Neste estado Venus, mantém-se preparada para uma desconexão

súbita:

Trata de manter em cache todos os arquivos/diretórios potencialmente

necessários ou em uso por cada um dos processos. A escolha dos arquivos é feita em um esquema de prioridades mistoque combina:

Informações implícitas: derivadas do histórico de acessos recentes,

Informações explícitas: fornecidas pelo usuário (hoarding dadabase).

Periodicamente, Venus re-avalia quais objetos merecem permanecerno cache (hoard walking).A consistência entre a cópia em cache e no AVSG é sinalizada atravésde callback: quando arquivo original é modificado servidor, este enviaaos clientes notificações de “quebra de callback”

Page 14: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

No estado desconectado, Venus assume o papel de um servidor AVSG operando somente sobre os arquivos em cache.

No entanto, todas as operações são tentativas e deverão ser posteriormente confirmadas (após a reconexão).

“Cache misses” geram excessões para programas de aplicação;

Devido à abordagem otimista, cliente desconectado pode fazer as mesmas atualizações do que um cliente conectado;

Todas as atualizações são registradas em um log (CML), que éimplementado usando um mecanismo de transações; A fim de limitar/reduzir o tamanho do log, antes de adicionar

uma entrada ao log, verifica-se se esta não anula uma entrada anterior;

No entanto, quando o CML ficar cheio, Venus suspende qualquer nova alteração.

Page 15: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Após a reconexão com o AVSG, Venus: Propaga todas as atualizações no CML para todos os

AVSGs. Atualiza o cache com a nova versão dos

arquivos/diretórios. A propagação ocorre em 2 etapas:1) Venus requisita fileIDs definitivos para os fileIDs locaisde arquivos eventualmente criados, e faz a substituiçãodestes no CML log;2) envio do log CML em paralelo para todos os servidoresAVSG, que executam o log como uma transação atômica(se uma atualização falha, toda transação dereintegração é cancelada).

Page 16: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Fases do processamento do log CML: Todos os arquivos referenciados no log são

bloqueados; Valida-se cada operação no log (existe espaço em

disco?, não há violação de acesso?, operação causaria perda de consistência do sistema de arquivos?);

O conteúdo dos arquivos referenciados no log é copiado para os servidores;

todos os bloqueios são liberados. Se reintegração falha, é gerado um novo log

indicando os problemas da reintegração. CODA disponibiliza ferramentas para analisar este

log, comparar o conteúdo dos arquivos e diretórios no AVSG e no cache e editar o log CML a fim de remover operações que tenham causado conflito;

Depois, o usuário pode tentar novamente a reintegração com o logmodificado.

Page 17: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

CODA oferece flexibilidade para a resolução de conflitos: Conflito em Diretórios: conflito somente se:

Novo nome de arquivo é igual a um nome existente; Se um objeto foi modificado e ao mesmo tempo removido; Atributos de um objeto tenham sido modificados no servidor

e no cache (exemplo: rwx bits). Conflito em Arquivos: quando Venus detecta divergências

em um arquivo, procura um programa (Application Specific Resolver -ASR) para este arquivo.

Se existe, invoca o programa que: modifica a cópia do arquivo local (cache) e copia a versão

modificada de para o servidor (enquanto isto, arquivo fica bloqueado).

Se não existir um ASR para um arquivo, usuário tem que fazer manualmente as mudanças.

Page 18: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Em 1993, estudo envolvendo aprox. 25 usuários em 1 semana.

Resultados: Disco local de 100 Mbytes mostrou-se suficiente para

cache+log para operação desconectada por 1 semana. (reintegração diária);

Tempo gasto para reintegração após 1 dia desconectado = 5 min;

99% das modificações em arquivos UNIX são feitos pelo mesmo usuário da modificação anterior;

Poucos conflitos do tipo write-write ► baixo grau de compartilhamento

Replicação do UNIX FileSys em 4 servidores: Desempenho do Andrew Benchmark apenas 5% pior do que sem replicação;

CODA apresentou fraca escalabilidade (nº de usuários concorrentes);

Page 19: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

O desenvolvimento nessa área continua intenso e aumentando significativamente. Agora que os clusters de PCs estão se tornando mais comuns, a necessidade de sistemas de arquivos que se utilizam desses recursos vem crescendo, assim como o estudo para aumentar a velocidade desses sistemas, já que a velocidade do tráfego de dados entre as aplicações e o armazenamento secundário não costuma acompanhar o aumento da velocidade dos processadores e memória. Em geral existem sistemas de arquivos distribuídos para todos os tipos de aplicações e problemas que se quer resolver. Alguns são mais tradicionais, por isso ganham mais respeito e são mais largamente utilizados, outros mais inovadores e criados para resolver problemas específicos, o que os torna menos populares, porém não deixam de ganhar crédito. Além disso, é necessário também analisar o custo de cada solução a se adotar, pois alguns deles necessitam de hardware especial.

Page 20: Equipe: André Monteiro Diego Amarante Rafael Caldas Sandrini Andrade

Não existe um sistema de arquivos completo que se adéqua a qualquer aplicação. Para decidir qual SAD utilizar, o melhor é se informar, entre os candidatos, quais mais se adéquam ao ambiente do problema, além de saber quais os prós e contras de cada candidato, e para quais plataformas ele funciona bem. Depois de escolhido os finalistas, um bom benchmark (ato de executar um programa de computador, um conjunto de programas ou outras operações, a fim de avaliar a performance relativa de um objeto, normalmente executando uma série de testes padrões e ensaios nele) poderá mostrar em que situações esses SADs funcionaram bem. A partir daí é verificar quais as probabilidades das situações analisadas ocorrerem e decidir qual o SAD que tem mais chance de resolver o problema.