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

11 comentarios:

Anónimo dijo...

hola esther:

quisiera pedirte ayuda en cuanto a tu manual, me estoy quedando atorada en cierta parte, si no estas muy ocupadita podrias colaborarme.
puedes darme un correo donde te pueda consultar?

Esther Yébenes dijo...

Hola Anónima

A ver, prefiero no enviarte mi mail por aquí, ya que es personal y privado.
No te preocupes, déjame tu consulta aquí a ver si te puedo ayudar.

Un saludo

Anónimo dijo...

Hola Esther, mi nombre es Bernardo
Hace bastante tiempo que estoy utilizando Openfiler para algunas aplicaciones.
He leido tu documento y he realizado la instalacion de Openfiler en USB con exito.
Mi consulta es la siguiente, por lo general en instalaciones sobre disco IDE o SATA al terminar la instalcion voy a la opcion System Update y realizo la actualizacion de todos los paquetes y driver ya que desde el momento de la edicion de la imagen del CD hasta hoy dia han salido numerosas actualizacion.
Esto pruduce en el USB numerosos cambios, tirando por la borda todo el trabajo realizado y por supuesto el systema no funciona.
Tienes idea que se puede hacer con este asunto ?
Bernardo

El_Pelayo dijo...

Pues yo necesito ayuda. No consigo instalar el Openfiler en un pendrive usb de 4 Gb. Sigo todos los pasos que indica Esther, pero ya me falla desde el principio cuando reinicio por primera vez tras instalar. Reinicio, me da el mensaje de Kernel Panic. Reinicio de nuevo y tecleo linux rescue. A partir de ese momento empiezan mis problemas.
Me podeis ayudar?

El_Pelayo dijo...

Bueno, pues, al final parece que ha avanzado bastante, pero me quedo estancado al final de todo.
Escribo la siguiente linea:

find . | cpio ­c ­o | gzip ­9 > /boot/usbinitrd.img

Y me da un error:

find: invalid predicate `-c´

Voy a ver si se ha creado bien el fichero usbinitrd.img , pero está totalmente vacio.

Esther Yébenes dijo...

Hola El_Pelayo

por lo que veo, la opción "c" es para hacer utilizar el formato antiguo de archivo. Por qué no pruebas a no utilizar esa opción?

De todas maneras, el sistema base es el mismo, así que las opciones soportadas también; en este caso, no creo que tenga que ver con el kernel instalado o con los drivers que se cargan por defecto.

Ya me dirás si has podido construir la imagen...

Esther Yébenes dijo...

Hola Bernardo,

la verdad es que cuando hago una instalación de este tipo compruebo si hay algún paquete que, por seguridad principalmente, deba actualizar, y una vez lo tengo funcionando intento hacer el mínimo de cambios posibles (quitando las actualizaciones básicas de seguridad, claro). En este caso puede ser cualquier paquete nuevo que estés actualizando, que entre en conflicto con lo que ya hay. Es difícil decirlo sin verlo.

De todas maneras, si consigues ver qué es lo que falla, házmelo saber, al menos para estar informada.


Muchas gracias!

Francisco dijo...

Saludos Esther!
Mi nombre es Francisco, soy de Costa Rica.
Estuve leyendo tu blog porque me interesa instalar OpenFiller en una SAN y voy a tomar la guía como referencia.
Te cuento luego como me fué.
Por cierto, también soy Libra!!!
Jeje!

Esther Yébenes dijo...

Hola Francisco!

Muchas gracias, ya me contarás qué tal te fue!

Suerte, un saludo

Anónimo dijo...

Hola Esther, mira estoy empezando con el openfiler pero por alguna razón no puedo crear un RAID 1, puedo crear RAID 0 pero no 1, me estoy volviendo loco.

Esther Yébenes dijo...

Anónimo, qué tipo de discos estás utilizando? A lo mejor es por eso; para hacer un RAID 1 necesitas dos discos iguales. Si tus discos no son iguales, te dejará hacer un RAID0, donde básicamente utiliza los dos como si fueran un único disco. En el caso de RAID1 hay paridad, y si se estropea uno de ellos puedes cambiarlo sin que el sistema se vea resentido. En caso del RAID0 con discos pequeños harás uno grande, pero si se estropea uno de ellos, perderás todo.

Espero que sea este tu problema

Saludos!