Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

martes, 9 de febrero de 2010

Como hacer un Ubuntu Diskless (funcionando sin HD local).

Una estación de trabajo sin disco, computador sin disco, nodo sin disco, o cliente híbrido, es una estación de trabajo o computador personal sin unidades de disco, que emplea el arranque por red (network booting) para cargar su sistema operativo desde un servidor. También puede decirse que una computadora actúa como estación de trabajo sin disco, si sus discos no son usados y se usa el arranque por red.


Las estaciones de trabajo sin disco (o las computadoras que actúan como tales) son a veces conocidas como las computadoras de red o clientes híbridos. El cliente híbrido puede simplemente significar una estación de trabajo sin disco, o puede ser usado en un sentido más particular para indicar a una estación de trabajo sin disco que corra remotamente algunas, pero no todas, las aplicaciones, como en la arquitectura computacional de cliente ligero.
Las ventajas de los nodos sin disco pueden incluir un costo de producción más bajo, costos de funcionamiento más bajos, una operación más silenciosa, y ventajas de manejabilidad (por ejemplo, una instalación de software manejada centralmente).
Una vez más, por razones de la manejabilidad, en muchas universidades y en algunas organizaciones grandes, las PC son usadas en una configuración similar, con algunas o todas las aplicaciones almacenados remotamente pero ejecutadas localmente. Sin embargo, éstos no son estaciones sin disco si todavía se cargan (boot) desde un disco duro local.

(Fuente wikipedia)


Los conceptos que deberíamos tener claros son:
Se recomienda dominar esos dos conceptos ya que se darán por sabidos para la explicación del sistema diskless. Sino sabemos crear un servidor PXE o instalar un servidor NFS, será muy complicado poder montar un sistema diskless como el propuesto a continuación.


Crear un sistema diskless

Lo primero que vamos ha hacer es que los nodos puedan arrancar sin disco duro local. El sistema de archivos lo montaran en el arranque por NFS y se encontrará en el servidor maestro (HPCMaster). Así pues, lo que vamos ha hacer es instalar en una máquina el sistema operativo para la máquina que llamaremos HPCMaster y en otra máquina instalaremos (en local también, ya le sacaremos el disco duro local luego) otro sistema operativo. Antes de empezar la instalación tomaremos las decisiones necesarias sobre que IPs tendrá el servidor (y si hiciera falta en que VLANs estaría) y que rangos de IPs usaremos para los nodos. Para nuestra instalación y el ejemplo siguiente usaremos estos datos:
  • HPCMaster
    • IP HPC = 192.168.0.100
    • IP del Centro = DHCP del Centro (Así pues estará conectado a la VLAN DHCP)
  • HPC Nodos
    • Rango de IPs = 192.168.0.1 al 192.168.0.49
Otra decisión que vamos a tener en cuenta es donde vamos a crear las carpetas con los sistemas de ficheros que leeran los nodos. Para nuestro ejemplo vamos a usar:
/HPC/nfsroot_nodeX
en donde la X será el número del nodo.


Instalación del sistema operativo HPCMaster
Para instalar el servidor de nuestro sistema HPC usaremos una distribución XUbuntu 9.10 ya que nos ofrece las ventajas de una distribución basada en Debian/Ubuntu, pero con un entorno de escritorio Xfce, caracterizado por ser muy eficiente ya que es más ligero y rápido que otros entornos como GNOME o Plasma (KDE).

Nos ha interesado instalar un entorno gráfico para una administración más cómoda de nuestro sistema HPC.
Instalaremos XUbuntu por defecto, si bien le diremos que será un servidor SSH. (Esto no es necesario ahora, pero de no hacerlo ahora lo deberemos hacer más tarde).
Al finalizar la instalación, desinstalaremos todo aquello que no nos interese tener, como el NetworkManager (nos daba problemos con el autorranque del servicio DHCP), el AppArmor o los juegos. Después actualizaremos el servidor. Deberemos comprobar también que tenemos instalados los paquetes syslinux (que usaremos como bootloader para el PXE) y initramfs-tools ( herramientas para crear y arrancar un sistema de inicio initramfs empaquetado para un kernel), ya que los necesitaremos más adelante para el arranque de los nodos en PXE. Desisntalaremos el network-manager para tener más control de la gestión de la red.

Instalación del sistema operativo en HPCNodo
Hay diferentes maneras de crear un nodo para que arranque con PXE y use el disco duro via NFS. La manera que se ha escogido para nuestro sistema es hacer una instalación de Ubuntu 9.10 Server 32bits en el nodo, usando temporalmente un disco duro local. Una vez instalado el sistema como habitualmente se haría en un PC, haremos la transferencia el sistema de archivos al servidor maestro (que hace de servidor NFS en nuestro caso, podría ser otro servidor diferente si así lo necesitáramos), que es el que contendrá es sistema de archivos de todos los nodos.Para ello necesitamos instalar las herramientas necesarias para conectarnos a una unidad NFS. Desisntalaremos el network-manager para tener más control de la gestión de la red.

