# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Cómo crear un RAID 1 por software en RHEL y CentOS


raid1Vamos a ver como crear un RAID 1 (espejo) por software entre dos discos extra añadidos a un sistema CentOS o RHEL. Este sistema nos ofrece total redundancia de datos a expensas de utilizar el doble de espacio en disco. En caso de disponer una controladora para hacer el RAID por hardware lógicamente es más recomendable que esta opción, ya que el rendimiento es mucho mejor.

Vamos a partir de la base de que además del disco que engloba el sistema, tenemos dos discos más disponibles para trabajar:

# fdisk -l | egrep -e "hdb|hdd"
Disk /dev/hdb doesn't contain a valid partition table
Disk /dev/hdd doesn't contain a valid partition table
Disk /dev/hdb: 1073 MB, 1073741824 bytes
Disk /dev/hdd: 1073 MB, 1073741824 bytes

Creación del RAID 1

Lo primero que tenemos que hacer es configurar dos particiones, una en cada disco y del tipo RAID AUTODETECT (fd). Aquellos que tengáis dudas con este paso, revisad este artículo: crear y eliminar particiones con fdisk en Linux

Haríamos este paso en ambos discos:

# fdisk /dev/hdd
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.

The number of cylinders for this disk is set to 2080.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2080, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2080, default 2080):
Using default value 2080

Command (m for help): t Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
# partprobe

El resultado hasta el momento sería esto (omitiendo el disco de sistema):

# fdisk -l

Disk /dev/hdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        2080     1048288+  fd  Linux raid autodetect

Disk /dev/hdd: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdd1               1        2080     1048288+  fd  Linux raid autodetect

Ahora ya podemos hacer uso del comando mdadm para crear el RAID 1 entre las particiones configuradas en ambos discos. Especificamos con -v la opción verbose, -C significa la creación del raid seguido del nombre asignado al array /dev/md0 y le indicamos que los dos discos serán activos (-n 2), podríamos asignar discos spare con -x. Finalmente especificamos los dispositivos a configurar en el array (las dos particiones creadas antes) y especificamos que es un RAID 1 con -l 1:

# mdadm -v -C /dev/md0 -n 2 /dev/hdb1 /dev/hdd1 -l 1
mdadm: size set to 1048192K
mdadm: array /dev/md0 started.

Monitorizar y gestionar el RAID

Podemos ver el estado del RAID en cualquier comento con mdadm –detail seguido del RAID a revisar:

# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Sep 27 18:02:46 2011
     Raid Level : raid1
     Array Size : 1048192 (1023.80 MiB 1073.35 MB)
  Used Dev Size : 1048192 (1023.80 MiB 1073.35 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Sep 27 18:03:33 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 9a7817d8:038050a4:82a2f37d:414f679e
         Events : 0.2

    Number   Major   Minor   RaidDevice State
       0       3       65        0      active sync   /dev/hdb1
       1      22       65        1      active sync   /dev/hdd1

En caso de que uno de los discos fallase, habría que sacar del raid el disco fallido y reemplazarlo por otro, con el cual habría que seguir todos los pasos anteriores para prepararlo.

Forzamos el disco como fallido para hacer la prueba:

# mdadm /dev/md0 -f /dev/hdd1
mdadm: set /dev/hdd1 faulty in /dev/md0

Si ahora hicieramos un mdadm -D /dev/md0 veríamos el fallo del disco y el estado degraded:

# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Sep 27 18:02:46 2011
     Raid Level : raid1
...
...
...
          State : clean, degraded
 Number   Major   Minor   RaidDevice State
       0       3       65        0      active sync   /dev/hdb1
       1       0        0        1      removed

       2      22       65        -      faulty spare   /dev/hdd1

Sacamos el disco fallido del raid:

# mdadm /dev/md0 -r /dev/hdd1
mdadm: hot removed /dev/hdd1

Ahora el estado seguiría siendo degraded pero sin el disco fallido, así que sólo quedaría añadir un nuevo disco para que el RAID se reconstruyera:

# mdadm /dev/md0 -a /dev/hdd1
mdadm: re-added /dev/hdd1

Y automáticamente debería activarse el rebuild/recover y sincronizar la información entre ambos discos:

# mdadm -D /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Sep 27 18:02:46 2011
     Raid Level : raid1
     Array Size : 1048192 (1023.80 MiB 1073.35 MB)
  Used Dev Size : 1048192 (1023.80 MiB 1073.35 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Sep 27 18:12:32 2011
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 44% complete

           UUID : 9a7817d8:038050a4:82a2f37d:414f679e
         Events : 0.6

    Number   Major   Minor   RaidDevice State
       0       3       65        0      active sync   /dev/hdb1
       1      22       65        1      spare rebuilding   /dev/hdd1

Eliminar un RAID

Para eliminar un RAID antes hay que pararlo, y posteriormente destruirlo:

# mdadm -vS /dev/md0
mdadm: stopped /dev/md0
# mdadm -vr /dev/md0

A partir de aquí, pues únicamente quedaría dar formato a /dev/md0 con el sistema de ficheros que necesitéis y gestionarlo como un sistema de ficheros normal.

Esquema raid: dis.um.es

Netapp: cómo cambiar el tipo de Raid en un agregado


Existen varias opciones para cambiar el tipo de Raid (raidtype) dentro de un agregado (aggregate) en una cabina de discos Netapp. Podemos hacerlo a través de la interfaz web (FilerView), Netapp System Manager o desde la línea de comandos. En este caso vamos a ver como hacerlo desde línea de comandos. La sintaxis para modificar el Raid es la siguiente:

aggr options <AGREGADO> raidtype <TIPO DE RAID>

Antes conviene revisar el estado del agregado a modificar. En nuestro caso vamos a cambiar el Raid del agregado aggr0 de RAID-DP (doble paridad) a RAID4:

filer> aggr status
           Aggr State           Status            Options
          aggr0 online          raid_dp, aggr     root

Podemos ver el estado de forma extendida pasando el parámetro -r:

filer> aggr status -r
Aggregate aggr0 (online, raid_dp) (block checksums)
  Plex /aggr0/plex0 (online, normal, active, pool0)
    RAID group /aggr0/plex0/rg0 (normal)

      RAID Disk	Device  	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------  	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	0c.00.11	0c    0   11  SA:A   0  SATA  7200 423111/866531584  423946/868242816
      parity  	0c.00.3 	0c    0   3   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.5 	0c    0   5   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.7 	0c    0   7   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.8 	0c    0   8   SA:A   0  SATA  7200 423111/866531584  423946/868242816
      data    	0c.00.10	0c    0   10  SA:A   0  SATA  7200 423111/866531584  423946/868242816
...
...
...

Una vez verificado el estado, podemos proceder a la modificación del Raid:

filer> aggr options aggr0 raidtype raid4
Thu Jul 07 13:23:45 GMT [raid.config.raidsize.change:notice]: Aggregate aggr0: raidsize is adjusted from to after changing raidtype

Aggregate aggr0: raidsize is adjusted from  to  after changing raidtype.

Podés verificar el estado del raid ejecutando de nuevo

aggr status

, seguramente esté reconstruyendo el Raid (rebuilding) y finalmente volverá a estado normal y en Raid 4 tras realizar las tareas pendientes.

HP Smart Array E200i: migración online RAID 0 a RAID 1+0


La controladora Smart Array E200i de HP, utilizada normalmente en servidores HP Proliant DL360 para discos SAS, no permite la migración de un RAID 0 a RAID 1+0 sin perdida de datos ni de disponibilidad a no ser que añadamos a la controladora el kit BBWC (battery backed cache upgrade), la cual también permite la creación de RAID 5.

Suponemos entonces que tenemos el hardware necesario y que la configuración de discos es la siguiente:

  • 1 disco en RAID 0.
  • 1 disco sin asignar.

Lo primero que tendremos que hacer es tener instalado ACU (Utilidad de Configuración de Arrays) y HP System Management. Podéis descargar ambos e instalarlos desde los CD support pack de HP o desde el sitio web. Su instalación es sencilla, en caso de RHEL o CentOS es via RPM.

Una vez instalado, arrancamos en el servidor ambos servicios:

# /usr/sbin/cpqacuxe -R
# /etc/init.d/hpsmhd restart

Bien, entrando al tema, tenemos que acceder a la interfaz web de HPSM, usando la IP o hostname de la máquina y el puerto 2381 (y via HTTPS):

https://192.168.0.222:2381/

HP System Management

 

Accedemos al ACU, Array Configuration Utility y seleccionamos la controladora:

 

hp ACU array configuration utility

 

Una vez dentro, seleccionamos el array/unidad lógica que queremos modificar, en ese caso el array SAS , si la battery backed cache está correctamente instalada y cargada debería aparecer a la derecha la opción “Expandir Array“. También veremos la unidad/disco sin asignar:

 

HP ACU RAID

 

Tras pinchar en “Expandir Array” veremos que aparece ya la posibilidad de añadir el disco sin asignar al array:

 

Expandir array acu

 

Guardamos los cambios y automáticamente veremos el % de progreso de la transformación del RAID:

Transformacion RAID ACU

 

Una vez que finalice, ya tenemos el nuevo disco asignado a la unidad lógica. Llega el momento entonces de migrar el RAID:

 

Migrar RAID HP

 

Tras pinchar ya tendremos la opción de migrar a RAID 1. Automáticamente se seleccionará el Full stripe size de 128K
 
Migrar HP RAID 1 ACU
 

Ya solo queda esperar a que termine la migración de RAID 0 a RAID 1+0. Hemos conseguido realizarlo sin parada de servicio ni perder ningún dato del anterior RAID 0.

Monitorización en Big Brother de Discos y Raid HP Proliant Linux


En la entrada anterior veíamos como configurar el sistema de monitorización Big Brother para que revise si los discos duros SAS/SCSI de servidores HP Proliant en sistemas Windows. Ahora vamos a ver lo mismo pero para Linux.

El script está pensado para sistemas de monitorización Hobbit / XYmon pero en Big Brother parece funcionar sin problemas. En primera instancia lo descargamos desde el sitio web:

hphwraid

Está verificado el correcto funcionamiento en servidores HP ProLiant DL, ML y BL. Los requerimientos para que funcione son:

  • Tener instalado hpacucli
  • Tener instalado sudo
  • Big Brother

Una vez descargado el script lo colocamos en la carpeta “ext/” del cliente Big Brother.

Ejecutamos visudo para permitir al usuario con el que corra bigbrother ejecutar hpacucli:

# visudo

Quitamos el requerimiento de tty:

#Default requiretty

Y permitimos al usuario la ejecución de hpacucli:

bigbrother ALL= NOPASSWD: /usr/sbin/hpacucli

Finalmente añadimos el script al fichero de extensiones bb-bbexttab:

localhost :  : hphwraid.sh

Y reiniciamos el cliente Big Brother. Pasados 5 minutos ya debería comenzar a monitorizarse el estado de discos y RAID del servidor, ejemplo:

green vie jul 9 16:27:27 CEST 2010

Hardware view on SLOT 0
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, 72 GB): OK
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, 72 GB): OK

