Software RAID Como
Software RAID Como
Software RAID Como
1. Introduccin
1.1 Renuncia de responsabilidad
1.2 Requisitos
2. Por qu RAID?
2.1 Detalles tcnicos
2.2 Trminos
2.3 Niveles RAID
2.3.1 Discos de reserva
2.4 Espacio de intercambio (
3. Asuntos hardware
3.1 Configuracin IDE
3.2 Cambio de discos en
3.2.1 Intercambio en
3.2.2 Intercambio en
3.2.3 Intercambio en
caliente
caliente
caliente
caliente
(
de dispositivos IDE
(
con SCA
4. Configuracin de RAID
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Configuracin general
Modo lineal
RAID-0
RAID-1
RAID-4
RAID-5
El superbloque persistente
Tamaos de segmento unitario
4.8.1 RAID-0
4.8.2 RAID-1
4.8.3 RAID-4
4.8.4 RAID-5
4.9 Opciones de
4.10 Autodeteccin
4.11 Arrancar desde RAID
4.11.1 Mtodo 1
4.11.2 Mtodo 2
4.12 Dificultades
5. Comprobacin
5.1 Simulacin de un fallo de disco
5.2 Simulacin de corrupcin de datos
6. Rendimiento
6.1
6.2
6.3
6.4
RAID-0
RAID-0 con TCQ
RAID-5
RAID-10
7. Agradecimientos
8. Anexo: El INSFLUG
______________________________________________________________________
1. Introduccin
Puede haber muchas buenas razones para usar RAID. Unas pocas son: la
posibilidad de combinar varios discos fsicos en un nico dispositivo
virtual ms grande, o mejoras en el rendimiento y redundancia.
2.1. Detalles tcnicos
El RAID de Linux puede funcionar sobre la mayora de los dispositivos
de bloque. No importa si usa dispositivos IDE, SCSI o una mezcla de
ambos. Incluso algunas personas han usado dispositivo de bloque en
red (Network Block Device, NBD) con diferentes grados de xito.
Asegrese de que el bus (o buses) de los discos son lo suficientemente
rpidos. No debera tener 14 discos UW-SCSI en un nico bus UW, si
cada disco puede dar 10MB/s y el bus slo puede sostener 40MB/s.
Adems, slo debera tener un dispositivo por bus IDE. El uso de
discos como maestro/esclavo es funesto para el rendimiento. IDE es
realmente ineficiente accediendo a ms de un disco por bus.
Naturalmente, todas las placas madre modernas tienen dos buses IDE,
por lo que puede configurar dos discos en RAID sin comprar ms
tarjetas controladoras.
La capa RAID no tiene absolutamente nada que ver con la capa del
sistema de ficheros. Puede poner cualquier sistema de ficheros sobre
un dispositivo RAID, tal y como hara con cualquier otro dispositivo
de bloques.
2.2. Trminos
La palabra RAID se refiere a RAID por software de Linux. Este CMO no
trata ningn aspecto de RAID por hardware.
Cuando se describen configuraciones, es til referirse al nmero de
discos y sus tamaos. En todos los casos se usa la letra N para
denotar el nmero de discos activos en el array (sin contar los discos
de reserva). La letra S es el tamao del disco ms pequeo 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 rpidos, lo cual no siempre
puede ser cierto.
Note que se asume que las palabras dispositivo y disco significan lo
mismo. Normalmente, los dispositivos usados para construir un
dispositivo RAID son particiones de discos, no necesariamente discos
enteros. Pero, normalmente, combinar varias particiones de un mismo
disco no tiene sentido, por lo que las palabras dispositivo y disco
simplemente significan particiones de discos diferentes.
2.3. Niveles RAID
Lo siguiente es una breve descripcin de lo que soportan los parches
RAID de Linux. Parte de esta informacin es informacin RAID
absolutamente bsica, aunque he aadido unas pocas reseas de lo que
hay de especial en la implementacin de Linux de los niveles.
/dev/sda2
/dev/sdb2
/dev/sdc2
/dev/sdd2
/dev/sde2
/dev/sdf2
/dev/sdg2
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
defaults,pri=1
defaults,pri=1
defaults,pri=1
defaults,pri=1
defaults,pri=1
defaults,pri=1
defaults,pri=1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
rendimiento.
Resistencia a los fallos: la controladora IDE normalmente sobrevive
a un dispositivo IDE que ha fallado. La capa RAID marcar el disco
como defectuoso y, si est trabajando con un RAID de nivel 1 o
superior, la mquina debera trabajar igual de bien hasta que la
desconecte para su mantenimiento.
Es muy importante que slo use un disco IDE por bus IDE. Dos discos
no slo arruinaran el rendimiento sino que, tambin, el fallo de un
disco a menudo garantiza el fallo del bus y, por tanto, el fallo de
todos los discos de ese bus. En una configuracin RAID tolerante a
fallos (RAID de niveles 1, 4, 5) el fallo de un disco se puede
manejar, pero el fallo de dos discos (los dos discos del bus que ha
fallado debido a uno de ellos) dejar el array inutilizable. Tambin,
el dispositivo esclavo o la controladora IDE de un bus pueden
confundirse de manera horrible cuando el dispositivo maestro del bus
falla. Un bus, un disco, esa es la regla.
Existen controladoras IDE PCI baratas. A menudo puede obtener 2 o 4
buses por unos 80 dlares. Considerando el precio mucho ms bajo de
los discos IDE respecto a los discos SCSI, dira que un array de
discos IDE podra ser una solucin realmente buena si uno puede vivir
con los relativamente pocos discos (unos 8 probablemente) que se
pueden conectar a un sistema tpico (a menos que, naturalmente, tenga
muchas ranuras PCI para dichas controladoras IDE).
3.2. Cambio de discos en caliente ( Hot-Swap )
ste ha sido un tema de actualidad en la lista linux-kernel durante
algn tiempo. Aunque el intercambio en caliente de los dispositivos
est soportado hasta cierto punto, todava no es algo que se pueda
hacer fcilmente.
3.2.1. Intercambio en caliente de dispositivos IDE
No lo haga! IDE no soporta en modo alguno el intercambio en caliente.
Seguro, puede funcionar para usted si compila el soporte IDE como
mdulo (slo posible en la serie 2.2.x del ncleo) y lo vuelve a
cargar despus de que haya reemplazado el dispositivo. Pero tambin
puede terminar perfectamente con una controladora IDE frita y
observar que el perodo de dicho sistema fuera de servicio ser mucho
mayor que habiendo reemplazado el dispositivo con el sistema apagado.
El principal problema, aparte de los aspectos elctricos que pueden
destruir su hardware, es que se debe reexplorar el bus IDE despus de
que se hayan intercambiado los discos. El manejador IDE actual no
puede hacer eso. Si el nuevo disco es 100% idntico al antiguo
(geometra, etc.) puede que funcione incluso sin volver a explorar el
bus pero, crame, aqu est caminando por el filo de la navaja.
3.2.2. Intercambio en caliente ( Hot-Swap ) de dispositivos SCSI
El hardware SCSI normal tampoco es capaz de soportar intercambios en
raiddev /dev/md0
raid-level
linear
nr-raid-disks 2
persistent-superblock 1
device
/dev/sdb6
raid-disk
0
device
/dev/sdc5
raid-disk
1
mkraid /dev/md0
raiddev /dev/md0
raid-level
0
nr-raid-disks 2
persistent-superblock 1
chunk-size
4
device
/dev/sdb6
raid-disk
0
device
/dev/sdc5
raid-disk
1
mkraid /dev/md0
raiddev /dev/md0
raid-level
1
nr-raid-disks 2
nr-spare-disks 0
chunk-size
4
persistent-superblock 1
device
/dev/sdb6
raid-disk
0
device
/dev/sdc5
raid-disk
1
device
spare-disk
/dev/sdd5
0
device
spare-disk
/dev/sdf1
0
como de costumbre.
Su array se puede inicializar con la orden
mkraid /dev/md0
como es habitual.
Debera ver la seccin ``'' de opciones especiales de mke2fs antes de
formatear el dispositivo.
4.6. RAID-5
Tiene tres o ms dispositivos de aproximadamente el mismo tamao,
quiere combinarlos en un dispositivo mayor, pero conservando todava
cierto grado de redundancia para la seguridad de datos. Finalmente,
tiene varios dispositivos para usar como discos de reserva, que no
tomarn parte en el array antes de que otro dispositivo falle.
Si usa N dispositivos donde el tamao del ms pequeo es S, el tamao
de todo el array ser (N-1)*S. El espacio que falta se usa para
informacin de paridad (redundancia). De esta manera, si cualquier
disco falla, todos los datos permanecern intactos. Pero si dos discos
fallan, todos los datos se perdern.
Configure el fichero /etc/raidtab as:
raiddev /dev/md0
raid-level
5
nr-raid-disks 7
nr-spare-disks 0
persistent-superblock 1
parity-algorithm
left-symmetric
chunk-size
32
device
/dev/sda3
raid-disk
0
device
/dev/sdb1
raid-disk
1
device
/dev/sdc1
raid-disk
2
device
/dev/sdd1
raid-disk
3
device
/dev/sde1
raid-disk
4
device
/dev/sdf1
raid-disk
5
device
/dev/sdg1
raid-disk
6
device
spare-disk
/dev/sdh1
0
Y as sucesivamente.
Un tamao de segmento de 32KB es un buen valor por defecto para muchos
sistemas de ficheros de propsito general de estas proporciones. El
array sobre el que se utiliza el raidtab anterior es un dispositivo de
7 por 6 GB = 36 GB (recuerde que (N-1)*S = (7-1)*6 = 36). Contiene un
sistema de ficheros ext2 con un tamao de bloque de 4KB. Podra
incrementar tanto el tamao del segmento unitario del array como el
tamao de bloque del sistema de ficheros si su sistema de ficheros
fuera o bien mucho mayor o bien si simplemente contuviera ficheros muy
grandes.
Vale, ya hemos hablado bastante. Configure el fichero /etc/raidtab y
veamos si funciona. Ejecute la orden
mkraid /dev/md0
raidstop /dev/md0
raidstart /dev/md0,
respectivamente.
En lugar de colocar stos en ficheros de inicio y rearrancar un nmero
astronmico de veces hasta hacer que funcione, siga leyendo y haga
funcionar la autodeteccin.
4.7. El superbloque persistente
Si volviramos a aquellos maravillosos das (The Good Old Days (TM)),
las herramientas RAID (raidtools) leeran su fichero /etc/raidtab y a
continuacin inicializaran el array. Sin embargo, esto requerira que
el sistema de ficheros sobre el que reside /etc/raidtab estuviera
montado. Esto es imposible si quiere arrancar a partir de un RAID.
Tambin, la anterior aproximacin produca complicaciones al montar
sistemas de ficheros sobre dispositivos RAID. stos no se podan
colocar en el fichero /etc/fstab como era usual, sino que tenan que
ser montados en los guiones (scripts) de inicio.
Los superbloques persistentes solucionan estos problemas. Cuando un
array se inicializa con la opcin persistent-superblock en el fichero
/etc/raidtab, se escribe un superbloque especial al principio de todos
los discos participantes en el array. Esto permite al ncleo leer la
configuracin de los dispositivos RAID directamente de los discos
involucrados, en lugar de leerla de algn fichero de configuracin que
puede no estar disponible en todo momento.
Sin embargo, todava debera mantener un fichero /etc/raidtab
consistente, ya que puede necesitar este fichero para una
reconstruccin posterior del array.
Los superbloques persistentes son obligatorios si desea la
autodeteccin de sus dispositivos RAID durante el arranque del
sistema. Esto se describe en la seccin ``''.
dispositivo.
Si sigue los pasos 1, 2 y 3 de arriba, la autodeteccin debera
activarse. Pruebe rearrancar. Cuando el sistema se levante, vea el
contenido de /proc/mdstat; debera decirle que su RAID est
funcionando.
Durante el arranque, podra ver mensajes similares a stos:
db1>
Oct 22 00:51:59 malthe kernel: SCSI device sdg: hdwr sector= 512
bytes. Sectors= 12657717 [6180 MB] [6.2 GB]
Oct 22 00:51:59 malthe kernel: Partition check:
Oct 22 00:51:59 malthe kernel: sda: sda1 sda2 sda3 sda4
Oct 22 00:51:59 malthe kernel: sdb: sdb1 sdb2
Oct 22 00:51:59 malthe kernel: sdc: sdc1 sdc2
Oct 22 00:51:59 malthe kernel: sdd: sdd1 sdd2
Oct 22 00:51:59 malthe kernel: sde: sde1 sde2
Oct 22 00:51:59 malthe kernel: sdf: sdf1 sdf2
Oct 22 00:51:59 malthe kernel: sdg: sdg1 sdg2
Oct 22 00:51:59 malthe kernel: autodetecting RAID arrays
Oct 22 00:51:59 malthe kernel: (read) sdb1's sb offset: 6199872
Oct 22 00:51:59 malthe kernel: bind<sdb1,1>
Oct 22 00:51:59 malthe kernel: (read) sdc1's sb offset: 6199872
Oct 22 00:51:59 malthe kernel: bind<sdc1,2>
Oct 22 00:51:59 malthe kernel: (read) sdd1's sb offset: 6199872
Oct 22 00:51:59 malthe kernel: bind<sdd1,3>
Oct 22 00:51:59 malthe kernel: (read) sde1's sb offset: 6199872
Oct 22 00:51:59 malthe kernel: bind<sde1,4>
Oct 22 00:51:59 malthe kernel: (read) sdf1's sb offset: 6205376
Oct 22 00:51:59 malthe kernel: bind<sdf1,5>
Oct 22 00:51:59 malthe kernel: (read) sdg1's sb offset: 6205376
Oct 22 00:51:59 malthe kernel: bind<sdg1,6>
Oct 22 00:51:59 malthe kernel: autorunning md0
Oct 22 00:51:59 malthe kernel: running: <sdg1><sdf1><sde1><sdd1><sdc1><s
Oct 22 00:51:59 malthe kernel: now!
Oct 22 00:51:59 malthe kernel: md: md0: raid array is not clean -starting background reconstruction
cd /
find . -xdev | cpio -pm /mnt/newroot
un
Por
se
es
|
|4k
|4k
|8k
|8k
|16k
|16k
|16k
|32k
|32k
|
|
|
|
|
|
|
|
|
|
| 1k
| 19712
| 18035
| 4k
| 34048
| 27061
| 1k
| 19301
| 18091
| 4k
| 33920
| 27118
| 1k
| 19330
| 18179
| 2k
| 28161
| 23682
| 4k
| 33990
| 27229
| 1k
| 19251
| 18194
| 4k
| 34071
| 26976
7. Agradecimientos
Las siguientes personas han contribuido a la creacin de este
documento:
Ingo Molnar
Jim Warren
Louis Mandelstam
Allan Noah
Yasunori Taniike
La gente de la lista de correo Linux-RAID
El que se me olvida, lo siento :)
Por favor, enve correcciones, sugerencias, etc. al autor. Es la nica
forma en que este CMO puede mejorar.
Enve correcciones, sugerencias, etc. sobre esta traduccin al espaol
a Juan Piernas Cnovas (piernas@ditec.um.es).
8. Anexo: El INSFLUG
El INSFLUG forma parte del grupo internacional Linux Documentation
Project, encargndose de las traducciones al castellano de los Howtos
(Comos), as como la produccin de documentos originales en aquellos
casos en los que no existe anlogo en ingls.
En el INSFLUG se orienta preferentemente a la traduccin de documentos
breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
:) ), etc.
Dirjase a la sede del INSFLUG para ms informacin al respecto.
En la sede del INSFLUG encontrar siempre las ltimas versiones de las
traducciones oficiales: www.insflug.org. Asegrese de comprobar
cul es la ltima versin disponible en el Insflug antes de bajar un
documento de un servidor rplica.
Adems, cuenta con un sistema interactivo de gestin de fe de erratas
y sugerencias en lnea, motor de bsqueda especfico, y ms servicios
que estamos trabajando incesantemente para aadir.
Se proporcionar tambin una lista de los servidores rplica (mirror)
del Insflug ms cercanos a Vd., e informacin relativa a otros
recursos en castellano.
en http://www.insflug.org/insflug/creditos.php3 cuenta con una
detallada relacin de las personas que hacen posible tanto esto como
las traducciones.
Dirjase a http://www.insflug.org/colaboracion/index.php3 si desea
unirse a nosotros.
Francisco Jos Montilla, pacopepe@insflug.org.