Megacli para Controladoras LSI Bajo Linux
Megacli para Controladoras LSI Bajo Linux
En servidores Linux, a veces necesitamos monitorizar nuestro RAID de discos que estan
bajo controladoras LSI, ya sea el caso de Supermicro con sus LSI Mezzanine (9260)
bajo plataformas 2U TWIN 2, Dell con sus versiones PERC de LSI o las Asus Pike.
Para ello, mostrare una chuleta de la utilidad propietaria y “no-muy-amigable” de LSI,
Megacli.
Adapter #0
==============================================================
===== Versions
================
Product Name : MegaRAID SAS 8704EM2
Serial No : P488060910
FW Package Build: 9.0.1-0034
Mostrar como esta la funcion de autorebuild para los volumenes RAID que
tengamos:
Adapter #0
Ante las eternas preguntas “¿Cuantos discos tiene RAID?“, “¿Que nivel de RAID
tiene este disco?” para las controladoras PERC 5 (PowerEdge Expandable RAID
Controller) de los antiguos 1950 de Dell podemos tener memoria o usar el odioso
megacli.
Las opciones básicas que debemos usar para referirnos a lo que estamos pidiendo son:
-L: Para especificar un disco lógico (un RAID para entendernos). Para indicar
todos podemos usar -LAll
-a: Para indicar un controlador en concreto, en el caso que tengamos varios.
Para el primero debemos usar -a0 y para todos -aAll
Adapter #0
Para ver los datos del disco lógico, como el nivel de RAID o su estado podemos usar la
opción -LDInfo indicando tanto el disco lógico y de que adaptador:
# MegaCli -LDInfo -LAll -aALL
Para ver ambos datos combinados, discos lógicos y sus discos físicos, podemos usar la
opción -LdPdInfo indicando únicamente el adaptador:
Adapter #0
Al añadir unos discos a un servidor podemos reiniciarlo para configurar el nuevo RAID
por el interfaz de la controladora o bien usando el MegaCli. Vamos a ver como hacerlo
con esta herramienta.
El MegaCli no se caracteriza por su fácil manejo ni por lo bien documentado que está.
Todo lo contrario, sus parámetros cuestan de recordar y los errores son poco
descriptivos.
Anteriormente ya vimos cómo ver los discos físicos y lógicos con megacli. Deberemos
listarlos para obtener sus datos mediante PDList. Los datos que necesitamos para
definir el raid es la Enclosure y el Slot por lo que con grep podemos verlo mejor:
# ./MegaCli64 -h
(...)
MegaCli -CfgLdAdd rX[E0:S0,E1:S1,...] -enblPI -aN|-a0,1,2|-aALL
(...)
Adapter 0: Created VD 1
# cat /proc/partitions
major minor #blocks name
8 0 142737408 sda
8 1 4192933 sda1
8 2 8385930 sda2
8 3 130150597 sda3
253 0 14680064 dm-0
253 1 4194304 dm-1
253 2 105906176 dm-2
8 16 292421632 sdb
Resulta útil poder crear particiones en una imagen de un disco, ya sea para máquinas
virtuales como para dispositivos empotrados. Es possible hacerlo mediante un
dispositivo loopback.
Para ver como hacerlo, supongamos que tenemos una imagen como la siguiente:
# fdisk /dev/loop0
Device contains neither a valid DOS partition table, nor Sun, SGI or
OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
WARNING: Re-reading the partition table failed with error 22: Invalid
argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
fdisk nos indica que la nueva partición debería llamarse /dev/loop0p1, pero tal como
indica el mensaje de error:
WARNING: Re-reading the partition table failed with error 22: Invalid argument
Aún se usa la tabla de particiones anterior al particionado, por lo que las particiones
no estan accesibles.
# ls /dev/loop0*
/dev/loop0
Mediante kpartx podemos hacer que lea las particiones y cree dispositivos con sus
particiones:
# kpartx -a /dev/loop0
Por lo que dentro de /dev/mapper econtraremos las particiones que hemos creado con
fdisk:
# ls /dev/mapper/loop0p1
/dev/mapper/loop0p1
Para deshacer el motaje solo hace falta ejecutar estos dos comandos:
# kpartx -d /dev/loop0
# losetup -d /dev/loop0