View from the OS:
logicaldrive 1 (68.3 GB, RAID 1): OK

Monitorización en Big Brother de Discos y Raid HP Proliant Windows


Hoy vamos a configurar el sistema de monitorización Big Brother para que revise si los discos duros SAS/SCSI de servidores HP Proliant están en perfectas condiciones y también el RAID que tengan configurado a través de la controladora.

En este caso vamos a comenzar a configurarlo para un cliente Big Brother Windows (después habrá otro artículo para Linux). En primera instancia descargamos la extensión que añadiremos en la máquina a monitorizar:

CheckHpRaid.cmd

Nota: el script está pensando en primera instancia para “hobbit” pero funciona sin problemas en big brother

Posteriormente lo colocaremos en la carpeta “ext/” del cliente Big Brother, lugar en el que se encuentran los añadidos y extensiones que utilizamos.

Una vez realizado esto accedemos a la consola de gestión del cliente Big Brother y añadimos el script dentro de “Externals list”. Otro punto a tener en cuenta es que para que funcione la ubicación de “”Saved Logs Location” ha de ser la misma que la que hay configurada en el script:

REM Logs location for external scripts (WITH the ending \)
REM This folder must be the same has the one defined in the option
REM "Saved Logs Location" of the Big Brother Client or the tmppath
REM of the BBWin client.
SET _bblogdir=C:\Logs\bbnt\

