viernes, junio 06, 2014

Añadiendo un RAID 1 a una instalación de ubuntu 14.04 preexistente

Vamos a añadir dos discos de 1TB formando un RAID 1 a un servidor que ya tiene instalado previamente un disco de 140GB con su sistema operativo Ubuntu 14.04.

Me he inspirado en estos dos artículos

http://feeding.cloud.geek.nz/posts/setting-up-raid-on-existing/
http://www.guia-ubuntu.com/index.php?title=Crear_una_Software_RAID

Preliminares
Son dos discos WD SATA de 1TB, instalados normalmente y comprobado que están disponibles con
lsblk. Los ha identificado como /dev/sdb y /dev/sdc

Al pasarle el fdisk me ha dicho que no estaban alienados correctamente (más información en este artículo)

Solucionado con el comando:
sudo fdisk -H 224 -S 56 /dev/sdb (seguido de 'w' cuando nos pregunte para confirmar los cambios)
sudo fdisk -H 224 -S 56 /dev/sdc

Asegurarse de que tenemos todo el software instalado con
sudo apt-get install mdadm rsync initramfs-tools

Iniciamos

Creo las particiones (en mi caso una única partición primaria con todo el disco) con
sudo fdisk -/dev/sdb

  • m para ayuda
  • n nueva particin
  • p de primaria
  • valores predeterminados para el resto
  • 1
  • t para indicar el tipo
  • L para listar
  • fd para Linux Raid Auto


Como lo he hecho varias veces durante las prueba al final he usado cfdisk, una alternativa mucho más interactiva y fácil.

Una vez creadas las particiones creamos el RAID con

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Aceptamos y empieza a crearlo en segundo plano. Podemos consultar el estado con:
$cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdc1[1] sdb1[0]
      972725056 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.8% (8456320/972725056) finish=82.6min speed=194392K/sec

Tomate un cafetín o dos que la cosa va para rato

Finalizada la creación del RAID hay que formatearlo. Asegúrate de que identificador de dev le ha asignado:
$ sudo mkfs.ext4 /dev/md0

Y finalmente preparamos en el montaje
$sudo mkdir /media/raid

Editamos el fichero /etc/fstab y añadimos
/dev/md0        /media/raid     ext4    defaults,       0       0

Con sudo mount -a nos deja montadas todas las particiones

Ya puedes crear las carpetas que desees en el RAID ten en cuenta el tema de los permisos para saber si los usuarios podrán escribir en ellas.

...y reinicia... para encontrar un error :-(

Por alguna razón Como no había guardado la configuración del RAID no encuentra el dispositivo /dev/md0 así que me salto el montaje y cuando ejecuto
$ sudo mdadm --detail --scan
ARRAY /dev/md/woody:0 metadata=1.2 name=woody:0 UUID=230eecee:2560d588:bf244ba0:f0adfdd8

...me encuentro con el que el dispositivo ha pasado a ser /dev/md/woody:0.

El caso es que no es mucho problema puesto que el RAID sigue existiendo con otro nombre. Modifico el /etc/fstab
/dev/md/woody:0 /media/raid ext4 defaults 0 0

...y en previsión de futuros errores y para que se guarde correctamente la configuración  (aunque Ubuntu autodetecta los RAIDs al arrancar) algo lo siguiente. Añadir al /etc/mdadm/mdadm.conf los dispositivos usados

DEVICE /dev/sdb* /dev/sdc*  
 (verás que la línea está comentada)

...y también añadimos los datos de los arrays creados (es conveniente que te pases a root y no lo hagas con sudo, puede darte problemas)
mdadm --detail --scan >> /etc/mdadm/mdadm.conf  

Por último y para dejarlo fino del todo lanzamos la reconfiguración de mdadm para que seleccionar chequeos periódicos, la dirección email donde tiene que enviar los avisos...
sudo dpkg-reconfigure mdadm

Esto último instalará un proceso del tipo mdadm --monitor --scan --daemonize que chequeara los discos e irá enviando informes por corre electrónico. Para estar seguro de que funciona correctamente tienes que tener instalado y configurado correctamente postfix. Para probarlo puedes hacer un kill al proceso mdadm --monitor arrancado y probarlo manualmente con:

$ sudo mdadm --monitor /dev/md0 --test --mail=tumail@ejemplo.com

Eso dejará el proceso arrancado y a los pocos minutos deberías recibir un correo electrónico. Si no es así primero deberás comprobar que el postfix esta correctamente configurado.

Podemos instalar adicionalmente las smartmoontols y programar un chequeo periódico para detectar la degradación de los discos (por si tienen tasas de fallo demasiado elevadas)

$ sudo apt-get install smartmontools
$ sudo smartctl -d sat --all /dev/sdb #test basico para discos SATA

...y lo instalamos para que semanalmente realice un chequeo y envíe un correo en caso de problemas
# new test to RAID involved disks with mailing
/dev/sdb -d sat -o on -S on -s (S/../.././02|L/../../6/03)  -m USUARIOCORREO@EJEMPLO.COM
/dev/sdc -d sat -o on -S on -s (S/../.././02|L/../../6/03)  -m USUARIOCORREO@EJEMPLO.COM


También existe un GUI que podemos usar (si conectamos por ssh activa la opcion -X)
$ sudo apt-get install gsmartcontrol
$ sudo gsmartcontrol


Algunos comandos útiles


Si dejamos de detectar el RAID en algún momento
sudo mdadm --detail --scan

Para detener y eliminar un RAID si no lo hemos configurado correctamente
sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0 (no ha sido necesario en mi caso)
Para eliminar los superblock
sudo mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1 (particiones involucradas)

Monitorizar el estado del RAID
cat /proc/mdstat  o sudo mdadm --query /dev/md0 o sudo mdadm --detail /dev/md0

Similar para monitorizar el estado de los discos
sudo mdadm --query /dev/sdb1 o sudo mdadm --examine /dev/sdb1

Probando performance del disco
http://askubuntu.com/questions/87035/how-to-check-hard-disk-performance

3 comentarios:

  1. Excelente Post, me ayudo muchisimo.

    ResponderEliminar
  2. Yo tengo un servidor con Ubuntu 14.04 todo corre en disco de 320 GB, y trabaja perfecto, yo quiero hacer un RAID1 con dos discos WD de 1TB c/u , y eliminar el disco de 320 GB, pero mantener todo el server igual en los nuevos discos, será que con este procedimiento puedo lograr lo que deseo?

    ResponderEliminar
  3. No. Este proceso te permite añadir un disco raid a un servidor que ya funciona y el que quedará una carpeta (/media/raid/) que correponde dcon el RAID. Lo que tu quieres está descrito en el primer artículo que he usado como referencia: https://feeding.cloud.geek.nz/posts/setting-up-raid-on-existing/

    ResponderEliminar