Añadir un disco a un RAID 5 en Linux y controladora HP Smart Array

25 julio 2011 in General, Linux

En la empresa tenemos un servidor HP Proliant ML350 con tres discos duros SAS de 72 Gb en RAID 5, con un total de 140 Gb.

Recientemente nos hemos quedado sin espacio en disco y hemos decidido ampliarlo añadiendo al RAID otro disco de 72 Gb.

El proceso no es sencillo, pues sobre el RAID hay montado un sistema de volúmenes lógico con LVM2 y dentro de él hay una partición ext3.

Es muy recomendable tener una copia de seguridad por lo que pueda pasar. Yo he hecho antes un clon, sobre un disco externo usb, de las dos particiones que tengo con la utilidad “clone2fs

Vamos a empezar con la utilidad de linea de comandos hpacucli que proporciona HP en sus servidores Proliant.

# hpacucli ctrl all show

 

Smart Array E200i in Slot 0 (Embedded) (sn: QT89MP3239 )

Con la orden anterior obtenemos que la controladora se encuentra en el slot 0.
Ahora hacemos:
# hpacucli ctrl all show config
Smart Array E200i in Slot 0 (Embedded)

array A

physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 72 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 72 GB, OK)
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 72 GB, OK)

 

unassigned
physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 72 GB, OK)

Vemos que se detecta correctamente el disco que se ha añadido al servidor en la bahía número 4 y que no está asignado.
Lo asignamos al array A junto con los otros tres con la orden:
# hpacucli ctrl slot=0 array A add drives=1I:1:4

Ahora la controladora de disco comenzará a reorganizar el RAID 5 incorporando el nuevo disco. Con la orden "hpacucli ctrl slot=0 ld 1 show" podemos ir revisando el progreso de la reorganización.
Cuando haya terminado (tardará algunas horas), ampliaremos el tamaño del array A con la orden: "hpacucli ctrl slot=0 ld 1 modify size=max“.
A continuación habrá que reiniciar el servidor para que se entere del nuevo tamaño del disco (puede que haya otra forma de avisar al sistema operativo del nuevo tamaño, pero en este momento la desconozco).
Ahora tenemos un disco de mayor tamaño, pero las particiones que contiene siguen teniendo el mismo tamaño. En mi caso, tenia dos particiones: /dev/cciss/c0d0p1 y /dev/cciss/c0d0p2. La primera formateada con ext3 y punto de montaje “/boot” y la segunda con LVM2 asignada a “/”. Esta última es un volúmen lógico (VolGroup00) con dos particiones (LogVol00 para “/” y LogVol01 para swap). La idea es aumentar LogVol00 que es donde reside el sistema de ficheros. Para ello hay que hacer más grande la partición física /dev/cciss/c0d0p2. El programa gparted no lo puede hacer porque no tiene soporte para particiones formateadas con LVM2, así que habrá que hacerlo a mano.
Antes, por precaución he hecho una copia del MBR por si necesitara restaurarlo.
Lo que viene a continuación lo podemos hacer porque se dan dos condiciones favorables. La primera es que la partición que queremos ampliar es la última del disco, que tiene un inicio en el cilindro siguiente en el que termina la primera partición y tiene como cilindro final el último que había disponible en el disco antes de ampliarlo. La segunda condición es que sólo nos hace falta incrementar este último cilindro final para que la segunda y ultima partición crezca hasta el final del disco.
Entramos con “fdisk /dev/cciss/c0d0", borramos la partición 2 (c0d0p2), la creamos de nuevo con los valores por defecto, cambiamos el tipo a 8e (LVM), grabamos los cambios y salimos. Ya sé que esto es arriesgado y más con el servidor en marcha, pero ha funcionado a la perfección. Linux no deja de asombrarme, y cada día más, cuando hago este tipo de cosas :-) .
Con la orden “partprobe” avisamos al sistema operativo del cambio de tamaño de la partición. Tanto con fdisk como con gparted ya veo el nuevo tamaño.
Antes de continuar reinicio el servidor para asegurarme de que todo lo hecho hasta el momento funciona correctamente.
A continuación vamos a reconfigurar el sistema LVM para adaptarlo al nuevo tamaño.
Empezamos con “pvresize /dev/cciss/c0d0p2” para cambiar el tamaño del volumen físico. Podemos verificar que ha ido bien con “pvscan“.
Con “vgdisplay” veremos el nuevo espacio disponible (Free PE / Size). En mi caso me aparecen 68,34 Gb libres.
Ahora, aumentamos el tamaño del volumen lógico con la orden: “lvextend -L +68,34G /dev/mapper/VolGroup00-LogVol00“. Y de nuevo, podremos verificar el resultado con “vgdisplay” confirmando que VolGroup00 ha crecido y ya no queda más espacio físico disponible.
Ahora ya sólo nos queda un último paso, el sistema de ficheros ext3 que tenemos en LogVol00 aún tiene el tamaño original, así que hay que ampliarlo con la orden “resize2fs /dev/mapper/VolGroup00-LogVol00“.
Si todo ha ido bien, con “df -h” veremos ya ampliado el espacio en disco de nuestro servidor.
Una vez más, reinicio el servidor para asegurarme de que todo va bien, ya no sólo por el trabajo que acabo de hacer, sino para asegurarme también que si se va la luz (cosa muy frecuente por aquí) el servidor arrancará correctamente cuando vuelva.

Sigo pensando que se podría realizar todo el proceso online y sin reiniciar el servidor. ¿Alguno de vosotros lo ha probado y conseguido?.

Leave a reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WP Hashcash

Cerrar
E-mail It