28
Sistemas Distribuídos Parte 10 Tolerância a Falhas Conteúdo adaptado a partir dos materiais produzidos pelo seguintes professores: •Edmar Rezende (PUC-Campinas) •Raul Ceretta Nunes (UFSM) •Raimundo Macedo (LASID – UFBA)

SD10 - Tolerância a Falhas.ppt

Embed Size (px)

Citation preview

Page 1: SD10 - Tolerância a Falhas.ppt

Sistemas Distribuídos

Parte 10

Tolerância a FalhasConteúdo adaptado a partir dos materiais produzidos pelo seguintes professores:•Edmar Rezende (PUC-Campinas)•Raul Ceretta Nunes (UFSM)•Raimundo Macedo (LASID – UFBA)

Page 2: SD10 - Tolerância a Falhas.ppt

Introdução• Falhas são inevitáveis

– Apesar de ser importante desenvolver soluções que tentem ao máximo evitar a ocorrência de falhas, é preciso estar ciente de que não 100% de garantia de sucesso

– As consequências da falha podem ser evitadas por meio do uso adequado de técnicas de tolerância a falhas

• Existe um custo associado a qualquer ação visando tolerância a falhas– É preciso avaliar o custo x benefício para determinar a melhor abordagem– Exemplo:

• Backup consome espaço, tempo e exige pessoal treinado• Redundância de equipamentos e espelhamento de discos exige investimentos sem

aumento de desempenho• Terceirização do problema pode encarecer demais a solução

– 2 –

Page 3: SD10 - Tolerância a Falhas.ppt

Introdução• No passado a preocupação em relação a falhas acontecia apenas em

aplicações muito críticas– Aviões, sondas espaciais, controles industriais de tempo real, ...

• Com a popularização da redes...– A dependência tecnológica aumentou– A necessidade de aplicações mais estáveis virou uma exigência comum

• Novos desafios– Falhas afetam a credibilidade das aplicações, produtos e organizações– Falhas causam problemas de segurança, disponibilidade e desempenho

– 3 –

Page 4: SD10 - Tolerância a Falhas.ppt

Introdução• “A força de uma corrente pode ser medida pela resistência de seu elo mais

fraco”– Um único ponto de vulnerabilidade pode comprometer a aplicação como um todo

• O que é Tolerância a Falhas?– É o conjunto de técnicas utilizadas para detectar, mascarar e tolerar falhas no

sistema.

• O que é um Sistema Tolerante a Falhas?– É um sistema que continua provendo corretamente os seus serviços mesmo na

presença de falhas de hardware ou de software.– Defeitos não são visíveis para o usuário, pois o sistema detecta e mascara (ou se

recupera) defeitos antes que eles alcancem os limites do sistema (ponto de fuga da especificação).

– 4 –

Page 5: SD10 - Tolerância a Falhas.ppt

Introdução• Tolerância a falhas tem influência direta em:

– Seleção de tecnologias– Especificação de sistemas– Incorporação de novas funcionalidades em projetos– Estabilidade e confiabilidade de aplicações

• Alguns desafios atuais– Como evitar, detectar e contornar bugs em hardware e software?– Como gerenciar a complexidade dos sistemas (hardware e software)?– Como explorar o paralelismo para melhorar o desempenho sem comprometer

a qualidade dos resultados?– Como absorver novas tecnologias sem comprometer a tolerância a falhas?

– 5 –

Page 6: SD10 - Tolerância a Falhas.ppt

Falha, Erro e Defeito• Falha (fault)

– Causa física ou algorítmica do erro– Um estado não especificado do hardware ou do software

• Erro (error)– Um Erro é a manifestação de uma Falha no sistema– Uma alteração perceptível (e indesejada) no estado lógico do sistema– Um sistema está em erro se o processamento posterior a partir deste estado pode

levar a um defeito• Defeito (failure)

– É um desvio na especificação do sistema– Ocorre no universo do usuário e não pode ser tolerado

• Importante:– Uma falha pode ou não levar a um erro– Um erro pode ou não conduzir a um defeito

– 6 –

Page 7: SD10 - Tolerância a Falhas.ppt

Falha, Erro e Defeito• Exemplos:

– 7 –

Falha Erro Defeito

Exemplo 1 Bit modificado erroneamente

Registro corrompido

Atualização incorreta de

salário

Exemplo 2 Defeito na placa de rede

Os processos hospedados na máquina não

conseguem mais se comunicar com o mundo

exterior

Site fora do ar (serviço

indisponível)

Page 8: SD10 - Tolerância a Falhas.ppt

Falha, Erro e Defeito• Latência de Falha

