Next
Previous
Contents
Este HOWTO ilustra el uso del "nuevo estilo" de RAID que podemos
encontrar en los núcleos 2.4. Y no cubre el "viejo estilo"
de soporte RAID que venía con los núcleos 2.0 y 2.2 standard.
El web oficial de este documento está en
http://unthought.net/Software-RAID.HOWTO/, donde podréis
encontrar las versiones más actualizadas. Este HOWTO fue originalmente
escrito por Jakob Østergaard, a raíz de un considerable número
de e-mails que cruzados entre él y gente como
Ingo Molnar
(uno de los desarrolladores del soporte RAID de Linux) o algunos miembros
de la
linux-raid mailing list.
Finalmente, Emilio Bueso coescribe la versión 1.0 y la traduce al castellano.
Los que queráis usar este soporte moderno de RAID por software con los
núcleos 2.0 o 2.2, sólo tenéis que conseguir un parche adecuado para
vuestro núcleo en
http://people.redhat.com/mingo/, puesto que los núcleos standard 2.2
no poseen un soporte directo para esta nueva generación de RAID que vamos a
tratar en el presente documento. Además, el antiguo soporte RAID de
los núcleos 2.0 y 2.2 standard es defectuoso y carece de varias
funcionalidades relevantes que podéis encontrar en los soportes modernos
de RAID.
Una cosa más para los que ya sabéis algo de sistemas RAID: encontrareis que
aquí vamos a abordar todo cuanto cabe esperar de un HOWTO que no presupone en
ningún momento que el lector ya está familiarizado con la tecnología que nos
atañe. Así que si alguna sección os parece trivial, simplemente pasad a la
siguiente. El objetivo final de este documento es cubrir absolutamente todo
lo que un administrador de sistemas necesita saber si quiere implementar una
solución RAID por software sobre Linux, empleando lo último en tecnología
a tal efecto, así que los que ya conocéis RAID a fondo, también encontrareis
material interesante, como el soporte a herramientas como mdadm o las nuevas
raidtools.
La consabida advertencia
Toda la información aquí presente no implica ni supone garantía alguna,
así que si alguno de vosotros pierde todos sus archivos, pierde su empleo,
pierde a su novia, es atropellado por un camión de ocho ejes... no
es culpa nuestra. No es culpa de los autores de este documento ni de
los desarrolladores del software RAID que estéis usando. Os damos por
informados de que estáis usando este HOWTO por vuestra cuenta y riesgo,
sin garantía alguna que os respalde. Tampoco podéis suponer que en este
documento no hay error alguno (aunque nosotros los autores, hemos ido
con cuidado que no equivocarnos demasiado) o que aquí vais a encontrar
cobertura documental a todas vuestras demandas (aunque hayamos ido con
cuidado de no dejarnos nada importante en el tintero).
Es extremadamente importante que hagáis un backup entero de vuestros
ordenadores antes de poneros manos a la obra con esto del RAID. Y si
creéis que esto lo pone en todos los HOWTO, sabed que para montar un sistema
RAID por software vais a trabajar con sistemas de archivos y particiónes
enteras... y en ese contexto, un fallo tonto y, zas! ...acabáis de hacer
desaparecer el sistema al completo.
En 1987, la Universidad de Berkeley (California), publicó
un artículo describiendo varios tipos de arrays de discos,
acuñando en el proceso el término RAID (acrónimo de Redundant Array
of Inexpensive Disks). Básicamente, la idea era combinar múltiples
discos [duros] independientes y pequeños en un array (o matriz) de disco
capaz de alcanzar un rendimiento superior al de un sólo disco grande
y caro... en otros términos, se pretendía hacer trabajar varios discos
modestos como un disco profesional de alto rendimiento. Adicionalmente,
el array de discos aparece ante el sistema como un disco lógico único.
El tiempo transcurrido entre errores (MTBF) para el array de discos
es, en el modelo teórico de la Universidad de Berkeley, igual al MTBF de
un disco individual dividido por el número de discos presentes en el array.
Esto se consigue alcanzando una cierta tolerancia a errores que pasa
por guardar la información redundantemente de varios modos.
En aquel documento original, también nacieron cinco tipos de arquitecturas
RAID: desde RAID-1 hasta RAID-5 fueron definidas entonces, cada una de
ellas proporcionando diferentes niveles de tolerancia a errores de disco
y rendimientos. Después de aquello, también se ha ido poniendo de moda
el término RAID-0 para designar los arrays de discos no redundantes.
Hoy en dia, algunos de los niveles RAID originalmente definidos
(concretamente, los niveles 2 y 3) son solo utilizados en sistemas muy
especializados (hasta el extremo de que el RAID por software de Linux
ni siquiera los soporta!). También ha ido apareciendo un nuevo nivel
denominado "lineal", y se ha ido haciendo frecuente esto de ver el nivel
0 combinado con el nivel 1... pero nos estamos desviando.
La palabra "RAID" aquí significa "RAID por software de Linux". Este
documento no trata ningún aspecto de RAID por hardware.
Cuando se describen configuraciones, es útil referirse al número de discos
y sus tamaños. En todos los casos se usa la letra N para denotar
el número de discos activos en el array (sin contar los discos de reserva).
La letra S es el tamaño del disco más pequeño en el array, a menos
que se diga otra cosa. La letra P representa el rendimiento de un
disco en el array, en MB/s. Cuando se use, supondremos que los discos son
igual de rápidos, que no siempre puede ser cierto.
Note que se supone que las palabras "dispositivo" y "disco" significan lo
mismo. Normalmente, los dispositivos usados para construir un dispositivo
RAID son particiónes de discos, no necesariamente discos enteros. Pero,
normalmente, combinar varias particiónes de un disco no tiene sentido, por
lo que las palabras dispositivo y disco simplemente significan
"particiónes de discos diferentes".
Ahora viene una breve descripción de los niveles RAID que soporta
la capa de RAID por software de Linux. Buena parte de esto que vamos
a ver son sólo los fundamentos teóricos de los sistemas RAID.
Y ahora es cuando os saltáis esta sección los que ya conocéis RAID.
Ya volveréis luego, cuando tengáis problemas, malditos. :)
El soporte RAID de Linux incorpora los siguientes niveles:
- Modo lineal
- Dos o más discos se combinan en un único dispositivo físico.
Los discos se suceden marcialmente unos detrás de otros de tal manera
que las escrituras en el dispositivo RAID primero llenarán el disco 0,
a continuación el disco 1 y así sucesivamente. Los discos no tienen por
qué ser del mismo tamaño. Ya se sabe, el tamaño no importa. :)
- No existe redundancia alguna en este nivel. Si un disco falla
perderéis todos vuestros datos con toda probabilidad. También puede
ser que os toque la lotería y podáis recuperar algunos datos, ya que
el sistema de ficheros simplemente habrá perdido un gran puñado de
datos consecutivos.
- El rendimiento de las lecturas y las escrituras no mejora en
las lecturas/escrituras individuales, pero si varios usuarios usan
un mismo dispositivo, tal vez tengáis la suerte de que un usuario use
efectivamente el primer disco y otro usuario acceda a ficheros que
por casualidad residan en el segundo disco. Si esto ocurre, es de
esperar una mejora significativa en los rendimientos.
- RAID-0
- También llamado modo "stripe" o "rayado". Es como el anterior,
salvo que las lecturas y escrituras se realizan en paralelo en los
dispositivos. Los dispositivos deben tener aproximadamente el mismo
tamaño. Puesto que todos los accesos se realizan en paralelo, los
discos se llenan por igual. Si un dispositivo es mucho mayor que los
otros dispositivos, el espacio extra todavía se utilizará en el
dispositivo RAID durante las escrituras en el extremo superior del
dispositivo RAID, aunque sólo se accederá a este disco más grande.
Naturalmente, esto perjudica el rendimiento.
- Como en el modo lineal, tampoco hay redundancia en este nivel.
A diferencia del modo lineal, no vais a recuperar ningún dato si un
disco os falla aquí. Si elimina un disco de un grupo RAID-0, el
dispositivo RAID no perderá simplemente un bloque consecutivo de
datos, sino que se llenará con pequeños agujeros por todo el
dispositivo. Imaginad vuestro disco duro raíz convertido en un colador
(e2fsck no es capaz de recuperar gran cosa de ahí, os lo aseguro) y
ahora es cuando corréis todos a hacer esos backups. Por fin.
- El rendimiento de las lecturas y las escrituras mejora siempre,
ya que las lecturas y las escrituras se realizan en paralelo sobre los
dispositivos. Normalmente, ésta es la razón principal para usar RAID-0.
Si los buses a los discos son suficientemente rápidos, puede obtener
casi N*P MB/seg.
- RAID-1
- Este es el primer modo que incorpora redundancia. RAID-1
se puede usar en dos o más discos con cero o más discos de reserva.
Este modo mantiene en un disco un duplicado exacto de la información
en el otro(s) disco(s). Por supuesto, los discos deben ser del mismo
tamaño. Si un disco es mayor que otro, su dispositivo RAID será del
tamaño del disco más pequeño.
- Si se eliminan (o fallan) hasta N-1 discos, todos los datos
todavía permanecerán intactos. Si existen discos de reserva disponibles
y el sistema (es decir, las controladoras SCSI o los chipsets IDE, etc.)
sobreviven al desastre, comenzará inmediatamente la reconstrucción de
un duplicado en uno de los discos de reserva, después de la detección
del fallo del disco.
- Normalmente, el rendimiento de las lecturas aumenta hasta casi
N*P, mientras que el rendimiento de las escrituras es el mismo que
el de un único dispositivo o, tal vez, incluso menos. Las lecturas
se pueden hacer en paralelo pero, cuando se escribe, la CPU debe
transferir N veces la cantidad de datos que normalmente transferiría
(recordad, se deben enviar N copias idénticas de todos los datos a
los discos). Esto último es un problema cuando el array RAID-1 es
grande de verdad, puesto que el bus PCI puede saturarse al transportar
todas esas copias redundantes de datos (apunte interesante: el
colapso del bus PCI es uno de esos escasos problemas que se pueden
resolver mediante el uso de soluciónes RAID por hardware).
- RAID-4
- Este nivel de RAID es raro de ver. Se puede usar sobre 3 o más
discos. En lugar de duplicar completamente la información, se guarda
información de paridad en un único disco y escribe datos a los otros
discos de forma parecida a un RAID-0. Ya que uno de los discos se
reserva para información de paridad, el tamaño del array será
(N-1)*S, donde S es el tamaño del disco más pequeño del array. Como
en un RAID-1, los discos deben ser del mismo tamaño o de lo contrario
tendrá que aceptar que el valor de S en la fórmula (N-1)*S anterior
será el tamaño del disco más pequeño del array.
- Si un disco falla, se puede usar la información de paridad para
reconstruir todos los datos. Si dos discos fallan, se perderán todos
los datos.
- La razón por la que este nivel no se usa con mucha frecuencia
es que la información de paridad se guarda en un único disco. Esta
información se debe actualizar cada vez que se escribe en uno de
los otros discos. Por eso, el disco de paridad se convertirá en un
cuello de botella si no es mucho más rápido que los otros discos.
Sin embargo, si por pura casualidad tuviera muchos discos lentos y
un disco muy rápido, este nivel de RAID podría ser muy útil.
- RAID-5
- Este es quizás el modo RAID más útil cuando buscamos combinar
un mayor número de discos físicos y todavía conservar alguna
redundancia. RAID-5 se puede usar sobre 3 o más discos, con cero o
más discos de reserva. El tamaño del dispositivo RAID-5 resultante
será (N-1)*S, justo como en RAID-4. La gran diferencia entre RAID-5
y RAID-4 es que la información de paridad se distribuye uniformemente
entre los discos participantes, evitando el problema del cuello de
botella del RAID-4.
- Si uno de los discos falla, los datos sobreviven, gracias a
la información de paridad. Si existen discos de reserva disponibles,
la reconstrucción comenzará inmediatamente después del fallo del
dispositivo. Si dos discos fallan simultáneamente, todos los datos
se perderán. RAID-5 puede sobrevivir a un fallo de disco, pero no
a dos o más.
- Lo normal sería que el rendimiento general de acceso a disco
mejore sensiblemente en RAID-5, pero es difícil predecir en qué medida.
Las velocidad en los accesos de lectura suele mejorar en la misma
proporción que tenemos con los sistemas RAID-0, mientras que las
lecturas pueden llegar a aproximarse a las cifras en RAID-1 o, por
el contrario, más lentas (se requiere una lectura previa a la escritura
para así poder calcular la información de paridad!).
En definitiva, que la eficiencia en lecturas depende determinantemente
de la cantidad de memoria RAM en la máquina y del uso que se haga
del array... obviamente, un servidor donde cientos de usuarios escriban
constantemente datos a disco lo va a pasar más mal que bien con RAID-5.
Este HOWTO asume que estáis usando Linux 2.4 o superior. De todos modos,
como decíamos antes, es posible usar RAID por software en núcleos 2.2.x
o 2.0.x con los parches RAID y la versión 0.90 de las raidtools. Tanto
los parches como las raidtools deberían de estar disponibles en
http://people.redhat.com/mingo/.
Los que uséis una distribución reciente basada en el núcleo 2.4 o superior
probablemente descubriréis que ya tenéis una versión de las raidtools
compatible con vuestro núcleo.
Next
Previous
Contents