Combinar LVM con RAID por Software

Posted on diciembre 21, 2007. Filed under: Gestion de Almacenamiento y Copias de Seguridad. |

Combinar la flexibilidad de LVM con la redundancia de RAID es lo mas apropiado para servidores de ficheros criticos.

Las diferentes habilidades proporcionadas por RAID tanto hardware como software se agrupan en lo que se conoce como diferentes niveles RAID, para estar claros de los conceptos y alcances de RAID hagan click aqui.

En los dispositivos RAID nativos no se puede hacer particiones. Por tanto, a menos que optemos por una solucion RAID hardware, los modos de RAID software que le permiten concatenar unidades y crear grandes volumenes no proporcionan la redundancia a la que RAID esta destinado.

Muchas de las soluciones RAID hardware disponibles en placas madres exportan dispositivos RAID sólo como volúmenes individuales, debido a la ausencia en ellas de un software de gestión de volúmenes. Los proveedores de cadenas RAID evitan esto vendiendo cadenas RAID que tienen software integrado (el cual esta a menudo basado en Linux) que soporta la creación de particiones usando un paquete interno LVM.

Sin embargo, podemos hacer esto nosotros mismos añadiendo una capa de LVM Linux sobre los discos RAID en nuestros sistemas; en otras palabras, usando unidades RAID software como volúmenes físicos que asignaremos y exportaremos a nuestro sistema como volumenes lógicos. La combinacion de RAID y LVM nos dara una gestión de almacenamiento flexible, con el cálido y difuso sentimiento de redundancia proporcionado por los niveles RAID como 1, 5.

Crear dispositivos RAID:

Los dispositivos RAID se crean definiéndolos primero en el fichero /etc/raidtab y luego usando el comando mkraid para generar los dispositivos especificados en el fichero de configuración.

Por ejemplo, el siguiente fichero /etc/raidtab define un RAID linear compuesto de los dispositivos físicos /dev/hda6 y /dev/hdb5:

raiddev /dev/md0
raid-level linear
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hda6
raid-disk 0
device /dev/hdb5
raid-disk 1

Ejecutar el comando mkraid para crear el dispositivo /dev/md0 producirá una salida como la siguiente:

# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda6, 10241406KB, raid superblock at 10241280KB
disk 1: /dev/hdb5, 12056751KB, raid superblock at 12056640KB

Si estamos usando unidades que hemos usado anteriormente con otros fines en nuestro sistema, el comando mkraid puede quejarse de encontrar sistemas de ficheros existentes en los discos que está destinando a su nuevo dispositivo RAID. Debemos entonces estar bien seguros que hemos especificado los discos apropiados en nuestro fichero /etc/raidtab, y usamos entonces la opcion -f del comando mkraid para forzarlo a usar las unidades a toda costa.

En este punto, podemos crear nuestro tipo favorito de sistema de ficheros en el dispositivo /dev/md0 usando el comando mkfs y especificando el tipo de sistema de ficheros usando la opcion -t “tipo” apropiada. Tras crear nuestro sistema de fichero, podemos actualizar el fichero /etc/fstab para montar el nuevo volumen donde queramos, y ya está funcionando.

Una cadena de RAID lineal es RAID en su estado mas primitivo, y no es realmente útil ahora que Linux proporciona el maduro soporte de volúmenes lógicos. El fichero de configuración /etc/raidtab para una cadena RAID RAID-1 (espejo) que pone en un espejo el disco con una sola partición /dev/hdb1 usando la partición /dev/hde1, se vería como lo siguiente:

raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hdb1
raid-disk 0
device /dev/hde1
raid-disk 1

Otros niveles de RAID se crean usando el mismo fichero de configuración, pero especificando otros parámetros obligatorios, tales como un tercer disco para los niveles RAID 4 y 5, etc.

Nota: Algo importante a tener en cuenta cuando se crean dispositivos RAID espejo, es la cantidad de carga que estos pondrán en los controladores de dispositivos de su sistema. Cuando creemos dispositivos RAID en espejo, deberiamos intentar siempre poner la unidad y su espejo en controladores separados, de tal manera que ningún controlador se vea inundado por comandos de actualización de disco.

Combinar RAID y LVM

Como se mencionó anteriormente, a los dispositivos RAID no se les pueden hacer particiones. Esto generalmente significa que tenemos que usarlos en su totalidad, como un sistema de ficheros independiente, o que tenemos que usar muchos discos pequeños y crear un fichero de configuración RAID que es maquiavélico en su complejidad. Una mejor alternativa es que podemos combinar las fuerzas de RAID software de Linux con LVM para obtener lo mejor de los dos mundos: la seguridad y redundancia de RAID con la flexibilidad de LVM.