– Período decorrido entre a ocorrência da falha e a manifestação do erro devido aquela falha

• Latência de erro– Período de tempo desde a ocorrência do erro até a manifestação do defeito

devido aquele erro

• Principais causas de falha:– Problemas de especificação– Problemas de implementação– Imperfeição ou fadiga de componentes– Distúrbios externos (ex.:variações ambientais)– Problemas de operação– Intervenção maliciosa

– 8 –

Page 9: SD10 - Tolerância a Falhas.ppt

Falha, Erro e Defeito• Para definir uma falha, deve-se levar em consideração:

– A natureza da falha• Ambiente (hardware, software, operação, ...)• O projeto (é a melhor ideia?)• A implementação da solução (ex: bugs no código)

– A duração da falha (também chamada de Persistência)• É permanente ou temporária?

– A extensão da falha• Local, regional ou global?

– O valor do impacto que a falha causa (em certo período de tempo)• Determinado ou indeterminado?

• O que pode ser feito para evitá-las ?– Verificação e testes + Tolerância a Falhas

– 9 –

Page 10: SD10 - Tolerância a Falhas.ppt

Dependabilidade• A indústria não aceita bem o termo Tolerância a Falhas, preferindo termos

como “Sistemas redundantes” ou “Alta disponibilidade”– Tentou-se unificar estes termo em um só: “segurança de funcionamento”, mas

isso acabou por confundir-se com aspectos de segurança– Atualmente um termo mas amplo, “dependabilidade” está se tornando

popular

• Dependabilidade (Dependability) – Dependabilidade diz respeito a habilidade para entregar um serviço

comprovadamente confiável, ou seja, habilidade do sistema para evitar defeitos inaceitáveis para seus usuários.

– É a qualidade do serviço oferecido por um dado sistema– É uma propriedade de um sistema computacional, tal como funcionalidade,

usabilidade, desempenho e custo.

– 10 –

Page 11: SD10 - Tolerância a Falhas.ppt

Dependabilidade• Principais medidas de dependabilidade

– Confiabilidade (reliability)• Atender as especificações, dentro de condições definidas, durante certo período

de funcionamento

• Diz respeito a continuidade da entrega de serviço correto• Não é o mesmo que disponibilidade

– Disponibilidade (availability)• Probabilidade do sistema estar operacional num instante de tempo determinado• Diz respeito a média de tempo disponível para acesso• Tolera a alternância de períodos de funcionamento e reparo• Importante:

– Um sistema pode ser altamente disponível mesmo apresentando períodos de inoperância, desde que estes sejam curtos e não comprometam a qualidade de serviço

– 11 –

Page 12: SD10 - Tolerância a Falhas.ppt

Dependabilidade• Principais medidas de dependabilidade (cont.)

– Segurança (safety)• Probabilidade do sistema descontinuar suas funções de forma a não

provocar danos em quem depende dele (pessoas ou outros sistemas)• Objetivo: manter o funcionamento consistente• Diz respeito a garantias de não haver defeitos catastróficos ao usuário ou

ambiente

– Segurança (security)• Visa preservar a privacidade, autenticidade, integridade e irreputabilidade

dos dados• Diz respeito a proteção contra acessos, ou controle, não autorizados ao

estado do sistema

– 12 –

Page 13: SD10 - Tolerância a Falhas.ppt

Dependabilidade• Principais medidas de dependabilidade (cont.)

– Desempenho (performability)• Diz respeito a capacidade do sistema manter ou não seu desempenho diante

de falhas– O que será afetado pela falha? Parte do sistema? Todo?

– Mantenabilidade (maintainability)• Diz respeito a habilidade para reparo e modificações eficientes

– O sistema é facilmente mantido? Como reage diante da necessidade de reparo?

– Testabilidade (testability)• Diz respeito a capacidade de testar certos atributos internos ao sistema ou

facilidade de realizar certos testes• Quanto maior a testabilidade, melhor a mantenabilidade, por conseqüência

menor o tempo de indisponibilidade do sistema devido a reparos.

– 13 –

Page 14: SD10 - Tolerância a Falhas.ppt

Técnicas de Dependabilidade• Como alcançar a dependabilidade pretendida?

– Prevenção de Falhas• Visa prevenir a ocorrência ou introdução de falhas

– Remoção de Falhas• Visa reduzir o número ou a severidade das falhas

– Previsão de Falhas• Visa estimar o número presente, a incidência futura e as consequências das falhas

– Tolerância a Falhas• Visa entregar o serviço correto mesmo na presença de falhas

