Você está na página 1de 11

Slide 5

Sistema de Arquivos Distribuído permite aos programas armazenarem e acessarem


arquivos remotos, como se fosse um acesso local.

SAD reduz armazenamento local e permite economias no gerenciamento de dados


Podem ser:
- Stateless:
- Cliente especifica todas as informações a cada acesso
- Benefício de ser mais fácil de implementar
- Statefull:
- Mantém informações como nome do arquivo, ponteiro para o arquivo,
etc
- Benefício de desempenho pois reduz o tamanho da mensagem.

arquivos contém:
- dados: sequência de elementos acessíveis por leitura e escrita
- atributos: infos do arquivo
um diretório também é um arquivo, que mapeia os nomes textuais para identificação
dos arquivos. diretórios podem incluir outros diretórios

SAD características:
- Transparência: usuário enxerga como se fosse um sistema único, ocultando a
loc. física dos arquivos
- Garantia de transparência: sistemas de nomes robusto
- Escalabilidade: Pode-se adicionar novos computadores com facilidade. Se
utilizar um único servidor, gera gargalo.
- Segurança: Permissão de acesso aos arquivos, criptografia, hierarquia de
acesso.

Arquitetura SAD:
- Serviço de Arquivos Plano: foco nas operações sobre o conteúdo do arquivo.
Principais operações são leitura e escrita. Usa UFID(id único do arquivo)
- Serviço de Diretório: Fornece mapeamento entre nomes textuais e seus
UFID.
- Módulo cliente: extende as operações dos dois modos anteriores em uma
interface única a nível de usuário. executa no pc do cliente
- Interface do Serviço de Arquivos Planos: interface usada pelo cliente para
acessar o serviço, fornece funções de leitura, escrita, etc.
- Controle de Acesso: em sistemas de arquivos locais, o arquivo só é aberto se
o usuário tiver os direitos de acesso, obtendo o ID do usuário no login.
- Interface do Serviço de Diretório: oferece serviço para traduzir nomes textuais
para UFIDs, mantendo arquivos de diretórios contendo o mapeamento entre
os nomes e o UFID.
- Sistema de Arquivos Hierárquicos: vários diretórios organizados em árvore,
cada diretório contém os nomes dos outros diretórios que podem ser
acessados a partir dele.

Principais problemas de projeto:


- Uso eficiente de cache no cliente: Obter desempenho igual ou melhor do que
com arquivos locais
- Manutenção da consistência: Várias cópias de arquivos de clientes em
cache.
- Recuperação após falha
- Alto desempenho de leitura e escrita
- Capacidade de mudança de escala
- Tolerância a falhas

compartilhamento de informações -> aspecto mais importante em um SD

Resumo funcionamento de um SAD:

Um sistema de arquivos distribuído (SAD) é um sistema de arquivos que permite o


armazenamento de arquivos em várias máquinas interconectadas em rede. O
objetivo principal é fornecer acesso transparente aos arquivos, independentemente
de sua localização física e do sistema operacional em que estão armazenados.

Os sistemas de arquivos distribuídos são compostos por dois componentes


principais: o cliente e o servidor. O cliente é o software que executa no computador
do usuário e que permite que ele acesse e gerencie os arquivos armazenados no
servidor. O servidor é o software que executa nos servidores de arquivos e gerencia
o armazenamento e o acesso aos arquivos.

Quando um usuário solicita acesso a um arquivo, o cliente envia uma solicitação ao


servidor de arquivos que possui a cópia desse arquivo. Se o arquivo estiver
disponível no servidor, ele é enviado de volta ao cliente. Caso contrário, o servidor
irá procurar o arquivo em outros servidores até encontrá-lo e, em seguida, enviar o
arquivo de volta ao cliente.

Serviço de Nomes: nomes referenciam computadores, arquivos, etc. É fundamental


para SDs pois facilita comunicação e permite compartilhamento de recursos.
Processos não compartilham recursos sem usar nomes. Usuários não se
comunicam sem nomes.
Google File System (GFS): suporta volume alto de dados. Utiliza máquinas de baixo
custo e com alta capacidade de armazenamento. Monitoramento constante para
detectar erros, tolerância a falhas.
Função do GFS: coordenar o cluster e informar ao cliente a localização de um
chunk.
Chunk acessado por mtos clientes o sobrecarregam. Para isso, deve-se aumentar
replicação dos dados.
Arquivos devem ser consistentes.

Aula 6

Sincronização em relação ao tempo: Relógios físicos e lógicos


Sincronização em relação ao compartilhamento de recursos: Exclusão mútua
Sincronização em relação ao coordenador de um grupo de processos:
Algoritmos de eleição de líder.

Em um SD, cada pc tem sua percepção de tempo. NÃO EXISTE RELÓGIO


GLOBAL.

Propriedades de algoritmos distribuídos:


