Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tolerancia a Falhas
Prof Lahoz
Apoio: Prof. André Y. Kusumoto
Profa Ana Paula Couto (DCC/UFJF) http://www.fisiocomp.ufjf.br/anapaula/
SD/cursoSD.html
Tolerância à Falhas
• Um objetivo importante de um projeto de SD é construir de tal modo que
ele possa se recuperar automaticamente de falhas parciais sem afetar
seriamente o desempenho global.
Disponibilidade
• Propriedade de um sistema estar pronto para ser usado
imediatamente. Um sistema de alta disponibilidade é aquele que
mais provavelmente estará funcionando em dado instante de
tempo.
Tolerância à Falhas
Conceitos Básicos
Confiabilidade
• Propriedade de um sistema poder funcionar continuamente sem
falha. Um sistema de alta confiabilidade é aquele que mais
provavelmente continuará a funcionar sem interrupção durante um
período de tempo relativamente longo.
• Um sistema que fica fora do ar por um milissegundo a cada hora –
alta disponibilidade (99,9999%), porém baixa confiabilidade.
• Um sistema que nunca cai, mas é desligado por duas semanas,
todo mês de agosto – alta confiabilidade, porém baixa
disponibilidade (96%).
Tolerância a Falha
Conceitos Básicos
Segurança
• Refere-se à situação em que, se um sistema deixar de funcionar
corretamente durante um certo tempo, nada de catastrófico
acontecerá.
• Capacidade do sistema continuar funcionando mesmo na presença
de perigos (naturais do ambiente ou devido a intervenção humana.
• Sistemas de controle de usinas de energia nuclear devem ter alto
grau de segurança. Se falharem temporariamente, mesmo que por
apenas um breve instante, os efeitos podem ser desastrosos.
Tolerância a Falha
Conceitos Básicos
Capacidade de Manutenção
• Facilidade com que um sistema que falhou pode ser consertado e
mantido.
• Arquitetura e Modularização.
• Documentação.
• Bug de software.
• Falha aleatóra de hardware.
• Problema de memória.
• Omissão ou comissão na transferência de dados.
Terminologia: erro
ERRO (error): é um problema desenho (design) ou desvio de um
estado pretendido ou desejado.
FALHA (failure)
Taxa de falhas: Indicador mais comum de confiabilidade. Número de
vezes em que uma falha é esperada acontecer num dado período.
Taxa de falha de 1 x 10 -4 por hora de vôo (esperada a ocorrência de
uma falha a cada 10.000 horas). Uma falha de um dispositivo fisico
pode ser causado por dois tipos de falhas:
desvio de projeto: o projeto ou a construção não satisfez os
requisitos.
desvio de operação: a operação não seguiu o projeto original
(disturbios ambientais, procedimentos, desgaste, degradação).
Terminologia: exemplo
Pense num jogador de futebol, o Ronaldo fenomeno, por exemplo, a
especificação deste jogador é fazer gol, portanto, se ele deixa de
fazer o gol ele falha na sua especificação.
ACIDENTE (accident):
Evento indesejado ou não planejado (não necessariamente
inesperado) que resulta em (no minimo) um nivel de perda
especifico.
INCIDENTE (incident):
Evento que não envolve perda (perda menor ou quase perda), mas
com um potencial para uma perda em diferentes circunstancias.
PERIGO (hazard):
Estado ou conjunto de condições de um sistema (ou objeto) que,
junto com outras condições do ambiente deste sistema leve
inevitavelmente a um acidente (evento de perda).
PERIGO (hazard):
(1) Severidade
(2) Probabilidade de ocorrencia
Terminologia: Perigo
RISCO (risk):
Ex.:
• SO pára e é necessário reinicializá-lo.
• Curiosidade: falha tão frequente em computadores, que o botão de reset
foi transferido da parte traseira da máquina para dianteira do gabinete.
Classificação da Falha
• Modelo de classificação de falhas de Cristian (1991) & Hadzilacos e
Toueg (1993)
Ex.:
• Fornecer dados muito cedo pode facilmente causar problemas para um
receptor se não houver espaço no buffer suficiente para conter todos os
dados que chegam.
• Servidor responde tarde demais – falha de “desempenho”.
Classificação da Falha
• Modelo de classificação de falhas de Cristian (1991) & Hadzilacos e
Toueg (1993)
Ex.:
• Servidor recebe uma msg que não pode reconhecer, acontece uma falha
de transição de estado, se não for tomada nenhuma providência para
manipular tal mensagem
• Servidor faltoso pode executar incorretamente ações que nunca deveria
ter iniciado.
Classificação da Falha
• Modelo de classificação de falhas de Cristian (1991) & Hadzilacos e
Toueg (1993)
Ex.:
• Servidor produzindo saidas que nunca deveria ter produzido, mas que
não podem ser detectadas como incorretas.
• Servidor faltoso trabalahndo maliciosamente em conjunto com outros
servidores para produzir respostas erradas intencionalmente.
Classificação da Falha
• Modelo de classificação de falhas de Cristian (1991) & Hadzilacos e
Toueg (1993)
Mascaramento de Falha por Redundância
• O melhor que se pode fazer é tentar ocultar de outros processos a
ocorrência de falhas.
• A técnica fundamental para mascarar falhas é usar redundância.
Técnicas de Redundância:
• Redundância de informação
• Redundância de Tempo
• Redundância de Software
• Redundância de Hardware
Mascaramento de Falha por Redundância
Redundância de informação
• São adicionados bits extras para permitir recuperação de bits
deteriorados.
Exs.:
• Paridade
• Checksums
• Duplicação de código
• Códigos cíclicos
• Códigos de correção de erros
Mascaramento de Falha por Redundância
Redundância de informação
Paridade: adicionar bit(s) para manter a palavra de código com um número
par ou ímpar de 1s.
Principal uso: detecção de erros no armazenamento de memória.
Abordagens:
• Paridade por palavra
• Paridade por byte
• Paridade por chip
• Paridade por múltiplos chips
• Paridade entrelaçada
• Paridade transpassada (overlapping)
Mascaramento de Falha por Redundância
Redundância de informação
Paridade por palavra
• Permite apenas detecção de erros simples
• Não permite detecção de muitos erros múltiplos
• Forma um código separável
Mascaramento de Falha por Redundância
Redundância de informação
Paridade transpassada
• Cada bit aparece em mais de um grupo de paridade
• Erros podem ser detectados, localizados e corrigidos por
complementação simples, se desejado
• Conceito básico dos código de correção de erros de Hamming
Mascaramento de Falha por Redundância
Redundância de informação
Checksums
Adiciona informação a um bloco de informação para possibilitar detecção de
erros. Tipos:
• Precisão simples
• Precisão dupla
• Honeywell
• Checksum residual
Mascaramento de Falha por Redundância
Redundância de informação
Checksum Precisão simples
• Realiza somatório do código e ignora bits que extrapolam tamanho da
palavra (n).
• Usa módulo n.
Exemplos:
• Verificação de excesso do limite (magnitude do valor ou intervalo da
medida)
• Verificação de endereço é válido
• Verificação de códigos de instrução
• Verificação de derivações excessivas em relação ao previsto (padrão de
comportamento pré-estabelecido)
Mascaramento de Falha por Redundância
Redundância de software
Verificação de capacidade
• Usa conhecimento prévio sobre características do sistema
Exemplo:
• Verificação se há memória suficiente
• Verificação se todos processadores estão funcionando/acessíveis
• Se unidades funcionais estão funcionando
Mascaramento de Falha por Redundância
Redundância de software
Programação N-versão
Criada para tolerar falhas de projeto.
Conceito básico: projetar e codificar o software N vezes e votar o resultado.
Cada módulo deve ser desenvolvido por equipe independente.
A técnica pode tolerar (N- 1)/2 falhas.
Dificuldades:
• Desenvolvedores costumam ter as mesmas práticas de programação,
não garantindo a independência das versões
• Como especificação é a mesma, a técnica não tolera erros na
especificação.
Mascaramento de Falha por Redundância
Redundância de software
Blocos de Recuperação
• Análoga a redundância de HW ativa (cold standby sparing).
• N versões, mas com um único teste de aceitação.
• Uma versão é a primária e outras são secundárias.
• Assumindo cobertura perfeita e falhas independentes, a técnica suporta
N-1 falhas.
Mascaramento de Falha por Redundância
Redundância física
• São adicionados equipamentos ou processos extras para que o sistema
tolere a perda ou o mau funcionamento de alguns componentes.
Ex:
• Servidores, RAID.
• Processos adicionais podem ser adicionados ao supervisor de modo que
tolere perdas de partes.
Mascaramento de Falha por Redundância
Redundância física
Passiva ou estática: visa mascaramento de falhas usando módulos
adicionais.
• Recuperação
Como o sistema se recupera de uma falha
Resiliência de Processo
Projeto: Grupos de Processos
Exemplo
• Um processo pode enviar uma mensagem a um grupo de servidores sem
precisar saber quem eles são ou quantos existem.
Como o sistema se recupera de uma falha
Resiliência de Processo
Projeto: Grupos Simples versus Grupos Hierárquicos
Grupo Simples
• Todos os processos são iguais.
• Ninguém manda e as decisões são tomadas coletivamente.
• Vantagens
• Simétrico – processos iguais.
• Não tem ponto de falha único.
• Mesmo que um processo caia, o grupo continua a oferecer o serviço.
• Desvantagem
• Tomada de decisão pode ser complicada – muitas vezes é preciso
realizar uma votação, o que gera um atraso.
Como o sistema se recupera de uma falha
Resiliência de Processo
Projeto: Grupos Simples versus Grupos Hierárquicos
Grupo Hierárquicos
• Um processo é o coordenador e os demais são operários.
• A requisição sempre é enviada ao coordenador.
• O coordenador decide.
• Vantagens
• O coordenador toma as decisões sozinho, sem a necessidade de
consultar os outros processos.
• Desvantagem
• Existe um ponto de falha único.
• Caso o coordenador falhe, um novo coordenador deverá ser eleito.
Como o sistema se recupera de uma falha
Resiliência de Processo
Projeto: Grupos Simples versus Grupos Hierárquicos
Como o sistema se recupera de uma falha
Resiliência de Processo
Mascaramento de falha e replicação
Classes de erros:
(1) Cliente não consegue localizar o servidor.
(2) Mensagens de requisição do cliente para o servidor perdidas.
(3) Queda do servidor após receber uma requisição.
(4) Mensagens de resposta do servidor para o cliente se perde.
(5) Queda do cliente após enviar uma requisição.
Como o sistema se recupera de uma falha
Comunicação Confiável Cliente-Servidor
Semantica RPC na presença de falhas: (1) Cliente não consegue localizar
o servidor.
Possíveis problemas:
(1) Servidores podem ter caído
(2) Cliente pode ter sido compilado usando uma versão de apêndice antiga
Sequências:
(a) requisição chega, é executada, sua resposta enviada – normal.
(b) requisição chega, é excutada e o servidor cai antes de enviar resposta.
(c) requisição chega, mas o servidor cai antes de poder executar a
requisição.
Como o sistema se recupera de uma falha
Comunicação Confiável Cliente-Servidor
Semantica RPC na presença de falhas (3) Queda do servidor após receber
uma requisição.
Problema: cliente não sabe com certeza por que não houve resposta.
Requisição ou resposta que se perdeu ou servidor está lento?
Processos não falham e não se juntam ao grupo nem saem dele enquanto a
comunicação está em curso
Multicast confiável
Toda mensagem deve ser entregue a cada membro do grupo no momento
em questão
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast confiável
Cenário (1) Processos estáo funcionando corretamente e o grupo é estático.
Suposições
(1) Caso em que um único remetente queira enviar uma mensagem multicast
a vários receptores. E.x: Algoritmo de Berkeley para sincronizar os relógios.
(4) Ao reconhecer que está faltando uma mensagem, receptor envia o pedido
da mensagem perdida, usando multicast, ao resto do grupo.
(5) Utilizar realimentação multicast permite que um outro membro do grupo
suprima seu reconhecimento (realimentação).
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast confiável
Cenário (1) Processos estáo funcionando corretamente e o grupo é estático.
Solução 3: Realimentação não hierárquico
Aprimoramento:
Permitir que um receptor tenha o papel de transmitir uma mensagem m,
mesmo antes de a requisição de retransmissão chegar ao remetente original.
Problemas
- Garantir que somente uma requisição de retransmissão chegue ao
remetente S → temporizadores?
- Interrupção dos processos os quais a msg já foi entregue → separar os
processos que não receberam m em um grupo separado (Kasera et al,1997)
→ gerenciamento dos grupos
- Reunir os processos em grupos que tendem a perder mensagens (Lui et al,
1998)
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast confiável
Cenário (1) Processos estáo funcionando corretamente e o grupo é estático.
Solução 4: Controle de realimentação hierárquico
- Único remetente.
- Grupo é dividido em sub-grupos, organizados em árvore.
- Cada sub-grupo possui um coordenador que gerencia os pedidos de
retransmissão.
- O coordenador possui um buffer para armazenar as msgs para atender
pedidos dos membros do seu sub-grupo.
Multicast atômico garante que processos não faltosos mantenham uma visão
consistente do banco de dados e força a reconciliação quando uma réplica se
recupera e se junta ao grupo novamente.
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast Atômico – Sincronia Virtual
Como implementar?
Sistema distribuído possui uma camada de comunicação , que gerencia o
recebimento das mensagens em um buffer local, até que possa ser entregue
à aplicação.
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast Atômico – Sincronia Virtual
Musticast confiável pressupõe que uma mensagem será entregue a todos os
processos de um grupo ou a nenhum deles.
Exemplo:
Banco de Dados replicado construído com um grupo de processos para os
quais as mensagens podem ser enviadas de modo confiável.
Operações de atualização são enviadas em multicast para todas as réplicas,
e na sequencia, executadas no local.
Se uma réplica cai durante a comunicação, a atualização esta perdida para
esta réplica.
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast Atômico – Sincronia Virtual
Musticast confiável pressupõe que uma mensagem será entregue a todos os
processos de um grupo ou a nenhum deles.
Exemplo:
As outras replicas podem entrar em um acordo para a realização da
atualização, e a réplica em falta não fará mais parte do grupo de processos.
Como implementar?
• Uma mensagem m está associada com uma lista de processos aos quais
deve ser entregue
• Lista de entrega corresponde a uma visão do grupo
• Todos os processos possuem a mesma visão, concordando que m deve ser
entregue a cada um deles e a nenhum outro processo
Como o sistema se recupera de uma falha
Comunicação Confiável de Grupo
Multicast Atômico – Sincronia Virtual
Musticast confiável pressupõe que uma mensagem será entregue a todos os
processos de um grupo ou a nenhum deles.
(a) Armazenamento
estável
(b) Crash do disco
antes da atualização
no disco 2 (spare)
(c) Soma de verificação
de um bloco errada no
disco 2
Quando dados são escritos no armazenamento estavel, e então lidos novamente para
verificar se foram escritos corretamente, a probabilidade de eles serem perdidos em seguida
é extremamente pequena.
Como o sistema se recupera de uma falha
Recuperação
Registro de mensagens
Descobrir uma linha de recuperação requer que cada processo seja revertido
a seu estado salvo mais recente.
Ao mesmo tempo, mensagens que estão saindo são enfileiradas no local até
a mensagem CHECKPOINT_DONE ser recebida.
Como o sistema se recupera de uma falha
Recuperação
Resumo
Vários tipos:
Falha por queda, por omissão, temporização, falha de resposta,
arbitrárias
Como o sistema se recupera de uma falha
Recuperação
Resumo
Redundância é a técnica fundamental necessária para conseguir tolerância a
falha.