• Estas técnicas implicam na existência de mecanismos de validação, que são usados para verificar a a existência de falhas, confirmar o sucesso da remoção ou da prevenção e até mesmo acionar as soluções de tolerância

– 14 –

Page 15: SD10 - Tolerância a Falhas.ppt

Técnicas de Dependabilidade• Como alcançar a dependabilidade pretendida? (cont.)

– Prevenção de Falhas• Visa prevenir a ocorrência ou introdução de falhas

– Como?• Aplicação de técnicas de controle de qualidade durante projeto• Controle de informação, versões e modularização• Regras de projeto rigorosas para prevenir falhas operacionais de HW• Definição de procedimentos para manutenção• Testes para prevenir falhas de interação• Firewalls ou similares para prevenir falhas maliciosas

– 15 –

Page 16: SD10 - Tolerância a Falhas.ppt

Técnicas de Dependabilidade• Como alcançar a dependabilidade pretendida? (cont.)

– Remoção de Falhas• Visa reduzir o número ou a severidade das falhas

– Como?• Aplicada em 2 instantes:

– Fase de desenvolvimento» Verificação Estática Verificação de modelos e prova de teoremas» Verificação Dinâmica Injeção de falhas e execução simbólica (teste)» Diagnóstico Determina o impacto das falhas apuradas nas verificações» Correção corrige- se os problemas diagnosticados

– Fase operacional» Manutenção corretiva (diante da ocorrência do erro)» Manutenção preventiva (diante da possibilidade de ocorrência de erro)

– 16 –

Page 17: SD10 - Tolerância a Falhas.ppt

Técnicas de Dependabilidade• Como alcançar a dependabilidade pretendida? (cont.)

– Previsão de Falhas• Visa estimar o número presente, a incidência futura e as conseqüências

das falhas

– Como?• Para estimar o comportamento utiliza dois tipos de avaliações:

– Estimativa Qualitativa» Identifica, classifica e elenca os modos de defeitos

– Estimativa Quantitativa» Faz análise probabilística

• As estimativas ajudam a definir ações que evitem falhas/defeitos

– 17 –

Page 18: SD10 - Tolerância a Falhas.ppt

Técnicas de Dependabilidade• Como alcançar a dependabilidade pretendida? (cont.)

– Tolerância a Falhas• Visa entregar o serviço correto mesmo na presença de falhas

– Como?• Implementada por

– Mascaramento– Detecção de erros seguida de recuperação do sistema

• Classes de detecção de erros:– Concorrente – execução concorrente ao serviço– Preemptiva – execução c/ suspensão do serviço

• Recuperação consiste no reestabelecimento de estado correto• Implica em controle de erros e falhas

– 18 –

Page 19: SD10 - Tolerância a Falhas.ppt

Tolerância a Falhas• Objetivo: garantir o funcionamento correto do sistema mesmo diante da

ocorrência de falha

• Prever problemas e removê-los após sua ocorrência não é suficiente para sistemas que exigem altos níveis de confiabilidade e disponibilidade– A existência destes mecanismos não dispensa técnicas de prevenção e

remoção antecipada

• Fases de aplicação das técnicas de TF:1. Detecção de erros2. Confinamento e avaliação3. Recuperação de erros4. Tratamento da falha

– 19 –

Page 20: SD10 - Tolerância a Falhas.ppt

Fases de Tolerância a Falhas• Fase 1: Detecção de erros

– Objetivo: identificar a ocorrência de falhas por meio de parâmetros de controle

– Mecanismos: limites de tempo, paridade, consistência, diagnósticos– O erro pode não ocorrer, ou seja: podem existir falhas que nunca cheguem a

se tornar um erro reconhecido pelo sistema

• Fase 2: Confinamento e avaliação– Objetivo: isolar o problema e avaliar o impacto da falha– Mecanismos: ações atômicas, encapsulamento de operações, hierarquia de

processos, controle de recursos, regras de permissão explícitas (proíbe o inesperado)

– O confinamento tenta limitar a propagação de dados inválidos pelo sistema (isso ocorre devido à latência de falha)

– 20 –

Page 21: SD10 - Tolerância a Falhas.ppt

Fases de Tolerância a Falhas• Fase 3: Recuperação de erros

– Objetivo: resgatar o controle do fluxo de execução– Mecanismos:

• Recuperação por retorno (volta ao estado anterior) é mais eficiente, mas requer uma implementação específica para cada caso

• Recuperação por avanço (leva a um novo estado consistente) O mecanismo de retorno é uma solução mais genérica, sendo por isso mais adotado

• Fase 4: Tratamento da falha– Objetivo: Resgatar a consistência da aplicação– Mecanismos:

