Sistemas de tolerancia a fallos de discos duros

Para poder practicar con nuestro Windows Server 2016, lo hemos instalado en una máquina virtual. Pero vamos a pensar en él de la misma forma que si estuviera en un entorno de producción.

Imaginemos ahora que lo tenemos instalado en un servidor físico donde va a proporcionar servicios vitales para nuestra empresa. Aquí debemos pensar ya en qué métodos tenemos a nuestra disposición para poder tener cierta protección en los datos almacenados en los discos.

Veamos un concepto muy importante que debe cumplir obligatoriamente un servidor. Hablaremos ahora del almacenamiento y aquí es donde merece la pena invertir en unos buenos discos o cabina de almacenamiento para proporciona un sistema de almacenamiento fiable. Esta inversión nos va a ofrecer una garantía de funcionamiento, rendimiento y, sobre todo, tolerancia a fallos.

Hay dos tipos de discos duros: los IDE (incluye los serial ATA) y los SCSI (y su última versión, los SAS). Éstos últimos son especiales y están especialmente mejorados para trabajar con servidores. Aunque veas ofertas de servidores con discos baratos de tipo IDE (o Serial ATA), éstos no están preparados para dar un buen rendimiento en servidores así que debes cambiar esa configuración para sustituir esos discos por discos SCSI.

Sabemos que ya tenemos disponibles los discos sólidos SSD que siguen bajando de precio. Pero ahora mismo no es una buena compra todavía para almacenamiento masivo debido a su coste. Sin duda reemplazarán a los discos duros tradicionales, pero de momento esta tecnología no es barata en nuestros servidores o cabinas de almacenamiento.

Es evidente que la información es el activo más valioso e importante de cualquier empresa, que los datos han de estar disponibles en todo momento (24 horas x7 días a la semana x365 días al año) y además que debemos estar preparados contra incidencias. El coste de una posible pérdida de información y el tiempo durante el cual el sistema no está en explotación mientras se soluciona el problema, es un lujo que cada vez menos empresas pueden permitirse. Así pues, disponer de un sistema de almacenamiento seguro y tolerante al fallo, como los sistemas RAID, es algo imprescindible

La configuración de estos discos SCSI, que en muchos servidores vienen ya configurados, la haremos con los sistemas tolerantes a fallos o RAID...

¿Qué es un sistema RAID?

El término RAID es un acrónimo del inglés "Redundant Array of Independent Disks". Significa matriz redundante de discos independientes. RAID es un método de combinación de varios discos duros para formar una única unidad lógica en la que se almacenan los datos de forma redundante. Ofrece mayor tolerancia a fallos y más altos niveles de rendimiento que un sólo disco duro o un grupo de discos duros independientes.
Una matriz consta de dos o más discos duros que ante el sistema principal funcionan como un único dispositivo. Un RAID, para el sistema operativo, aparenta ser un sólo disco duro lógico (LUN). Los datos se desglosan en fragmentos que se escriben en varias unidades de forma simultánea. En este método, la información se reparte entre varios discos, usando técnicas como el entrelazado de bloques (RAID nivel 0) o la duplicación de discos (RAID nivel 1) para proporcionar redundancia, reducir el tiempo de acceso, y/o obtener mayor ancho de banda para leer y/o escribir, así como la posibilidad de recuperar un sistema tras la avería de uno de los discos.
La tecnología RAID protege los datos contra el fallo de una unidad de disco duro. Si se produce un fallo, RAID mantiene el servidor activo y en funcionamiento hasta que se sustituya el disco defectuoso. Es decir, se nos va a estropear un disco y en lugar de una catástrofe, sólo es un inconveniente ya que como el sistema RAID atiende a estos fallos haciendo que entre en funcionamiento el sistema de seguridad. Nos mandaría un mensaje de correo electrónico diciendo que el disco número "x" se ha estropeado y hay que cambiarlo. Lo sustituimos sin apagar el servidor y continuamos trabajando: perfecto, no ha pasado nada. Si tuviéramos un único disco en tu servidor habríamos perdido decenas de horas de trabajo y quizás, información vital.
La tecnología RAID se utiliza también con mucha frecuencia para mejorar el rendimiento de servidores y estaciones de trabajo. Estos dos objetivos, protección de datos y mejora del rendimiento, no se excluyen entre sí.

