2. Conteúdo
Falhas
tipos
tempo médio até falhar
em processadores
Uso de redundância
tipos
replicação ativa
replicação primary backup
Consenso na presença de falhas
2
3. Falhas
Um sistema falha quando não funciona de acordo com sua
especificação.
Falhas típicas:
hardware: processador, memória, dispositivo de E/S,
cabo, ...
software: erros de programação, erros de operação,
situações não previstas, ...
Objetivo de tolerância a falhas: garantir que um sistema
continue a funcionar corretamente na presença de defeitos.
Tolerância a falhas é necessária principalmente em
aplicações que requerem alta disponibilidade.
3
4. Tipos de falhas
Falha transiente: ocorre apenas uma vez; se a
operação é repetida, a falha desaparece. Exemplo:
falha numa transmissão usando micro-ondas
porque algum objeto obstrui temporariamente.
Falha intermitente: ocorre de maneira aleatória
e imprevisível. Exemplo: um conector com mau
contato.
Falha permanente: ocorre sempre até que o
componente seja substituído. Exemplo: um chip
queimado, erros em software.
4
5. Tempo médio até falhar
Exemplo:
Um componente tem uma probabilidade p de falhar em
um segundo.
A probabilidade desse componente não falhar em k
segundos consecutivos é
O tempo estimado até esse componente falhe (mean
time to failure) é
Assim, se p = 0.001 então MTF = 1000 segundos.
5
6. Falhas em processadores
Tipos:
Fail-silent fault (ou Fail-stop fault): um
processador com falha pára e não responde a
subsequentes requisições ou produz qualquer
resultado.
Byzantine fault: um processador com falha
continua a operar, emitindo resultados errados,
possivelmente em acordo com outros
processadores com falha, causando a impressão
de que estão todos funcionando normalmente.
6
7. Uso de redundância
Tipos de redundância:
Redundância de informação: bits extras são
adicionados para se recuperar de bits errados.
Redundância de tempo: uma ação é executada
e, se necessário, é executada novamente. (Útil
para falhas transientes e intermitentes.)
Redundância física: equipamento extra é
adicionado para que o sistema como um todo
tolere a falha de um ou outro componente.
Exemplo: múltiplos processadores. 7
8. Uso de replicação ativa
Todos os processadores são usados o tempo todo como
servidores (em paralelo) a fim de ocultar falhas
completamente.
TMR: Triple Modular Redundancy
Sistema tolerante a falhas no nível k: satisfaz sua
especificação mesmo se até k componenetes falharem
simultaneamente:
fail-silent fault: requer k+1 componenetes
byzantine fault: requer 2k+1 componentes
Requisito: todas as requisições chegam nos servidores
numa mesma ordem (atomic broadcast problem).
8
9. Uso de primary backup
Apenas um processador (primary) é o servidor a cada
instante. Se este falhar, um outro processador (backup) é
ativado para operar em seu lugar.
A substituição de um processador por outro não deve ser
notada pelas aplicações; somente o sistema operacional do
cliente deve notar.
Vantagens:
Mais simples: mensagens do cliente vão para apenas
um servidor (não é necessário ordenar mensagens).
Na prática, requer menos máquinas.
Desvantagem: não funciona se para Byzantine faults.
9
10. Consenso na presença de falhas
Exemplos: eleição de um coordenador, decisão quanto a
fazer ou não commit de uma transação, divisão de tarefas.
Primeiro caso: processadores confiáveis, mas possíveis
falhas de comunicação. Exemplo: two-army problem.
Consenso é impossível sem comunicação confiável!
Segundo caso: comunicação confiável, mas possíveis
falhas de processadores. Exemplo: Byzantine generals
problem.
Consenso é possível quando há m processadores confiáveis
somente se houver 2m+1 processadores confiáveis.
10