- Informações relevantes são espalhadas pelas múltiplas máquinas.
- Os processos tomam decisões baseadas em informações locais
- Deve-se evitar um ponto de falha
- Não existe relógio global

Clock skew: diferença entre a leitura simultânea de dois relógios

UTC (Universal Coordinated Time): padrão para medição do tempo. PCs recebem
sinal de broadcast e sincronizam seus relógios.

Sincronização externa: se baseia em uma fonte de tempo externa (UTC)


Sincronização interna: mede o intervalo existente entre dois eventos em diferentes
computadores.

Relógios lógicos permitem a sincronização a partir da ordem na qual os eventos


ocorreram, sem se preocupar com o tempo exato.

Algoritmo de Cristian: algoritmo calcula o delay entre os computadores e faz a


alteração gradativa nos relógios
Algoritmo de Berkeley: servidor de tempo coleta os horários dos outros
computadores, estima o horário e envia o ajuste pros outros computadores.
NTP: Serviço para internet. É confiável, seguro e atende um grande número de
clientes.
Aula 7

Coordenação distribuída.
Objetivo: coordenar ações dos processos em relação aos recursos compartilhados.
Devem suportar falhas

Comunicação multicast exige coordenação. Objetivo: cada processo de um grupo


recebe cópias das mensagens enviadas ao grupo

Exclusão mútua: conjunto de processos compartilham um mesmo recurso, deve


utilizar EM para evitar interferências e garantir consistência no acesso a recursos.
Categorias de exclusão mútua:
- Baseada em token
- Processo que possui o token pode acessar o recurso
- Após o acesso, repassa o token
- evita starvation e deadlock
- problema: perda do token
- Baseada em permissão
- processo solicita permissão para os outros processos para acessar
recursos.
Algoritmo centralizado: utiliza um líder. o processo que quer acessar o recurso
compartilhado solicita ao líder. líder vê se tem outro processo acessando o recurso.
se não, libera. se sim, joga o processo na fila.
Problema: líder é o único ponto de falha.

Algoritmo distribuído: Um processo que deseja acessar um recurso monta uma


mensagem com o nome do recurso, seu próprio número de processo e a hora atual.
A mensagem é enviada para todos os outros processos do sistema distribuído.
Quando um processo recebe a mensagem, ele verifica se não está atualmente
acessando o recurso e se não deseja acessá-lo no momento. Se for o caso, o
processo responde com uma mensagem de confirmação. Se o processo já estiver
acessando o recurso ou desejar acessá-lo, ele coloca a requisição em uma fila de
espera. Se outro processo que também deseja acessar o recurso receber a
mensagem, ele compara as marcas de tempo na mensagem recebida com a que
ele próprio enviou. A mensagem com a marca de tempo mais antiga é considerada
vencedora e o processo que enviou a mensagem vencedora é permitido a acessar o
recurso.
Problema: vários pontos de falha

Aula 8

Replicação: várias cópias de dados em vários computadores


vantagem: desempenho, alta disponibilidade e tolerância a falhas
replicação de dados:
- imutáveis: dados estáticos, aumenta desempenho com pouco custo ao
sistema.
- mutáveis: dados dinâmicos, sobrecarrega os protocolos.

Melhoria de desempenho: colocar dados na cache em clientes e servidores.


Dados podem ser replicados de forma transparente.
Maior disponibilidade: usuários exigem que serviços estejam sempre disponíveis
Tolerância a falhas: sistema requer coordenação de seus componentes para
manter garantias de correção diante de falhas, como informações desatualizadas.

Réplicas são objetos físicos armazenados em um único computador. Transparência


de replicação é requisito básico para a replicação, pois clientes não devem saber
que existem várias cópias de dados.

É possível proteger contra a corrupção de dados e permitem que os dados fiquem


mais perto de onde serão acessados.

Consistência: operações executadas sobre um conjunto de objetos replicados


devem produzir resultados que satisfaçam o que foi especificado.

Razões para replicação:


Confiabilidade: garante comportamento correto. Enquanto um servidor pelo menos
funcionar, o serviço continua.
Desempenho: expansão geográfica e em quantidade.

Principal problema: consistência.


obter réplicas atualizadas.
Todas as réplicas tem que chegar em um acordo sobre quando deve realizar
atualização.

Modelos de consistência: especifica precisamente o resultado de operações,