RAID ofrece varias opciones, llamadas niveles RAID. Cada una de las cuales proporciona un equilibrio distinto entre tolerancia a fallos, rendimiento y coste. Todos los sistemas RAID suponen la pérdida de parte de la capacidad de almacenamiento de los discos, para conseguir la redundancia o almacenar los datos de paridad.

Aunque podemos crear sistemas RAID con los discos económicos SATA, es recomendable que el servidor disponga de discos SCSI, o su variante más moderna, los SAS. El rendimiento es superior, sobre todo en situaciones de mucha carga de trabajo.
Los sistemas RAID profesionales deben incluir los elementos críticos por duplicado: fuentes de alimentación y ventiladores redundantes y "cambios en caliente o hot swap". De poco sirve disponer de un sistema tolerante al fallo de un disco si después falla una fuente de alimentación que provoca la caída del sistema.
"Hot Swap" o cambio en caliente: permite cambiar un dispositivo o componente defectuoso de un sistema y reemplazarlo por otro sin apagar el sistema y sin interferir en las funciones de otros dispositivos.

Resumiendo

Resumiendo, RAID proporciona tolerancia a fallos, mejora el rendimiento del sistema y aumenta la productividad:

Tolerancia a fallos

RAID protege contra la pérdida de datos y proporciona recuperación de datos en tiempo real con acceso interrumpido en caso de que falle un disco.

Mejora del Rendimiento/ Velocidad

Una matriz consta de dos o más discos duros que ante el sistema principal funcionan como un único dispositivo. Los datos se desglosan en fragmentos que se escriben en varias unidades de forma simultánea. Este proceso, denominado fraccionamiento de datos, incrementa notablemente la capacidad de almacenamiento y ofrece mejoras significativas de rendimiento. RAID permite a varias unidades trabajar en paralelo, lo que aumenta el rendimiento del sistema.

Mayor Fiabilidad

Las soluciones RAID emplean dos técnicas para aumentar la fiabilidad: la redundancia de datos y la información de paridad. La redundancia implica el almacenamiento de los mismos datos en más de una unidad. De esta forma, si falla una unidad, todos los datos quedan disponibles en la otra unidad, de inmediato. Aunque este planteamiento es muy eficaz, también es muy costoso, ya que exige el uso de conjuntos de unidades duplicados. El segundo planteamiento para la protección de los datos consiste en el uso de la paridad de datos. La paridad utiliza un algoritmo matemático para describir los datos de una unidad. Cuando se produce un fallo en una unidad se leen los datos correctos que quedan y se comparan con los datos de paridad almacenados por la matriz. El uso de la paridad para obtener fiabilidad de los datos es menos costoso que la redundancia, ya que no requiere el uso de un conjunto redundante de unidades de disco.

Alta Disponibilidad

RAID aumenta el tiempo de funcionamiento y la disponibilidad de la red. Para evitar los tiempos de inactividad, debe ser posible acceder a los datos en cualquier momento. La disponibilidad de los datos se divide en dos aspectos: la integridad de los datos y tolerancia a fallos. La integridad de los datos se refiere a la capacidad para obtener los datos adecuados en cualquier momento. La mayoría de las soluciones RAID ofrecen reparación dinámica de sectores, que repara sobre la marcha los sectores defectuosos debidos a errores de software. La tolerancia a fallos, el segundo aspecto de la disponibilidad, es la capacidad para mantener los datos disponibles en caso de que se produzcan uno o varios fallos en el sistema.

Tipos de RAID

Existen dos tipos de tecnología RAID: basada en software y basada en hardware. Cada uno de ellos tiene sus ventajas y sus inconvenientes.

La ventaja de los RAID basados en hardware es su independencia de la plataforma o sistema operativo, ya que son vistos por éste como un gran disco duro más, y además son más rápidos. Los sistemas RAID software no son implementaciones adecuadas en la mayoría de los casos, y cada vez son menos empleados.