Es importante crear volúmenes lógicos encima del almacenamiento RAID y no a la inversa, ya que el RAID software es mejor apuntando directamente al hardware subyacente; e intentar (por ejemplo) poner en espejo dispositivos lógicos podría estresar su sistema y ralentizar el rendimiento, ya que tanto el RAID como los niveles LVM competirán para intentar averiguar qué debería ser puesto en espejo y dónde.

Combinar RAID y LVM es bastante directo. En vez de crear un sistema de ficheros directamente encima de /dev/md0, defina /dev/md0 como un volumen físico que pueda ser asociado con un grupo de volumen. Entonces creamos los volúmenes lógicos que necesitamos dentro de dicho grupo de volumen, los formateamos como se ha explicado en articulos anteriores y los montamos usandolos entonces en nuestro sistema como mejor nos parezca.

Para expandir nuestro almacenamiento una vez creado este tipo de configuración, añadimos físicamente nuevos dispositivos que nuestro sistema ha creado y reconocido como volumen RAID.

Podemos entonces crear un nuevo volumen físico en el dispositivo resultante, lo añadimos a nuestro grupo de volumen existente, y entonces bien creamos nuevos volúmenes lógicos en ese grupo de volumen o usamos el comando lvextend para incrementar el tamaño de nuestros volúmenes existentes.

He aquí una secuencia de muestra para hacer todo esto (usando el /etc/raidtab en espejo de la sección anterior):

# mkraid /dev/md0

# pvcreate /dev/md0

# vgcreate data /dev/md0

# vgdisplay data | grep “Total PE”

Total PE                     59618

#  lvcreate -n music -l 59618 data

logical volume “music” created

# mkfs -t xfs /dev/data/music

# mount /dev/mapper/data-music  /mnt/music

Estos comandos crean un volumen RAID en espejo llamado /dev/md0 usando el almacenamiento en /dev/hdb1 y /dev/hde1 (los cuales habitan en diferentes controladores).

Asignamos el espacio en /dev/md0 como un volumen fisico, creamos un grupo de volumen llamado data usando este volumen fisico, y creamos entonces un volumen logico llamado music que usara todo el almacenamiento disponible en este grupo de volumen. Los ultimos dos comandos crean entonces un sistema de ficheros XFS en el volumen logico, y montan ese sistema de ficheros en /mnt/music, de tal manera que estara disponible para su uso.

Para asegurarnos que nuestro nuevo volumen logico se monta automaticamente cada vez que arrancamos nuestro sistema, agregaremos entonces la siguiente entrada en nuestro fichero /etc/fstab:

/dev/data/music   /mnt/music   xfs  defaults,noatime   0   0

Nota: Especificar la opcion noatime en las opciones de montaje /etc/fstab para nuestro volumen logico, le dice al sistema de ficheros que no actualice i-nodos cada vez que los ficheros o directorios asociados con ellos sean accedidos.

Mas informacion

Actualizacion de este trabajo:

También podemos crear los RAID con mdadm, simplemente seguimos los siguientes pasos:

  1. Bajamos el paquete mdadm, desde el terminal lanzamos un: aptitude install mdadm
  2. Luego realizamos el RAID en este ejemplo hare un RAID 1:

# mdadm  –create /dev/md0 –level=1 –raid-devices=2  /dev/dm-0  /dev/dm-1

En este ejemplo estoy usando como discos unos dispositivos multipath que pudieran presentarme por medio de un EVA Storage, como en el caso de varios de mis clientes.

Luego de esto, lo que hariamos es observar como va la sincronizacion de los discos y si en realidad se creo el RAID usando el comando mdadm de la siguiente forma:

# mdadm –detail  ./dev/md0

En donde /dev/md0 es el multiple device creado para gestionar los dos discos que nos serviran para el RAID1 que creamos anteriormente.

Posterior a esto, podemos crear sobre el dispositivo /dev/md0 los Phisical Volume, nuestro Volume Group, y Logical Volume como deseemos, o simplemente integrar estos discos en un Volume Group existente, sea como sea ya podemos usar nuestro RAID.

Mucha suerte y espero lo disfruten.

Make a Comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

4 comentarios to “Combinar LVM con RAID por Software”

RSS Feed for Unix – Linux Tips & Tricks Comments RSS Feed

excelente texto, muchas gracias!

Por nada es la intensión, seguir buscando material y colocandolo en mis tiempos libres, tengo tiempo que no toco el blogspot….

Hola, queria sever si puedo hacer esto pero con un raid0 por mdadm y si de poder hacerlo tendria la misma velosidad que tengo en un raid 0 sin lvm, y por otra parte, tener raid0 y lvm ocuparia mucho procesador? Gracias, y buen post +10

¿Resolviste esto?, apenas hoy me estoy dando cuenta de este post. Mil disculpas.


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

A %d blogueros les gusta esto: