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

miércoles, junio 04, 2014

Usando el server SMTP de la UA Alicante para hacer envíos de correo desde mi propio servidor

Tengo varios servidores dentro de la red interna de la Universidad de Alicante y necesitaba que pudieran enviar correo electrónico para poder hacer el seguimiento de su estado o recibir notificaciones.

Como no estaba interesado en convertirlos en servidores completos de correo y sólo quería que pudieran enviar mensajes he usado el propio servidor SMTP de la UA y una cuenta de correo de las institucionales que manejo para la administración.

Las instrucciones son un mix entre la ayuda de postfix, la web del SI y mi propia experiencia.

Primero debería asegurarme que postfix está instalado

$sudo apt-get install postfix

Da igual lo que eligamos en la opción de configuración porque vamos a editar el fichero manualmente después.

Una vez finalizada editamos el fichero /etc/postifix/main.cf y añadimos el siguiente contenido

relayhost = [aitana.cpd.ua.es]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous, noplaintext
smtp_use_tls = yes
myhostname = ua.es
smtp_generic_maps = hash:/etc/postfix/generic
inet_interfaces = loopback-only

relayhost = aitana.cpd.ua.es
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
myhostname = ua.es
smtp_generic_maps = hash:/etc/postfix/generic
inet_interfaces = loopback-only
myorigin = /etc/mailname
mydestination = 
mynetworks = 127.0.0.0/8 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +

inet_protocols = all


  • La primera línea indica el host en el que delegamos el envío de correo
  • La segunda que usaremos autentificación (como exigen las instrucciones del SI)
  • La tercera advierte de dónde se indican los parámetros de usuario y contraseña (y sí, estarán en texto plano aunque protegidos por permisos de lectura) por tanto en el fichero /etc/postfix/sasl_passwd debemos incluir la siguiente línea:
    [aitana.cpd.ua.es]:587    USUARIO@ua.es:CONTRASEÑA
    ...y protegerlo con...
    $sudo chmod 400 /etc/postfix/sasl_passwd
    ...y añádelo el formato postmap con...
    $sudo postmap /etc/postfix/sasl_passwd
  • Cuarta y quinta son parámetros sobre la conexión realizada. La opción noplaintext encripta todo el envío de correo pero parece que ralentiza unos minutos el envío. Considera eliminarla
  • La sexta indica el dominio de la cuenta del usuario que envía el mail. Inprescindible para que los servidores de destino acepten el email (porque lo reconoceran del dominio ua.es)
  • smtp_generic_maps servirá para indicar una serie de alias para la dirección de origen de los correos. Si no aparecerían como NOMBREUSUARIO@NOMBREMAQUINA.es y existen posibilidades de que nos filtren como spam. Crea un archivo /etc/postfix/generic y añade el siguiente contenido:
    @NOMBREMAQUINA.es         USUARIOUA@ua.es
    ...y reconstruyelo como un db con ...
    $sudo postmap /etc/postfix/generic
  • myorigin = /etc/mailname debe contener un dominio real de origen de los correos como:
    aitana.cdp.ua.es
  • inet_interfaces indica que no aceptamos conexiones, no vamos a recibir correo en esta máquina

Después de los cambios en la configuración reinicia el servicio con:
sudo service postfix restart

Prueba la configuración con el siguiente comando:
echo "Texto del mail " | mail -s "Subject del mensaje" direciondestion@ejemplo.com

Puedes comprobar el estado de la cola de envío de tu usuario con mailq. Si todo ha ido correctamente debería aparecer:
$mailq
Mail queue is empty
En caso de error mostrará los mensajes en cola y el problema que tienen.