A diferencia de las matrices (RAID) basadas en software, las que están basadas en hardware utilizan controladores RAID que se conectan a una ranura PCI del servidor. Con tan sólo una diferencia mínima de precio con respecto al coste del controlador que se necesita para el software RAID, el hardware RAID ofrece ventajas significativas en lo que respecta a:

No dudamos entonces de que nuestro RAID debe ser por hardware. Si adquirimos el servidor indicando que queremos que tenga un sistema RAID con toda seguridad será por hardware. Prácticamente todos los servidores modernos incorporan en la propia placa el soporte para discos RAID.

Niveles de RAID

La elección de los diferentes niveles de RAID va a depender de las necesidades del usuario en lo que respecta a factores como seguridad, velocidad, capacidad, coste, etc. Cada nivel de RAID ofrece una combinación específica de tolerancia a fallos (redundancia), rendimiento y coste, diseñadas para satisfacer las diferentes necesidades de almacenamiento. La mayoría de los niveles RAID pueden satisfacer de manera efectiva sólo uno o dos de estos criterios. No hay un nivel de RAID mejor que otro; cada uno es apropiado para determinadas aplicaciones y entornos informáticos. De hecho, resulta frecuente el uso de varios niveles RAID para distintas aplicaciones del mismo servidor.

Esquema

Sabemos que la tecnología RAID permite hacer matrices de discos de diferentes formas. Compramos un servidor con tarjeta raid y tres discos iguales y ahora decidiré cuál de las configuraciones de la matriz (RAID) es la más aconsejable. Por ejemplo, la más implementada es la de RAID 5 que vemos en este esquema:

 

Oficialmente existen siete niveles diferentes de RAID (0-6), definidos y aprobados por el RAID Advisory Board (RAB). Además, existen las posibles combinaciones de estos niveles (10, 50, ...). Los niveles RAID 0, 1, 0+1 y 5 son los más populares.

RAID 0: Disk Striping "La más alta transferencia, pero sin tolerancia a fallos"

También conocido como "separación ó fraccionamiento/ Striping". Los datos se desglosan en pequeños segmentos y se distribuyen entre varias unidades. Este nivel de "array" o matriz no ofrece tolerancia a fallos. (Es decir crea una sola unidad con varios discos, pero la información no se replica por lo tanto si se estropea uno perderemos la información. La ventaja es que por hardware creamos una unidad lógica que se compone de varios discos: transparente para nosotros y muy rápida). Al no existir redundancia, RAID 0 no ofrece ninguna protección de los datos. El fallo de cualquier disco de la matriz tendría como resultado la pérdida de los datos y sería necesario restaurarlos desde una copia de seguridad. Por lo tanto, RAID 0 no se ajusta realmente al acrónimo RAID.

Consiste en una serie de unidades de disco conectadas en paralelo que permiten una transferencia simultánea de datos a todos ellos, con lo que se obtiene una gran velocidad en las operaciones de lectura y escritura. La velocidad de transferencia de datos aumenta en relación al número de discos que forman el conjunto. Esto representa una gran ventaja en operaciones secuenciales con ficheros de gran tamaño. Por lo tanto, este array es aconsejable en aplicaciones de tratamiento de imágenes, audio, vídeo o CAD/CAM, es decir, es una buena solución para cualquier aplicación que necesite un almacenamiento a gran velocidad pero que no requiera tolerancia a fallos. Se necesita un mínimo de dos unidades de disco para implementar una solución RAID 0.

RAID 1: Mirroring "Redundancia. Más rápido que un disco y más seguro"

También llamado "Mirroring" o "Duplicación" (Creación de discos en espejo). Se basa en la utilización de discos adicionales sobre los que se realiza una copia en todo momento de los datos que se están modificando. RAID 1 ofrece una excelente disponibilidad de los datos mediante la redundancia total de los mismos. Para ello, se duplican todos los datos de una unidad o matriz en otra. De esta manera se asegura la integridad de los datos y la tolerancia a fallos, pues en caso de avería, la controladora sigue trabajando con los discos no dañados sin detener el sistema. Los datos se pueden leer desde la unidad o matriz duplicada sin que se produzcan interrupciones.

RAID 1 es una buena solución para las aplicaciones que requieren redundancia cuando hay sólo dos unidades disponibles. Los servidores de archivos pequeños son un buen ejemplo. Se necesita un mínimo de dos unidades para implementar una solución RAID 1.