Guardamos, reiniciamos el cliente Big Brother y tras cinco minutos ya debería haber una nueva columna en el servidor de monitorización con el nombre “raid” y la información de discos y raid, ejemplo:

Everything is working fine 

   Controller: Smart Array E200i
      Channel: 0
Serial number: P688MQ3790       

green logicaldrive 1 (68.3 GB, RAID RAID 1+0): OK  

green physicaldrive 1:1 (box 1:bay 1, 72 GB): OK
green physicaldrive 1:2 (box 1:bay 2, 72 GB): OK

Se me olvidaba comentar que tendréis que tener instalada la “HP Array Configuration Utility CLI” para que la extensión funcione.

Gestión de RAID Array en servidores HP desde Linux


HP, a través de su Proliant Support Pack ofrece una serie de utilidades que permiten gestionar y monitorizar la mayoría del Hardware del equipo en servidores Proliant. En este caso vamos a instalar “HP Array Configuration Utility CLI for Linux“, hpacucli, con la cual podremos monitorizar el estado de los discos duros, el RAID y la controladora.

Descarga de HP Proliant Support Pack
Descarga de HP Array Configuration Utility CLI for Linux

La instalación de hpacucli en equipos RHEL, CentOS, Fedora se realiza directamente con el rpm que nos proporcionan en el Support Pack o en la descarga individual:

# rpm -i hpacucli-8.40-4.0.noarch.rpm 

Una vez instalado, podemos utilizar la aplicación a través del comando hpacucli. Si lo ejecutáis sin ningún parámetro entraréis en una consola sobre la cual comenzar a trabajar, el comando help mostrará todas las opciones:

# hpacucli
HP Array Configuration Utility CLI 8.40-4.0
Detecting Controllers...Done.
Type "help" for a list of supported commands.
Type "exit" to close the console.

=> help

CLI Syntax
   A typical ACU CLI command line consists of three parts: a target device,
   a command, and a parameter with values if necessary. Using angle brackets to
   denote a required variable and plain brackets to denote an optional
   variable, the structure of a typical ACU CLI command line is as follows:

        [parameter=value]

    is of format:
      [controller all|slot=#|wwn=#|chassisname="AAA"|
                  serialnumber=#|chassisserialnumber=#|ctrlpath=#:# ]
      [array all|]
      [physicaldrive all|allunassigned|[#:]#:#|[#:]#:#-[#:]#:#]
      [logicaldrive all|#]
      [licensekey all|]
      Note 1: The #:#:# syntax is only needed for systems that
              specify port:box:bay. Other physical drive targeting
              schemes are box:bay and port:id.
      Note 2: The chassisserialnumber is known in ACU as the
              RAID Array Serial Number. The chassisname is known
              in ACU as the RAID Array ID.
      Note 3: ctrlpath=#:# maps to "smart enclosure hooked up to
              host bus adapter slot:host bus adapter port"

   Example targets:
      controller slot=5
      controller chassisname="Lab C"
      controller serialnumber=P21DA2322S
      controller chassisserialnumber=9J3CJN71XDCH
      controller wwn=500308B300701011
      controller slot=7 array A
      controller slot=5 logicaldrive 5
      controller slot=5 physicaldrive 1:5
      controller slot=5 physicaldrive 1E:2:3
      controller slot=5 licensekey XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

For detailed command information type any of the following:
   help add
   help create
   help delete
   help diag
   help modify
   help remove
   help shorthand
   help show
   help target
   help rescan

Help also accepts commonly used CLI parameters and ACU keywords. Adding
additional keywords will further filter the help output. Examples:
   help ssp        (shows all ssp help including show and modify commands)
   help ssp modify (restricts ssp help to only modify commands)
   help migrate
   help expand
   help extend
   help   ... 

=>

En el siguiente ejemplo vemos el estado de dos discos que forman un RAID 1 en la controladora:

# hpacucli controller slot=0 physicaldrive all show status

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

Para ver el estado de la controladora y su caché:

# hpacucli ctrl all show status

Smart Array E200i in Slot 0 (Embedded)
   Controller Status: OK
   Cache Status: OK

También podréis modificar el RAID, volúmenes lógicos y demás, es cuestión de revisar todas las opciones que incorpora.