• Diagnóstico (comparação; resultados obtidos X resultados esperados)• Reparo (remoção ou substituição de componentes)

– Tanto o diagnóstico quanto o reparo podem ser conduzidos de forma manual ou automática

– 21 –

Page 22: SD10 - Tolerância a Falhas.ppt

Mascaramento• O mascaramento garante a resposta correta mesmo diante da ocorrência

de falhas, pois a falha não se manifestará como um erro evitando assim a detecção do mesmo– Só é interessante para falhas temporárias– No caso de falhas permanentes ainda são necessários mecanismos de

localização e reparo

– Mecanismos:• Redundância de hardware• Códigos de correção de erros (ECC)• Diversidade ou programação diversitária (n-versões)• Blocos de recuperação

– 22 –

Page 23: SD10 - Tolerância a Falhas.ppt

Redundância• Redundância para aumentar a confiabilidade é algo mais antigo que a

história dos computadores– Serve tanto para detecção quanto para o mascaramento de falhas

• Sempre causa algum impacto no sistema– Custo, desempenho, tamanho, peso, potência consumida, ...

• A adoção de soluções baseadas em redundância é uma opção comum em sistemas tolerantes a falhas e pode ocorrer de diversas formas

• Redundância de Hardware• Redundância de Informação• Redundância de Software• Redundância de Temporal

– 23 –

Page 24: SD10 - Tolerância a Falhas.ppt

Redundância de Hardware• Passiva ou Estática

– Todos os elementos redundantes executam a mesma tarefa– Usada em mascaramento de falhas – Não requer ação do sistema– Não indica a falha

• Ativa ou dinâmica– Para obter redução de custo, baseia- se em detecção/localização, seguida de

remoção e de reconfiguração/recuperação de falhas falha– Não provê mascaramento - trabalha baseada em substituição de módulos– Usada em aplicações de longa vida

• Híbrida– Combina aspectos de redundância ativa e passiva– Usada para garantir mascaramento e longa vida– Geralmente são soluções de alto custo

– 24 –

Page 25: SD10 - Tolerância a Falhas.ppt

Redundância de Software• Replicação de componentes de software idênticos não é suficiente, pois

componentes iguais apresentarão erros iguais• Principais técnicas:

– Verificação de consistência• Usa conhecimento prévio sobre características da informação para verificar se a

informação é correta (ex: validade de endereço)– Verificação de capacidade

• Usa conhecimento prévio sobre características do sistema (ex: memória disponível)

– Programação N-auto-verificável • N versões do programa são escritas e cada uma realiza um teste de aceitação

próprio, permitindo suportar N-1 falhas• Testes de aceitação são testes realizados sobre os resultados produzidos por um

programa e podem ser criados por verificação de consistência ou capacidade

– 25 –

Page 26: SD10 - Tolerância a Falhas.ppt

Redundância de Software• Principais técnicas: (cont.)

– Programação N-versão (ou programação diversitária)• Diversas implementações para o mesmo problema que devem apresentar

os mesmos resultados (exemplo: 2+2=4; 22=4; 2x2=4)• Para N versões são toleradas (n-1)/2 falhas• Todas as versões são executadas sempre, e a resposta do sistema é

determinada por votação– Blocos de recuperação

• Trabalha com várias versões para solucionar um mesmo problema• Existe um único teste posterior de aceitação do resultado fornecido pela

versão primária• As versões secundárias só são acionadas se a versão principal for reprovada

no teste de aceitação• Para N versões são toleradas (N-1) falhas

– 26 –

Page 27: SD10 - Tolerância a Falhas.ppt

Redundância de Informação• Visa detectar erros ou mascarar falhas incluindo bits ou sinais extras à

informação

• A codificação aumenta o número de bits sem com isso aumentar a capacidade para a representação da informação– Com isso a informação armazenada ganha meios de ser verificada e até mesmo

corrigida

• Exemplos:– Paridade– Checksums– Duplicação de código– Códigos cíclicos– Códigos de correcção de erros (CCE)

– 27 –

Page 28: SD10 - Tolerância a Falhas.ppt

Redundância de Temporal• Uma dada função é executada múltiplas vezes, com as mesmas entradas

• Solução usada em sistemas onde o tempo não é crítico

• Evita o custo de hardware adicional aumentando o tempo necessário para realizar o processamento

• Eventuais diferenças nas saídas indicam erros causados por defeitos físicos transientes (ou por ruído).

– Garantindo tempo para as duas execuções da tarefa em todas as respectivas ativações (inclusive no pior caso), pode-se conseguir uma taxa de detecção de erros acima de 99,9%

– 28 –