discute o resultado de leituras e escritas.
3 eixos independentes para definir inconsistências:
- desvios numéricos: dados possuem semântica numérica
- desvios de idade: relacionados com a última vez que a réplica foi atualizada
- centrado nos dados: todas as operações conflitantes devem ser efetuadas
na mesma ordem em todo o lado.
- consistência estrita: Qualquer leitura do dado x retorna o valor
correspondente à escrita mais recente em x.
- consistência sequencial: Quando o resultado da execução de todas
as operações for idêntico ao de uma execução sequencial dessas
operações.
- consistência linearizável: Faz a Consistência Sequencial ordenada
pelo relógio físico.
- consistência causal: Se o evento b é causado ou influenciado por um
- evento anterior a, então é necessário que todos vejam primeiro a e,
depois, b.
- consistência FIFO: As operações de escrita feitas por um processo
devem ser vistas na ordem correta por todos os demais.
- centrado no cliente: assegura a ordem das operações para um cliente.
assume que clientes fazem muito mais leituras que escritas;
- consistência eventual: não havendo atualizações frequentes,
réplicas irão convergir.
- consistência monotônica: Escritas em um determinado item são
sempre completadas antes da próxima escrita no mesmo item de
dados;
Protocolos de consistência:
- Modelo centrado nos dados.
- Modelo centrado nos clientes.

- Protocolos baseados em servidor primário: propaga atualizações antes de


responder ao cliente. Resposta do serviço é atrasada. Problema: tempo longo
antes que o processo que iniciou a atualização tenha permissão para
continuar
- Protocolos de escrita replicada: Objetivo: evitar atraso na resposta do serviço.
Operações de escrita podem ser executadas em várias réplicas em vez de
em uma só, como no caso de réplicas baseadas em primários.
Resumo:

Aula 9

Um SD tolerante a falhas deve:


- recuperar-se automaticamente de falhas
- não permitir que falhas afetem o desempenho global
- funcionar de maneira aceitável enquanto se recupera

SD deve ter
- alta disponibilidade: sistema resistente a falhas, mantendo os serviços
disponíveis o máximo de tempo possível.
- alta confiabilidade: propriedade de um sistema poder funcionar
continuamente sem falha;
- segurança: Se um sistema deixar de funcionar corretamente durante um
certo tempo, nada de catastrófico deve acontecer
- capacidade de manutenção: facilidade com que um sistema que falhou possa
ser consertado;

Dependabilidade: Habilidade de um sistema computacional entregar um serviço


comprovadamente confiável;

Tipos de falhas:
- transiente: ocorre uma vez e some. se não repetir a operação, falha não
acontece mais.
- intermitente: ocorre e some “por sua própria vontade”. difícil de diagnosticar
- permanente: continua existindo até que componente falho seja trocado.
Modelos de falhas:
- falha por queda: servidor para de funcionar
- falha por omissão: servidor não consegue responder requests
- falha de temporização: resposta toma timeout
- falha de resposta: resposta do servidor incorreta.
- falha arbitrária: respostas arbitrárias em momentos arbitrários.

Mascaramento de falhas:
- redundância de informação: adiciona bits extras e permite a recuperação
de bits deteriorados.
- redundância de tempo: se ação falhar, pode ser executada de novo
- redundância física: utiliza-se componentes físicos ou processos replicados.

Resiliência de processos:
Objetivo: agrupar processos idênticos e replicá-los em grupos. Proteger SD contra
falhas de processos
Funcionamento: Uma mensagem é enviada a um grupo; Todos os processos a
recebem; Caso um processo do grupo falhe, espera-se que outro assuma a
responsabilidade pela mensagem.

Divididos em dois grupos:


- grupo simples: todos processos são iguais, decisões tomadas coletivamente
- vantagem: mesmo que um falhe continua executando
- desvantagem: difícil de tomar decisão
- grupo hierárquico: existe processo líder que toma as decisões
- vantagem: decisões centralizadas
- desvantagem: único ponto de falha.
Associação a grupos:
- Servidor de grupos: todas as reqs são enviadas a este servidor. se o servidor
cair, o gerenciamento deixa de existir
- gerenciamento distribuído: Se existe confiabilidade, um processo pode enviar
uma mensagem a todos os membros do grupo anunciando que deseja se
juntar ao grupo; Para sair de um grupo, o processo deveria mandar uma
mensagem. No entanto, dificil de prever quedas!

Detecção de falhas:
- Essência: falhas detectadas por timeouts. ausência de resposta indica
possível falha

Lista de exercícios

1) Qual a característica de Sistemas Distribuídos mais evidente no problema


da sincronização?

A inexistência de um relógio global para padronizar a percepção de tempo dos


eventos e medir o tempo de forma precisa.

2) A sincronização por Relógio Físico sempre é exata? Porquê?

Não. Existem várias fontes de imprecisão que podem afetar a precisão de um


relógio físico, incluindo:

1. Variações no tempo de execução dos processos do sistema operacional, que


podem afetar a precisão do relógio interno do sistema.
2. Variações de temperatura, pressão e outras condições ambientais que
podem afetar a precisão do relógio físico.
3. Atrasos de rede e latência, que podem afetar a precisão da sincronização
entre os relógios em diferentes máquinas.
4. Erros de medição e outras imprecisões inerentes ao próprio relógio físico.

