viernes, 16 de julio de 2010

Openfiler: instalación en un disco USB

Voy a explicaros cómo lo hice para instalar un sistema Openfiler en un disco USB. No es difícil, y siempre es recomendable que tengáis una copia de ese USB por si pasa algo, además de un backup de la configuración por si tenéis que restaurar. Podéis hacer el backup de la configuración desde el acceso web para la administración. Guardadlo como oro en paño!

Lo primero de todo es tener un USB (a ser posible dos, iguales, de la misma capacidad y hasta de la misma marca, pero para empezar con uno ya hacemos), un CD con la última versiòn de Openfiler (yo lo he hecho con openfiler-2.3-x86_64-disc1) y el backup del último openfiler que tuvísteis, si es que vais a volver a configurarlo igual. Una vez tengáis esto, vamos a por faena.


* Conecta el disco USB y deshabilita todos los discos duros o volúmenes RAID si es posible (es posible que no; ve con cuidado durante la instalación)

* Arranca el sistema desde el CD de instalación Openfiler.

* En el prompt de inicio, escribe "expert", e Intro.

* Tendrás que configurar las particiones manualmente. Yo he utilizado un USB de 4Gb (que al montarlo ha quedado como sda), y hemos definido tres particiones:
/ → 2.9 Gb
/boot → 100 Mb
swap → 1Gb
En alguna ocasión hemos tenido algún tipo de problema con el número de heads y cilinders, lo que al final se ha traducido como un error del propio USB que se ha resuelto cambiándolo, por más seguridad (aunque tras instalar el SO, lo hemos dejado de backup)

* Continua con la instalación. Configura la IP, la máscara, DNS y PE, mejor no dejarlo por DHCP.
Llegarás al punto en que el sistema empieza con la instalación. Tómatelo con calma, tarda bastante para lo que es. Antes de llegar a este puto "de no retorno", navega hacia atrás y comprueba que los datos (sobre todo los discos que se van a formatear) son los correctos.
Cuando acabe, reinica. Te devolverá un error tipo Kernel Panic, pero no pasa nada.

* Reinicia de nuevo y arranca con el CD de Openfiler, y teclea "linux rescue" en el prompt. Cuando te pregunte si quieres arrancar el sistema de red, di que no (no hace falta), y cuando llegues al siguiente menú, selecciona "Skip". Esto te devuelve al prompt del sistema.

* Vamos a montar el sistema de archivos en /mnt/source (si no existe, crea el directorio antes)
mount /dev/sda1 /mnt/source

(donde sda1 es el sistema de archivos que contienen la / del sistema que acabamos de instalar)
Después montamos el directorio donde van los archivos de arranque (/boot) de manera que tenemos todo el sistema del pendrive montado
mount /dev/sda2 /mnt/source/boot

(donde sda2 es el sistema de archivos que contienen el /boot)
chroot /mnt/source

Vamos a crear el nuevo initrd.gz para poder arrancar desde USB
cp /boot/initrd­2.x.x.img /tmp/initrd.gz
gunzip /tmp/initrd.gz
mkdir /tmp/a
cd /tmp/a
cpio ­i < /tmp/initrd

Editamos el archivo init vi init y lo modificamos de la siguiente manera: buscamos 'insmod/lib/sd_mod.ko' y debajo, añandimos
insmod /lib/ehci­hcd.ko insmod
/lib/uhci­hcd.ko
sleep 5
echo “Loading USB Storage Drivers”
insmod /lib/usb­storage.ko
sleep 8

y guardamos.

* Continuamos, vamos a mover los drivers necesarios a la carpeta /lib de nuestro initrd.
cd /lib/modules/`uname ­r`/kernel/drivers
cp usb/storage/usb­storage.ko /tmp/a/lib/
cp usb/host/ehci­hcd.ko /tmp/a/lib/
cp usb/host/uhci­hcd.ko /tmp/a/lib/
cp scsi/sr_mod.ko /tmp/a/lib/


* Y ahora vamos a crear el initrd para arrancar nuestro sistema
cd /tmp/a
find . | cpio ­c ­o | gzip ­9 > /boot/usbinitrd.img


* Ya lo tenemos. Reconfiguramos nuestro grub, y editamos
vi /boot/grub/grub.conf

y buscamos la línea que hace referencia al antiguo initr y lo cambiamos por el nuestro (copia la línea y coméntala, y en la que queda descomentada cambia)
/initrd­x.x.x.x.x.img

por
/usbinitrd.img

Guardamos, salimos y reiniciamos. El Openfiler ya está instalado y funcionando desde USB.