RAID 0+1/ RAID 0/1 ó RAID 10: "Ambos mundos"

Combinación de los arrays anteriores que proporciona velocidad y tolerancia al fallo simultáneamente. El nivel de RAID 0+1 fracciona los datos para mejorar el rendimiento, pero también utiliza un conjunto de discos duplicados para conseguir redundancia de datos. Al ser una variedad de RAID híbrida, RAID 0+1 combina las ventajas de rendimiento de RAID 0 con la redundancia que aporta RAID 1. Sin embargo, la principal desventaja es que requiere un mínimo de cuatro unidades y sólo dos de ellas se utilizan para el almacenamiento de datos. Las unidades se deben añadir en pares cuando se aumenta la capacidad, lo que multiplica por dos los costes de almacenamiento.

Es decir, creamos una matriz con dos discos utilizando la configuración de RAID 0 que bajo una única unidad podemos incluir varias físicas. Y luego le aplicamos el nivel 1 junto con otros dos discos que tenemos, es decir, hará una copia exacta de esos dos discos en los otros. De todo esto se encarga la tarjeta RAID así sabemos que en todo momento tenemos una copia por si se estropeara algún disco. Lo malo es que siempre hay dos discos "perdidos" ya que forman parte de la copia.

El RAID 0+1 tiene un rendimiento similar al RAID 0 y puede tolerar el fallo de varias unidades de disco. Una configuración RAID 0+1 utiliza un número par de discos (4, 6, 8) creando dos bloques. Cada bloque es una copia exacta del otro, de ahí RAID 1, y dentro de cada bloque la escritura de datos se realiza en modo de bloques alternos, el sistema RAID 0. RAID 0+1 es una excelente solución para cualquier uso que requiera gran rendimiento y tolerancia a fallos, pero no una gran capacidad. Se utiliza normalmente en entornos como servidores de aplicaciones, que permiten a los usuarios acceder a una aplicación en el servidor y almacenar datos en sus discos duros locales, o como los servidores web, que permiten a los usuarios entrar en el sistema para localizar y consultar información. Este nivel de RAID es el más rápido, el más seguro, pero por contra el más costoso de implementar.

RAID 2: "Acceso paralelo con discos especializados. Redundancia a través del código Hamming"

El RAID nivel 2, poco utilizado, adapta la técnica comúnmente usada para detectar y corregir errores en memorias de estado sólido. En un RAID de nivel 2, el código ECC (Error Correction Code) se intercala a través de varios discos a nivel de bit. El método empleado es el Hamming. Puesto que el código Hamming se usa tanto para detección como para corrección de errores (Error Detection and Correction), RAID 2 no hace uso completo de las amplias capacidades de detección de errores contenidas en los discos.

Los que hemos estudiado Informática conocemos esta codificacion donde a través de unos códigos se pueden detectar y corregir errores en la lectura. Las propiedades del código Hamming también restringen las configuraciones posibles de matrices para RAID 2, particularmente el cálculo de paridad de los discos. Por lo tanto, RAID 2 no ha sido apenas implementado en productos comerciales, lo que también es debido a que requiere características especiales en los discos y no usa discos estándares.

Debido a que es esencialmente una tecnología de acceso paralelo, RAID 2 está más indicado para aplicaciones que requieran una alta tasa de transferencia y menos conveniente para aquellas otras que requieran una alta tasa de demanda I/O.

RAID 3: "Acceso síncrono con un disco dedicado a paridad"

Dedica un único disco al almacenamiento de información de paridad. La información de ECC (Error Checking and Correction) se usa para detectar errores. La recuperación de datos se consigue calculando el O exclusivo (XOR) de la información registrada en los otros discos. La operación I/O accede a todos los discos al mismo tiempo, por lo cual el RAID 3 es mejor para sistemas de un sólo usuario con aplicaciones que contengan grandes registros.

RAID 3 ofrece altas tasas de transferencia, alta fiabilidad y alta disponibilidad, a un coste intrínsicamente inferior que un Mirroring (RAID 1). Sin embargo, su rendimiento de transacción es pobre porque todos los discos del conjunto operan al unísono.