Traspasar sistema de archivos de HPCNodo a HPCMaster
Dado que los nodos no dispondrán de disco duro, necesitaremos un espacio en donde poder albergar nuestro sistema operativo, ya que no se trata de un sistema HPC con nodos usando LiveCD. Por ello lo que haremos es traspasar el sistema de archivos de los nodos a otro disco duro físico, que en nuestro caso será el HPC Master (podria ser otro servidor de disco).

  • Conectar via NFS 
Para conectar via NFS entre los nodos y el servidor de disco HPC Master deberemos instalar los paquetes necesarios y configurar el HPC Master para que exporte la carpeta adecuada para cada nodo

NFS en HPCMaster:
/HPC/nfsroot_node1 192.168.0.1(rw,no_root_squash,async)

 Luego ejecutamos sudo exportfs -a y ya habremos empezado a exportar la carpeta /HPC/nfsroot_node1 para la IP 192.168.0.1

NFS en HPCNode
sudo mkdir /mnt/nfs
sudo mount -t nfs -onolock 192.168.0.100:/HPC/nfsroot1 /mnt/nfs
Ahora ya tenemos la posibilidad de copiar todo el sistema de archivos a HPCMaster, pero antes copiaremos nuestro kernel al home y crearemos un initrd.img tambien en el home para que cuando hagamos la transferencia de archivos via NFS ya tengamos todo lo necesario en HPCMaster (ya que tanto el kernel como el initrd.img lo necesitará el TFTP de HPCMaster para que arranque el nodo).

Guardamos el kernel en uso del Nodo

cp /boot/vmlinuz-`uname -r` ~

Con esto lo habremos copiado al homedir del usuario del nodo

Generar un nuevo initrd

El disco RAM inicial o initrd, por sus siglas en inglés es un sistema de archivos temporal usado por el núcleo Linux durante el inicio del sistema. Es usado típicamente para hacer los arreglos necesarios antes de que el sistema de archivos raíz pueda ser montado. En nuestro caso querremos que esté preparado para poder arrancar un sistema de archivos montado via NFS (y no en local como es lo habitual), con lo cual tendremos que crearlo con los módulos necesarios.
Cambiamos las siguientes opciones en el archivo /etc/initramfs-tools/initramfs.conf:
BOOT=nfs
MODULES=netboot
Ahora creamos la imagen dentro del home con el siguiente comando:
mkinitramfs -o /home//initrd.img-`uname -r` 
Copiar archivos:

Ahora que tenemos todos los archivos que necesitaremos para arrancar via NFS podemos copiarle todo el sistema de archivos en HPCMaster:
sudo cp -ax /. /mnt/nfs/.
sudo cp -ax /dev/. /mnt/nfs/dev/.
Ahora ya tendremos los archivos copiados en HPC Master y sólo nos faltará arrancar el nodo en red para que el HPC Master le sirva el sistema mediante PXE. Para ello tenemos que tener montado el sistema PXE en HPC Master.

Una vez instalado (junto a sus dependencias), ya podemos configurarlo correctamente mediante el archivo /etc/dhcp3/dhcpd.conf

#Configuration for the HPC Linux Server
subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.1 192.168.0.49;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.0.255;
 option routers 192.168.0.100;
 filename "pxelinux.0";
}

#HPC Node groups
group {
# option dhcp-class-identifier "PXEClient";
 next-server 192.168.0.100;

 host node1 {
 hardware ethernet 00:11:2f:ca:bb:29;
 fixed-address 192.168.0.1;
 }

 host node2 {
 hardware ethernet 00:0f:ea:54:21:4b;
 fixed-address 192.168.0.2;
 }
}
Con filename le indicamos el archivo de arranque inicial, que en nuestro caso será el pxelinux.0 (que viene con el paquete syslinux) el cual sería el equivalente a GRUB pero en red. Por otro lado se ha creado un grupo para configurar los diferentes nodos y asignarles una IP según su dirección MAC.


Ahora ya podemos configurarnos nuestro espacio tftp para el arranque en red:
sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
y cambiamos /var/lib/tftpboot/pxelinux.cfg/default
LABEL linux
KERNEL vmlinuz-2.6.31-14-generic-pae
APPEND root=/dev/nfs initrd=initrd.img-2.6.31-14-generic-pae nfsroot=192.168.0.100:/HPC/nfsroot_node2 ip dhcp rw
 
 



Enlaces de interes:


That u don't know what you've got 'til it's gone