next up previous contents
Next: Fases na Tolerância a Up: Alta Disponibilidade Previous: Balanceamento de Carga   Sumário

Avarias, Erros e Falhas

Até agora foi visto que um sistema de alta disponibilidade quer mascarar falhas para o usuário final. Entretanto, o termo falha foi usado muito vagamente, e nesta seção será feita sua devida explicação. Uma avaria (failure) do sistema ocorre quando seu comportamento desvia do que designado por suas especificações. Ou seja, o sistema está avariado quando ele não pode prover o serviço desejado. Um erro (error) é esta parte do estado do sistema que está suscetível a levar a avarias subseqüentes. Se há um erro no estado do sistema, então existe uma sequência de ações que podem ser executadas e que levarão a avarias no sistema, a não ser que medidas de correção sejam tomadas. A causa de um erro é uma falha (fault). Como erro é uma propriedade do estado do sistema, ele pode ser observado e avaliado. Já uma avaria não é um propriedade do sistema, e não pode ser facilmente observada. Assim, a ocorrência de uma avaria é deduzida detectando-se a ocorrência de algum erro no sistema. Como tipicamente não é viável avaliar todo o estado do sistema para determinar a ocorrência de erros, deve-se escolher cuidadosamente qual parte do estado será avaliado, a fim de se detectar a maioria das avarias. Diz-se que um sistema não está se comportando corretamente devido à presença de uma fallha. Falhas são associadas com a noção de defeitos: um sistema defeituoso é aquele que contém falhas. Define-se assim falha como sendo os defeitos que possuem o potencial de gerar erros. Apesar de uma falha ter o potencial de gerar erros, ela pode não gerar erro algum durante o período de sua observação. Por exemplo, se uma célula de memória retorna sempre o valor 0 independetemente do que é armazenado nela, então ela contém uma falha. Entretanto, esta falha pode não se manifestar até que a célula defeituosa seja usada e o valor 1 seja armazenado nela. De acordo com sua duração e momento de ocorrência, as falhas podem ser classificadas como transientes ou permanentes:
Falhas transientes são aquelas de duração limitada, causadas por mal funcionamento temporário ou por alguma interferência externa. Tais falhas podem ser também intermitentes, ocorrendo repetidamente por curtos intervalos de tempo.
Falhas permanentes são aquelas que uma vez que o componente falha, ele nunca volta a funcionar corretamente. Muitas técnicas de tolerância a falhas assumem que os componentes falham permanentemente.
Ainda, em um sistema distribuído, é possível classificar as falhas de acordo com o comportamento do componente defeituoso:
Falhas de Travamento (Crash Faults). São aquelas falhas que causam o travamento ou a perda do estado interno do componente defeituoso. Com este tipo de falha, um componente nunca se submete a alguma transição incorreta de estado quando falha.
Falhas de Omissão (Omission Faults). São aquelas que fazem com que um componente não responda a algumas requisições.
Falhas de Timing (Timing Faults). São aquelas que fazem com que um componente responda ou muito cedo ou muito tarde. Também são chamadas de falhas de performance.
Falhas Bizantinas (Byzantine Faults). São aquelas falhas que fazem com que o componente se comporte de uma maneira totalmente arbitrária.
A figura 3.4 exibe graficamente esta classificação das falhas.

Figura: Classificação das Falhas.
\includegraphics{fault_classification.eps}


next up previous contents
Next: Fases na Tolerância a Up: Alta Disponibilidade Previous: Balanceamento de Carga   Sumário
Nelio Pereira 2002-07-10