x
1

Diseño de tolerancia a fallos



La tolerancia a fallos es la propiedad que le permite a un sistema seguir funcionando correctamente en caso de fallo de uno o varios de sus componentes. Si disminuye su calidad de funcionamiento, la disminución es proporcional a la gravedad de la avería, en comparación con un sistema diseñado ingenuamente de forma que hasta un pequeño fallo puede causar el colapso total del sistema. Tolerancia a fallos es particularmente buscado en sistemas de alta disponibilidad.

Un diseño tolerante a fallos es un sistema que está capacitado para continuar su funcionamiento cuando algún componente del sistema falla.,[1]​ posiblemente a un nivel más reducido, lo que es mejor a que el sistema falle completamente. El término es comúnmente usado para describir sistemas basados en computadoras diseñados para continuar en mayor o menor medida las operaciones que realiza con, a lo mejor, una reducción de su rendimiento o un incremento de los tiempos de respuesta en las componentes que fallan. Esto significa que el sistema, dada una falla de software o de hardware no se detiene. Un ejemplo en otra rama es el de un automóvil diseñado para continuar su funcionamiento si uno de sus neumáticos recibe un pinchazo.

Tolerancia a fallos no es sólo una propiedad de cada una de las máquinas, sino que también puede caracterizar las reglas según las cuales interactúan. Por ejemplo, el protocolo TCP está diseñado para permitir una comunicación fiable de dos sentidos en una red de conmutación de paquetes, incluso en la presencia de enlaces de comunicaciones que son imperfectos o sobrecargados. Esto es así debido a que en los extremos de la comunicación se puede esperar pérdida de paquetes, la duplicación, la reordenación y la corrupción, a fin de que estas condiciones no dañen la integridad de los datos, y sólo reduzcan la capacidad de una cantidad proporcional.

La recuperación de errores en sistemas tolerantes de fallos puede caracterizarse como avanzar o retroceso. Cuando el sistema detecta que se ha cometido un error, la recuperación "avanzar" toma el estado del sistema en ese momento y lo corrige, para poder avanzar. La recuperación "retroceso" recupera el estado del sistema a algunos de los primeros y la versión correcta, por ejemplo mediante los puntos de recuperación, y se mueve hacia adelante. La recuperación en retroceso requiere que las operaciones entre el puesto de control y los errores detectados pueda ser inalterable. Algunos sistemas hacen uso de ambos tipos de recuperación de errores para diferentes partes de un mismo error.

En el ámbito de un sistema individual, la tolerancia a fallos se puede lograr, anticipando las condiciones excepcionales y creando el sistema para hacer frente a la situación, y, en general, con el fin de auto-estabilizar para que el sistema converge hacia un estado libre de error. Sin embargo, si las consecuencias de una falla en el sistema son catastróficas, o el costo de hacer que sea suficientemente fiable es muy alta, la mejor solución puede ser la de utilizar algún tipo de duplicación. En cualquier caso, si la consecuencia de una falla en el sistema es tan catastrófico, el sistema debe ser capaz de utilizar reversión para volver a un modo seguro. Esto es similar a la recuperación en retroceso, pero puede ser una acción humana si los seres humanos están presentes en el ciclo.

Si cada uno de los componentes, a su vez, puede seguir funcionando cuando uno de sus subcomponentes falla, esto permitirá que el sistema siga funcionando. Utilizando un vehículo de pasajeros como por ejemplo, un coche puede tener neumáticos "llanos", cada uno de los cuales contiene un sólido núcleo de caucho, lo que permite que puedan utilizarse incluso si un neumático se pincha. Un neumático llano pinchado puede ser utilizado por una cantidad tiempo limitado a una velocidad reducida.

Redundancia es la prestación de funciones que sería innecesaria en un ambiente libre de fallos.[2]​ Esto puede ser un componente de copia de seguridad que automáticamente es desechado en caso de fallo de algún componente. Por ejemplo, grandes camiones de carga pueden perder un neumático sin mayores consecuencias. Ellos tienen muchos neumáticos, y ninguno de los neumáticos es crítico (con la excepción de los neumáticos delanteros, que se usan para dirigir). La idea de incorporar redundancia con el fin de mejorar la fiabilidad de un sistema fue introducida por John von Neumann en la década de 1950.[3]

Dos tipos posibles de redundancia son:[4]​ redundancia de espacio y redundancia de tiempo. La redundancia espacial proporciona componentes adicionales, funciones o elementos de datos que no son necesarios para operaciones libres de fallos. La redundancia espacial se clasifica en hardware, software y redundancia de información, según el tipo de recursos redundantes añadidos al sistema. A la hora de replicar, el cálculo o transmisión de datos se repite y el resultado se compara con una copia almacenada del resultado anterior.

Proveer un diseño tolerante de fallos para cada componente no siempre tiene que ser una opción. La redundancia lleva asociada una serie de penalizaciones: aumento de peso, tamaño, consumo de energía, el costo, así como tiempo para diseñar, verificar, y probar. Por lo tanto, un número de opciones tienen que ser examinadas para determinar qué componentes deben ser tolerante de fallos:[5]

Un ejemplo de un componente que pasa todas las pruebas del coche es un sistema de sujeción de pasajeros. Mientras que, normalmente, no se cree en el principal sistema de sujeción de pasajeros, la gravedad. En caso de que el vehículo se vuelque o que sufra graves fuerzas g, este método principal de retención de pasajeros puede fallar. Retener a los pasajeros durante un accidente de este tipo es absolutamente crítico para su seguridad, de modo que esta componente pasa la primera prueba. Los accidentes que provocan expulsión de los pasajeros eran bastante habituales antes de los cinturones de seguridad, por lo que pasa la segunda prueba también. El costo de un método de inmovilización redundante como cinturones de seguridad es bastante baja, tanto desde el punto de vista económico como en términos de peso y espacio, por lo que pasa la tercera prueba. Por tanto, agregar cinturones de seguridad para todos los vehículos es una excelente idea. Otros "sistemas de sujeción suplementarios", tales como las bolsas de aire, son más caros y pasan las pruebas por un margen menor.

Las características básicas de la tolerancia a fallos:

Por otra parte, los sistemas tolerantes de fallos se caracterizan en términos de interrupciones del servicio y en interrupciones de servicio no planificadas. Estos generalmente se miden en el nivel de las aplicaciones y no sólo a nivel de hardware. La figura de mérito se denomina disponibilidad y se expresa como un porcentaje. Por ejemplo, un sistema cinco nueve proporcionaría estadísticamente un 99,999 % de disponibilidad.

Los sistemas tolerantes de fallos se basan, generalmente, en el concepto de redundancia.

La tolerancia a fallos se trata, fundamentalmente, mediante las siguientes tres vías:

Todas las implementaciones de RAID, matriz redundante de discos independientes, excepto RAID 0, son ejemplos de un dispositivo de almacenamiento de dato tolerante de fallos que utiliza redundancia de datos.

Una máquina tolerante de fallos rígida utiliza elementos replicados funcionando en paralelo. En cualquier momento, todas las repeticiones de cada elemento deben estar en el mismo estado. Las mismas entradas son proporcionadas a cada réplica, esperando siempre los mismos resultados esperados. Las salidas de las replicaciones se comparan utilizando un circuito electoral. Una máquina con dos repeticiones de cada elemento se denomina Redundancia Modular Dual (RMD). La votación del circuito sólo puede detectar una discrepancia y la recuperación depende de otros métodos. Una máquina con tres repeticiones de cada elemento se denomina Redundancia Modular Triple (RMT). El resultado de la votación del circuito puede determinar cual replicación está en estado de error cuando se observa una votación dos-a-uno. En este caso, el resultado de la votación del circuito puede dar como resultado el resultado correcto y rechazar la versión errónea. Después de esto, el estado interno de la duplicación errónea se supone que es diferente de la de los otros dos, y el resultado de la votación del circuito puede cambiar a un modo defectuoso. Este modelo se puede aplicar a cualquier mayor número de replicaciones.

Las máquinas tolerantes de fallos rígidas son más fácil de hacer totalmente sincrónicas, con cada una de las puertas de cada una de las replicaciones de la misma transición de estado en el mismo borde del reloj, y los relojes de las réplicas están exactamente en fase. Sin embargo, es posible construir sistemas que prediquen sin este requisito.

La repetición en sincronía requiere hacer sus estados guardados internos el mismo. Que se puede iniciar desde un estado inicial fijo, como el estado reset. Por otra parte, el estado interno de una réplica se puede copiar a otra réplica.

Una variante de RMD es par y de repuesto. Dos elementos replicados funcionan de forma síncrona a la par, con una votación del circuito que detecta la falta de correspondencia entre sus operaciones y emite una señal que indica que hay un error. Otra pareja funciona exactamente de la misma manera. Un circuito final selecciona la salida de la pareja que no se proclame que es un error. Par de repuesto requiere cuatro réplicas en lugar de los tres de RMT, pero se ha utilizado comercialmente.

Las ventajas de los diseños orientados a fallos son evidentes, mientras que muchos de sus inconvenientes no:

El hardware con tolerancia a fallos requiere a veces que las piezas rotas pueden ser extraídas y reemplazadas por nuevas piezas mientras el sistema sigue funcionando (en informática conocido como sustitución en caliente). Un sistema de este tipo con una sola copia de seguridad se conoce como único punto tolerante y representa la gran mayoría de sistemas tolerantes de fallos. En este tipo de sistemas el tiempo medio entre fallos debe ser lo suficientemente largo como para que los operadores puedan arreglar los dispositivos rotos (tiempo medio de reparación) antes de que la copia de seguridad también falle. Se recomienda que el tiempo entre fallos sea lo más largo posible, pero no es estrictamente necesario en un sistema tolerante de fallos.

La tolerancia a fallos funciona muy bien en las aplicaciones informáticas. La primera computadora con tolerancia a fallos fue SAPO en la República Checa. La empresa Tandem Computers ha basado todo su negocio en este tipo de equipos, que utilizan un único punto de tolerancia para crear sus sistemas NonStop, cuyos periodos de funcionamiento pueden medirse en años.

Los programas informáticos también pueden utilizar arquitecturas libres de fallos, por ejemplo en la replicación de procesos.

Los formatos de datos también pueden ser diseñados para degradarse correctamente. El lenguaje HTML por ejemplo, está diseñado para ser compatible, lo cual permite a los navegadores Web ignorar las nuevas entidades html que no entienden sin provocar que el documento sea inutilizable.

Hay una diferencia entre tolerancia a fallos y sistemas que rara vez tienen problemas. Por ejemplo, los sistemas Western Electric crossbar tenían tasas de fallos de dos horas por cuarenta años y, por lo tanto, eran altamente resistente a fallos. Pero cuando el fallo se produjo, los sistemas dejaron de funcionar por completo, y por lo tanto, no eran tolerantes de fallos.



Escribe un comentario o lo que quieras sobre Diseño de tolerancia a fallos (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!