* Ahora vamos a configurar las unidades iSCSI; para ello copiamos el siguiente script en
cd /tmp
vi volumes.sh

y copiamos dentro el script
(Nota: No es válido para sistemas de archivos XFS))
[[ Fuente: https://forums.openfiler.com/viewtopic.php?pid=16587 ]]

#!/bin/bash
# strip the /mnt lines from fstab as we will be rebuilding them
grep /mnt /etc/fstab ­v > _fstab
# create the new volumes.xml file
echo ­e "\n" > _volumes.xml
# find all logical volumes and loop
for i in `lvdisplay | grep "LV Name" | sed 's/[^\/]*//'`; do
fstype=`vol_id $i ­t 2> /dev/null`;
mntpoint=`echo $i | sed 's/\/dev\//\/mnt\//'`/
vgname=`echo $i | cut ­d '/' ­f3`
volid=`echo $i | cut ­d '/' ­f4`
args="";
if [ "$fstype" == "" ]; then
# assume iscsi since filesystem is unknown
fstype="iscsi"
mntpoint=""
fi
if [ $fstype == ext3 ] ; then
args=",acl,user_xattr"
fi
if [ $fstype == reiserfs ] ; then
args=",acl"
fi
if [ $fstype == xfs ] ; then
args=""
fi
if [ $fstype != "iscsi" ]; then
echo "$i $mntpoint $fstype defaults,usrquota,grpquota$args 0 0" >> _fstab
echo " " >> _volumes.xml
echo "Mounting $mntpoint"
mkdir ­p $mntpoint > /dev/null 2> /dev/null
umount $mntpoint 2> /dev/null
mount $mntpoint
else
echo "$i ­ assuming iSCSI"
echo " " >> _volumes.xml
fi
done;
echo "
" >> _volumes.xml
mv ­f _fstab /etc/fstab
mv ­f _volumes.xml /opt/openfiler/etc/volumes.xml
chown openfiler.openfiler /opt/openfiler/etc/volumes.xml


Cambiamos los permisos de ejecución al nuevo script
chmod 744 volumes.sh

y lo ejecutamos
/tmp/volumes.sh

y comprobamos que nos ha localizado los volúmenes iSCSI

* Y por último, vamos a restaurar el backup de configuración del Openfiler.
Para hacerlo, entra en la URL de administración del openfiler:
https://openfiler:446

y vamos a la pestaña System y seleccionamos Backup/Restore del menú de la derecha.
Desde "Restore Configuration" navegamos y subimos el archivo de configuración del backup

martes, 6 de julio de 2010

Agradecimientos

Hoy, revisando entradas antiguas, me he dado cuenta que tengo comentarios de gente que ha probado alguna de mis soluciones y les han funcionado, y me dan las gracias por ello.

Sólo decir que gracias a vosotros por dejar el comentario, y que me alegro que os hayan funcionado!


Saludos a todos!!!!

viernes, 2 de julio de 2010

"Vacation" (y postfix) no pueden responder

Me he encontrado hoy con un caso un poco raro.
Tenemos un servidor con Postfix, que además tiene el vacation configurado para la respuesta automática. Funcionaba bien hace un tiempo, pero hoy (y no sabemos desde cuando) han notificado que no devuelve algunos mensajes.

Básicamente, que me enrollo mucho, lo que significa es que tú configurabas tu mensaje de ausencia tipo "Me voy de vacaciones y volveré tal día", y eso se envía cada vez que se recibe un mail en tu cuenta, avisando al destinatario de alguna cosa (en este caso de que no estás y es posible que tardes en responder porque estás de vacaciones). El caso es que esto ha dejado de funcionar, y sólo responde bien para cuentas internas y algunas externas. Para otras, como las que son de Hotmail o Gmail, simplemente devuelve un error como este.

MMM DD hh:mm:ss Server.dominio.com postfix/smtpd[11891]: NOQUEUE: reject: RCPT from Server[127.0.0.1]: 554 5.7.1 : Relay access denied; from= to= proto=SMTP helo=

Bueno, pues mi solución ha sido fácil. Simplemente me he asegurado que en mi configuración del postfix, en el main.cf, en la definición de mis redes (el parámetro mynetworks) se incluye el localhost:

[root@server.dominio.com postfix]# cat /etc/postfix/mynetworks
127.0.0.0/8
192.168.0.1/24
192.168.0.2/24
[root@server.dominio.com postfix]#

He reiniciado el postfix (no he hecho un reload, así que no sé si también funcionaría) y ya se podía enviar el mensaje de autorespuesta... Bastante sencillo si se hubiera detectado antes!!!!!