sd10 - tolerância a falhas.ppt
TRANSCRIPT
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)
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 –
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 –
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 –
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 –
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 –
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)
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –