Tolerancia a fallas Definiciones, conceptos y estrategias para la tolerancia a fallas
Integrantes:
Sistemas Concurrentes y Distribuidos Sección: D03
Carlos Andrés Fernández Jalomo José Luis Cortés Gutiérrez Josue Pasillas Medina Julio César Beas López Alejandro Coronado Rizo
¿Qué es la tolerancia a fallas? Concepto y aspectos de un sistema tolerante a fallas
La tolerancia a fallos es garantizar que el sistema continúe funcionando de manera correcta como un todo, incluso cuando ocurra algún fallo. Se dice que un sistema falla cuando no cumple su especificación. Como las computadoras y los sistemas distribuidos se utilizan cada vez más en misiones donde la seguridad es crítica, la necesidad de soportar las fallas cada vez es mayor.
Un sistema consiste de un conjunto de componentes de hardware y software diseñados para proveer un servicio en específico. -Un defecto de un sistema ocurre cuando el sistema no desempeñan estos servicios de manera especificada. Un estado erróneo en un sistema es un estado en el cual podría conducir a un fallo en el sistema. -Un fallo es una condición física anormal, las causas de un fallo incluyen: errores de diseño (como errores en la especificación del sistema o en la implementación), problemas de fabricación, deterioro por el uso u otros problemas externos (como condiciones ambientales adversas,interferencia electromagnética, entradas imprevistas o el mal uso del sistema). -Un error es una parte del estado del sistema la cual difiere de los valores esperados.
Criterios Proveer un diseño tolerante a fallas 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 a fallos: ● ● ●
¿Que tan importante es el componente? ¿Cuál es la probabilidad de que esta componente falle? ¿Cuál es el costo para hacer el componente tolerante a fallos?
Requisitos Las características básicas de la tolerancia a fallos: 1.
Ni un solo punto de falla - Si un sistema experimenta un fracaso, debe continuar funcionando sin interrumpirse durante el proceso de reparación
2. Aislamiento de fallos en el componente que está fallando, cuando se produce un error, el sistema debe ser capaz de aislar la falla a la reincidencia. Esto requiere la adición de mecanismos de detección de fracaso dedicados que existen solamente para el propósito del aislamiento de falla. 3.
4.
La contención de fallas para evitar propagación de la falla - algunos mecanismos de falla pueden causar fallos en el sistema mediante la propagación del fallo al resto del sistema. Disponibilidad de modos de reversión.
Tipos de fallos Definición de fallos, clasificaciones y ejemplos
Los fallos ocurren Un Sistema Operativo Distribuido debería funcionar para una docena o millares de equipos, y siempre garantizar el funcionamiento del sistema, pero debido a problemas de comunicación, fallos en la información, o cualquier otra situación, se puede producir un fallo que bloquee a todo el sistema, idílicamente esto no debería suceder, pero siempre hay que saber qué tipo de fallos pueden suceder en nuestro SOD y en qué consisten estos
Categorías de fallos Ocurren cuando los elementos básicos del SO fallan, el sistema es detenido porque es necesario, y necesita volver a un estado de “correcto”
Los resultados obtenidos de procesos son incorrectos y causan un desvío de funciones
Son desperfectos causados por errores de diseño, fabricación, programación o deterioro de un componente físico del sistema
Tipos de fallos: Sistema Operativo
Tipos de fallos: Proceso o procesador
Tipos de fallos: Componentes
Tolerancia física y de software: elementos de estrategias tolerantes
La redundancia es el método general para la tolerancia a fallas
Técnicas de seguridad en sistemas tolerantes
La seguridad en los sistemas distribuidos se divide a menudo en 2 partes 1. Comunicación entre usuarios y procesos, normalmente residen en máquinas diferentes. Garantiza la comunicación segura mediante canales seguros y más específicamente, la integridad y la confidencialidad del mensaje de autenticación. 2. Autorización. Garantiza que un proceso obtenga solo aquellos derechos de acceso a los recursos de un SD para los que tiene autorización. Un ejemplo son los controles de acceso.
Autenticación basada en una clave secreta compartida EL protocolo adopta un método común mediante el cual una parte reta a la otra a que responda correctamente sólo si la otra parte conoce la clave secreta compartida. (protocolos reto-respuesta). 1. 2. 3. 4. 5.
A envía identidad. B envía un reto A descifra el reto y se lo envía a B A envía reto a B B descifra el reto y se lo envía a A
Autenticación mediante un centro de distribución de una clave Un SD tiene un número N servidores y cada uno comparte una clave secreta con los demás teniendo N-1 servidores, por lo cual el SD maneja N(N-1)/ claves, lo cual lo vuelve poco escalable. Esto hace que se utilice un sistema centralizado llamado KDC, el cual, comparte una clave secreta concada uno de los servidores, pero no requiere que los otros tengan claves compartidas, lo cual solo se manejan solo N claves. Para este tipo de comunicación se usa el protocolo de Needham-Shroeder.
1. 2. 3.
4. 5.
A envía reto, junto con su identidad y la de B y un id aleatorio al KDC. El KDC responde al reto, la identidad de B, y un boleto para conectar con B. A conecta con B usando el boleto dado por el KDC, la clave para conectar, junto con un reto. B responde al reto y manda uno a A. A responde al reto de B
Firmas Digitales En las transacciones(por tomar como ejemplo) entre A y B, A piensa comprar Pokemon Ultra Sun por $800 al señor de la tienda en línea alias B, la transacción será en línea. A envía un mensaje a B para confirmar que comprará Pokemon US en $800. además de la autenticación existen por lo menos 2 cuestiones a tener en cuenta con respecto al mensaje. -
-
A tiene que estar segura de que Bob no cambiará maliciosamente los $800 mencionados en su mensaje a una mayor cifra, y de que luego no diga que ella prometió más de $800 B tiene que estar seguro de que A no puede retractarse de que envió el mensaje solo porque cambió de idea.
En estas cuestiones si A firma digitalmente el mensaje, de tal forma que su firma queda vinculada de manera única a su contenido. La asociación única entre un mensaje y su firma evita que las modificaciones al ensaje pasen inadvertidas. Una de forma popula de estas firmas es utilizar una clave pública como RSA, cuando A realiza un mensaje m para B, lo cifa con su clave privada y selo envía a B. Cuando B recibe el mensaje, lo descifra con la clave pública de A. Si puede estar seguro de que la clave pública de A, el descifrado de la versión firmada de m y con la comparación exitosa con m sólo pueden significar que provino de A. A está protegida contra cualesquiera modificaciones maliciosas por parte de de externos.
Sistemas Operativos distribuidos con tolerancia a fallos
Amoeba (Introducción)
-Está escrito en C -Posee un lenguaje para el cómputo distribuido y paralelo llamado Orca -No tiene concepto de “máquina de origen” -El shell inicial se ejecuta en máquina arbitrarias, pero los comandos tienen porqué ejecutarse en la misma máquina que el shell.
Amoeba
(Arquitectura)
-Pila de procesadores, cada uno con su memoria local (no es necesaria la memoria compartida). El sistema operativo se encarga de repartir el trabajo de los procesadores de forma dinámica. -Terminales X, uno para cada usuario. -Servidores especializados, que por eficiencia se encontraran en ejecución todo el tiempo y en máquinas dedicadas a ello.
Amoeba
(Micro Núcleo)
-Se ejecuta en todas las máquinas del sistema: -Procesadores de la pila. -Terminales. -Servidores especializados -Posee las siguientes tareas: -Controlar procesos e hilos
Amoeba
(Micro Núcleo)
-Posee las siguientes tareas:
-Controlar procesos e hilos - Proporciona el soporte de la administración de memoria de bajo nivel. (Segmentos) - Soporta la comunicación entre los procesos. Dos formas de comunicación: - Puntual: Un cliente envía un mensaje a un servidor y se bloquea hasta recibir respuesta.
- De grupo: Envío de mensajes de una fuente a varios destinos.
Amoeba
(Tolerancia a fallos)
●
Para la tolerancia a fallos se usa el servidor de réplicas.
●
Éste funciona mejor con objetos inmutables como los archivos, ya que trabaja en segundo plano.
Mach
(Introducción)
●
No es un sistema operativo, sino un micronúcleo.
●
Objetivos: ○ ○ ○ ○ ○
●
Base para la construcción de otros sistemas (UNIX). Espacio de direcciones de gran tamaño Acceso transparente a los recursos de la red. Paralelismo del sistema y las aplicaciones. Escalabilidad (transportar mach a un número más grande de máquinas).
La emulación del sistema operativo se lleva a cabo en el espacio de usuario.
Mach ●
El núcleo de Mach se encarga de las siguientes tareas. ○ ○ ○ ○
●
(Micronúcleo) Administra los procesos. Administra la memoria. Controla la comunicación Controla los servicios de E/S
Ventajas: ○ ○ ○ ○
Mayor sencillez de cada parte. Independencia y portabilidad del sistema operativo. Ejecución de varios sistemas a la vez. Mayor seguridad (cada proceso tiene su propio sistema operativo. Difícil husmear ficheros del otro sistema).
Chorus (Introducción) ●
Este sistema es un proyecto del INRIA, desarrollado en 1980 [Tanenbaum, 1996]. En 1997 el Chorus fue adquirido por Sun Microsystems.
●
Algunos de los objetivos de Chorus son: ○ ○ ○ ○ ○
Permitir una emulación de UNIX de alto rendimiento. Para usar en sistemas distribuidos. Aplicaciones en tiempo real. Integrar programación orientada a objetos. Permite servidores de grupo y ser reconfigurable.
Chorus (Tolerancia a fallos) Las fallas están restringidas a volúmenes de disco y sistemas de archivos. Para proporcionar resistencia a las fallas de disco individuales, los volúmenes de disco se duplican, de modo que si uno de los duplicadores falla, el volumen aún está disponible desde el espejo restante. Cuando falla un nodo se pretende que el dispositivo o el sistema de archivos esté disponible desde otro nodo mediante un mecanismo de conmutación por error que permite el acceso al recurso tan pronto como se hayan completado las acciones de recuperación apropiadas.
Acuerdos en sistemas defectuosos En muchos sistemas distribuidos existe la necesidad de que los procesos coinciden en algo .
El objetivo general de los algoritmos de acuerdo distribuido es lograr que todos los procesadores no defectuosos alcancen el consenso acerca de cierto tema, en un número finito de pasos.
Resolución de los generales bizantinos
Sistema Distribuido de Tiempo Real Los sistemas tolerantes de fallas no son el único tipo de sistemas distribuidos especializados. Los sistemas de tiempo real forman otra categoría. A veces se combinan estos dos tipos para obtener sistemas de tiempo real tolerantes de fallas.
Los programas (y sistemas) de tiempo real interactúan con el inundo exterior de una manera que implica al tiempo. Cuando aparece un estímulo, el sistema responde a éste de cierta manera y antes de cierto momento límite. Si entrega la respuesta correcta, pero después del límite, se considera que el sistema está fallando.
¿Cómo hacer un sistema distribuido tolerante a fallas?
Técnicas de tolerancia a fallos en sistemas distribuidos Replicación Crear múltiples copias de datos que sean almacenados en distintos lugares, la idea principal de esto es que si un nodo falla, los datos pueden ser accesados de una de sus copias. Tiene desventajas o limitaciones como consistencia de la información.
Checkpointing Guardar el estado de un sistema cuando se encuentra en un estado estable y consistente, una instancia de guardado de este estado se le llama checkpoint, si el sistema llega a fallar durante el funcionamiento se restablece a uno de estos estados anteriores.
Tipos de replicación
● Activa ● Pasiva
Replicación Activa C
Las peticiones de los clientes son procesadas por todos los servidores Requiere de un protocolo para reenviar las peticiones a todos los servidores
Server
Server
Server
Estado
Estado
Estado
Replicación Pasiva o de servidor primario C
Solo un servidor procesa las peticiones de los clientes y se le conoce como servidor primario Los demás servidores actúan como servidores de respaldo en caso de falla del servidor primario, el cual actualiza el estado de estos
Server
Server
Server
Estado
Estado
Estado
Checkpointing Cada sistema tiene asociada información que define su estado en un momento en particular. Esta informacion incluye cosas como el estado del proceso, ambiente(conexiones, servicios etc.) valores de los registros activos y variables. Esta informacion es recolectada y almacenada. En caso de un fallo el sistema es restaurado a un checkpoint anteriormente guardado, no necesariamente en el inicio. El checkpointing es muy útil pero consume tiempo considerable dependiendo del tamaño del sistema.
Tipos de checkpointing User triggered
Requiere intervención del usuario Puede ser útil cuando el usuario tiene conocimientos técnicos No es fácil identificar cuándo se debe crear un checkpoint
Checkpointing coordinado
Los procesos se comunican entre ellos Primero se crean checkpoints temporales que de ser necesario se convierten en permanentes el tiempo de recuperación es alto debido a la comunicación
Checkpointing no coordinado
Los procesos no se comunican entre ellos y crean sus propios checkpoints Sin gastos por comunicación entre procesos
Checkpointing basado en mensajes
El estado de los procesos se almacena como un mensaje, si un proceso falla otro toma su lugar y obtiene su estado con la ayuda de los mensajes
Actividad
Actividad Sopa de letras Escribe con tus palabras qué significan los siguientes conceptos y encuéntralos en la sopa de letras:
Referencias