Tolerancia a fallos

Introducción a la tolerancia a fallos #

Las fallas parciales son una característica de los sistemas distribuidos.

¿Como diseñar los sistemas distribuidos para que se recuperen de este tipo de fallas?

Idealmente automáticamente y sin degradar la performance.

Tolerancia a fallas #

Relacionado con el concepto de dependable systems

Algunos terminos:

Disponibilidad #

Es la probabilidad que el sistema este funcionando en cualquier momento.

Confiabilidad #

La probabilidad que el sistema ejecute continuamente sin fallos.

Seguridad #

No ocurre una catástrofe cuando eventualmente ocurre una falla.

Mantenibilidad #

Qué tan fácil es reparar el sistema ante una falla.

Métricas #

MTTF: Mean Time To Failure.

MTTR: Mean Time To Repair.

MTBF: Mean Time Between Failures ($MTTF + MTTR$)

Avería (fail) #

Cuando el sistema no cumple con sus especificaciones.

Error #

La parte del estado de un sistema que puede producir una falla.

Falla (Fault) #

La causa de un error.

Un sistema tolerante a fallos es aquel que puede proveer sus servicios aún ante la existencia de fallas.

Las fallas se pueden clasificar en:

  • Transitorias: ocurren una única vez.
  • Intermitentes: se repiten frecuentemente.
  • Permanentes: presente hasta que el componente afectado es reparado/reemplazado.

Modos de falla #

Clasificación:

  • Falla de detención (crash failure)

  • Falla de omisión

    • Recepción
    • Envío
  • Falla temporal

  • Falla de respuesta

    • Valor
    • Transición de estado.
  • Fallas arbitrarias

    • Omisión
    • Comisión

Sincrónico / Asicrónico #

Los modelos anteriores suponene que un proceso $P$ puede detectar que $Q$ se detuvo.

¿Cómo es posible esto?

Hay que diferenciar tipos de sistemas:

  • Asincrónico: no se puede suponer nada acerca de los tiempos de ejecución o de transferencia de mensajes.
  • Sincrónico: los tiempos de ejecución y de transmisión estan acotados.

Ninguno es un modelo realista.

En la práctica se asumen sistemas parcialmente sincrónicos:

  • La mayor parte del tiempo se comportan como sistemas sincrónicos.
  • El comportamiento asincrónico es la excepción.
  • Se pueden uilizar timeouts, con el riesgo de tener falsos positivos.

En este contexto, las fallas de detención se pueden subclasificar:

  • Fail-stop: fallas de detención que pueden ser detectadas con seguridad.
  • Fail-noisy: similar, pero un proceso eventualmente detecta la falla.
  • Fail-silent: no se puede distinguir fallas de detención de fallas de omisión.
  • Fail-safe: fallas arbitrarias benignas.
  • Fail-arbitrary: no observables y dañinas, la peor combinación.

Enmascaramiento de fallas #

La mejor manera de tolerar una falla es ocultarla mediante redundancia.

Tipos de redundancia:

  • Información
  • Temporal
  • Física

Un ejemplo es la redundancia modular triple.