Se necesita un mínimo de tres unidades para implementar una solución RAID 3.

RAID 4: "Acceso Independiente con un disco dedicado a paridad"

Basa su tolerancia al fallo en la utilización de un disco dedicado a guardar la información de paridad calculada a partir de los datos guardados en los otros discos. En caso de avería de cualquiera de las unidades de disco, la información se puede reconstruir en tiempo real mediante la realización de una operación lógica de O exclusivo. Debido a su organización interna, este RAID es especialmente indicado para el almacenamiento de ficheros de gran tamaño, lo cual lo hace ideal para aplicaciones gráficas donde se requiera, además, fiabilidad de los datos. Se necesita un mínimo de tres unidades para implementar una solución RAID 4. La ventaja con el RAID 3 está en que se puede acceder a los discos de forma individual.

RAID 5: "Acceso independiente con paridad distribuida"

Este array ofrece tolerancia al fallo, pero además, optimiza la capacidad del sistema permitiendo una utilización de hasta el 80% de la capacidad del conjunto de discos. Esto lo consigue mediante el cálculo de información de paridad y su almacenamiento alternativo por bloques en todos los discos del conjunto.

La información del usuario se graba por bloques y de forma alternativa en todos ellos. De esta manera, si cualquiera de las unidades de disco falla, se puede recuperar la información en tiempo real, sobre la marcha, mediante una simple operación de lógica de O exclusivo, sin que el servidor deje de funcionar.

Así pues, para evitar el problema de cuello de botella que plantea el RAID 4 con el disco de comprobación, el RAID 5 no asigna un disco específico a esta misión, sino que asigna un bloque alternativo de cada disco a esta misión de escritura. Al distribuir la función de comprobación entre todos los discos, se disminuye el cuello de botella y con una cantidad suficiente de discos puede llegar a eliminarse completamente, proporcionando una velocidad equivalente a un RAID 0.

RAID 5 es el nivel de RAID más eficaz y el de uso preferente para las aplicaciones de servidor básicas para la empresa. Comparado con otros niveles RAID con tolerancia a fallos, RAID 5 ofrece la mejor relación rendimiento-coste en un entorno con varias unidades. Gracias a la combinación del fraccionamiento de datos y la paridad como método para recuperar los datos en caso de fallo, constituye una solución ideal para los entornos de servidores en los que gran parte del E/S es aleatoria, la protección y disponibilidad de los datos es fundamental y el coste es un factor importante. Este nivel de array es especialmente indicado para trabajar con sistemas operativos multiusuarios. Se necesita un mínimo de tres unidades para implementar una solución RAID 5.

RAID 5 es el nivel más utilizado junto con el RAID 1. Ofrece muy buen rendimiento y solo "desperdiciamos" un disco físico. RAID 1, "desperdicia el 50% de los discos físicos ya que es un sistema espejo.

Los niveles 4 y 5 de RAID pueden utilizarse si se disponen de tres o más unidades de disco en la configuración, aunque su resultado óptimo de capacidad se obtiene con siete o más unidades. RAID 5 es la solución más económica por megabyte, que ofrece la mejor relación de precio, rendimiento y disponibilidad para la mayoría de los servidores.

RAID 6: "Acceso independiente con doble paridad"

Similar al RAID 5, pero incluye un segundo esquema de paridad distribuido por los distintos discos y por tanto ofrece tolerancia extremadamente alta a los fallos y a las caídas de disco, ofreciendo dos niveles de redundancia. Hay pocos ejemplos comerciales en la actualidad, ya que su coste de implementación es mayor al de otros niveles RAID, ya que las controladoras requeridas que soporten esta doble paridad son más complejas y caras que las de otros niveles RAID. Así pues, comercialmente no se implementa.

Las cabinas de almacenamiento disponen además de discos en espera o "hot spare". Estos discos están sin uso y esperando a que alguno falle. Si se produce un error en alguno de los que están en funcionamiento, estos discos en espera se reconstruyen con los datos que tuviera el dañado. De esta forma todo sigue funcionando gracias a este disco de reserva. Obviamente disponer de un RAID para tener redundados los datos, permite esta reconstrucción automática.