3) Em qual situação o Relógio Lógico é indicado?

Quando apenas a ordem em que os eventos ocorreram é importante, mas a


precisão absoluta dos tempos não é crítica.

4) O que é UTC? Onde você já usou?

UTC significa Coordinated Universal Time, que é um padrão de tempo internacional


que é usado como uma referência comum para sincronizar relógios em todo o
mundo. O UTC é amplamente utilizado em todo o mundo, especialmente em
sistemas de computação e telecomunicações que exigem precisão na sincronização
de eventos.

5) Qual é o objetivo da Coordenação Distribuída? Explique sua importância?

Coordenar ações dos processos em relação aos recursos compartilhados e suportar


falhas. É importante pois um processo precisa realizar validações de modo que
possa se prevenir da falha e recuperar dela. Também ajuda a garantir que os
diferentes componentes do sistema funcionem juntos de forma consistente e
confiável.

6) A Exclusão Mútua é aplicada em quais situações? Dê um exemplo.

A exclusão mútua é uma técnica usada em sistemas distribuídos para garantir que
apenas um processo possa acessar um recurso compartilhado de cada vez. Essa
técnica é comumente usada para evitar conflitos e inconsistências ao acessar um
recurso crítico que não pode ser acessado simultaneamente por múltiplos
processos. Exemplo: impressora ou banco

7) Quais as vantagens da replicação? Explique com suas palavras o motivo


dessas vantagens.

1. Melhoria na escalabilidade: A replicação permite distribuir a carga de trabalho


entre diferentes nós da rede, melhorando a escalabilidade do sistema. Isso
significa que um sistema replicado pode lidar com mais solicitações de
usuários ou processar um grande volume de dados.
2. Melhoria na disponibilidade: Com cópias de dados ou serviços em vários nós
da rede, a replicação aumenta a disponibilidade do sistema. Se um nó falhar
ou se tornar indisponível, os usuários ainda podem acessar os dados ou
serviços por meio de outras cópias.
3. Melhoria no desempenho: A replicação permite que os usuários acessem
dados ou serviços mais rapidamente, pois podem acessar a cópia mais
próxima e mais rápida.
4. Maior confiabilidade: Com várias cópias de dados ou serviços, a replicação
torna o sistema mais confiável. Se uma cópia ficar corrompida ou for
comprometida, ainda haverá outras cópias disponíveis.

8) Qual o requisito básico para a replicação de dados?


É a transparência da replicação, que consiste no fato dos clientes não saberem que
existem várias cópias físicas dos dados.

9) Porque a consistência de dados é tão importante? Quais os dois modelos


estudados.

A consistência de dados é extremamente importante porque garante que as


informações armazenadas em um sistema estejam sempre corretas e atualizadas.

centrado nos dados: todas as operações conflitantes devem ser efetuadas na


mesma ordem em todo o lado.
centrado no cliente: assegura a ordem das operações para um cliente. assume que
clientes fazem muito mais leituras que escritas;

10) Qual o requisito básico para a replicação de dados?

É a transparência da replicação, que consiste no fato dos clientes não saberem que
existem várias cópias físicas dos dados.

11) Quais as duas categorias de protocolos de consistência? Indique sua


principal diferença.

- Protocolos baseados em servidor primário: propaga atualizações antes de


responder ao cliente. Resposta do serviço é atrasada. Problema: tempo longo
antes que o processo que iniciou a atualização tenha permissão para
continuar
- Protocolos de escrita replicada: Objetivo: evitar atraso na resposta do serviço.
Operações de escrita podem ser executadas em várias réplicas em vez de
em uma só, como no caso de réplicas baseadas em primários.

12) Explique com suas palavras a característica de Tolerância a Falhas.

É um conjunto de técnicas utilizadas para detectar, mascarar e tolerar falhas, pois o


SD deve continuar funcionando mesmo na presença de falhas em seus
componentes.

13) Existem 3 tipos de Mascaramento de Falhas. Indique quais são e o que


fazem.

- redundância de informação: adiciona bits extras e permite a recuperação de


bits deteriorados.
- redundância de tempo: se ação falhar, pode ser executada de novo
- redundância física: utiliza-se componentes físicos ou processos replicados.
14) Qual o objetivo da Resiliência. Explique seu funcionamento.

Objetivo: agrupar processos idênticos e replicá-los em grupos. Proteger SD contra


falhas de processos

Funcionamento: Uma mensagem é enviada a um grupo; Todos os processos a


recebem; Caso um processo do grupo falhe, espera-se que outro assuma a
responsabilidade pela mensagem.

15) O que significa Dependabilidade? Qual o seu objetivo?

Habilidade de um sistema computacional entregar um serviço comprovadamente


confiável. Objetivo: evitar defeitos inaceitáveis para usuários.

Você também pode gostar