wiki:PruebasClientes

Version 9 (modified by adv, 14 years ago) (diff)

--

Objetivos

  • Crear un cluster para clientes específicos opengnsys, que proporcione acceso de escritura pero sin modificar la imagen básica de los clientes.
  • Que los clientes también puedan ser iniciados desde cualquier dispositivo físico (partición cache, usb, cd, dvd).

La Imagen de los clientes opengnsys (Elemento común para todas las opciones)

  • Es un sistema operativo, almacenado en un fichero linux, accesible como dispositivo loop.
  • Su generación se basa actualmente en deboostrap y en la compilación de los programas indicados en ToolsGNU.c
    • En este sistema se instala los paquetes necesarios para el sistema, entre ellos el kernel.
    • Esto generará también un initrd, que junto al kernel serán exportado por el PXE del servidor. ::
  • Dependiendo como se accede a este sistema de archivos tendremos:
    • mejor rendimiento,
    • flexibilidad para su inicialización desde diferentes dispositivos (red local, cache local, usb, cd, internet??)
  • Quizás requira algunos ficheros distintos del etc. Pendiente comprobar

Explicación de cada propuesta

NFSRoot

Descripción:

  • Arranque típico, donde el cliente accede a su Sistema raiz (/) por NFS.
    • el fichero con la Imagen de sistema de archivos debe estar montado y exportado NFS en un directorio o directamente en la memoria RAM del servidor.
  • Su sistema raiz, puede ser en accedido en modo escritura o lectura.
    • Aunque ninguno de los dos se adapta a los clientes opengnsys.
    • La opción en modo escritura se descarta completamente, ya que cualquier modificación que se realice en un cliente, automáticamente es considerada como realizada en los demás clientes, por ejemplo el montaje de una partición.
    • El sistema pre-opengnsys EAC, utiliza este modo de operación en modo de solo lectura, creando ciertos elementos en la memoria ram, que dan como resultado un sistema escritura-lectura.

Inicialización:

  • kernel e initrd a RAM, pivot_root hacia el Sistema operativo mediante protocolo nfs.

Generación Initrd:

  • mkinitrd habilitada la opción de nfs.

Arranque pxe:

  • En la configuración del PXE hay que pasarle que el root es del tipo NFS y donde se encuentra.

Arranque desde cd: ?

Arranque desde cache ?

NBDRoot

Es muy parecido al anterior. La diferencia es que ya no es un directorio sino una imagen del directorio. Para servir la imagen se usa NBD en vez NFS. En la configuración del PXE también hay que pasarle parámetros especiales.

og2ndFS - Híbrido RAMfs-NETroot

Descripción:

  • Pretende ofrecer al actual cliente opengnsys:
    • Toda la potencia de los sistemas NETRoot(en modo lectura) y toda la flexibilidad de los sistemas RAMFS (modo escritura).
    • Flexibilidad de ser iniciado desde cualquier dispositivo tipo usb, cd,dvd o cache; así como por red.
    • Elementos: actual kernel e initrd más el fichero imagen de los clientes.

Inicialización:

  • kernel e initrd a RAM, montaje sobre si mismo los directorios básicos de solo lectura (/usr /lib) del fichero imagen del cliente.

Generación Initrd:

  • Compatible con el actual del cliente opengnsys, que está basado en el instalador de ubuntu.
  • Para lucid Probando con boot=oginit (scripts para generar el initrd)

Arranque pxe:

  • el oginit, cuando lo necesite monta el fichero imagen, y se monta los directorios /usr /lib.

Arranque desde cd: ?

  • el oginit, detecta los dispositivos que tenga una determinada etiqueta, y busca en ella el fichero imagen.

Arranque desde cache ?

  • el oginit, detecta los dispositivos que tenga una determinada etiqueta, y busca en ella el fichero imagen.

Mejoras e inconvenientes de cada uno

Velocidad
Con sobrecarga de clientes, es decir, un aula entera arrancando por ejemplo dicen que NBD se comporta mejor que NFS.
Flexibilidad
Con NFS podemos escribir en el directorio cuando los clientes están conectados y los cambios son inmediatos. Con NBD no he conseguido hacer eso. Además con NBD habría que ir incrementando la imagen en caso de ser necesario. Puede que para el root no tenga mucho sentido, pero para las imágenes sí.
Initrd
Con NFS el initrd que genera mkinitramfs de Ubuntu se especializa en red, lo que hace que se elimine todo el soporte de disco duro. Eso significa que para el modo offline habría que usar otro initrd, crear uno especial que soporte los dos o tener dos distintos y que el servidor los maneje. NBD no tiene este problema, mete la red dentro del soporte normal para discos duros.
Copy on Write
NBD permite servir la imagen y si el cliente escribe en ella, crea un fichero de diferencia. Cuando el cliente se desconecta elimina el fichero. Habría que probar su rendimiento porque obviamente empeoraría.

Como probar cada uno

Para realizar las pruebas es necesario un debootstrap con la última versión actual de Ubuntu, la 10.04. También es necesario las herramientas XFS para poder crear la imagen formateada con este sistema de ficheros. También tener instalado todos los demonios para poder arrancar un ordenador: PXE, tftp, DHCP, NFS y NBD. Todavía no hay script, pero un "candidato" sería:

mkdir -p /tmp/nfsroot
debootstrap --arch i386 lucid /tmp/nfsroot

# Le ponemos un password al sistema
sudo mount proc /tmp/nfsroot/proc -t proc
sudo chroot /tmp/nfsroot passwd
sudo chroot /tmp/nfsroot apt-get install nbd-client linux-image nfs-common portmap
sudo umount /tmp/nfsroot/proc

echo Lucid > /tmp/nfsroot/etc/hostname
echo 127.0.0.1 localhost.localdomain localhost >> /tmp/nfsroot/etc/hosts
cat << EOF > /tmp/nfsroot/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface, commented out for NFS root
#auto eth0
#iface eth0 inet dhcp
iface eth0 inet manual
EOF

cat << EOF > /tmp/nfsroot/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
none            /tmp            tmpfs   defaults        0       0
none            /var/run        tmpfs   defaults        0       0
none            /var/lock       tmpfs   defaults        0       0
none            /var/tmp        tmpfs   defaults        0       0
EOF

# Creamos ahora la imagen para nbd
dd if=/dev/zero of=/tmp/nbdroot.img bs=1M count=1024
mkfs.xfs /tmp/nbdroot.img
sudo mount /tmp/nbdroot.img
sudo cp /tmp/nfsroot/* /mnt/
sudo umount /mnt

Esto crea en /tmp/nfsroot el directorio que debemos exportar con NFS y /tmp/nbdroot.img que es la imagen que debemos exportar por NBD. En /tmp/nfsroot/boot están el initrd y el linux que debemos poner en el PXE para que arranque estos clientes:

kernel vmlinuz
append initrd=initrd.img nbdsrv=192.168.2.2 nbdport=2345 nbdroot=192.168.2.2,2345 root=/dev/nbd0 ip=192.168.2.3::192.168.2.2:255.255.255.0::eth0: rootdelay=1

append initrd=initrd.img ip=192.168.2.3::192.168.2.2:255.255.255.0::eth0: rootdelay=1 root=/dev/nfs nfsroot=1:/tmp/nfsroot ro

Para servir una imagen por NBD:

nbd-server -c 2345 /tmp/nbdroot/nbdroot.img

La opción -c es copy on write. Probarlo con la opción y sin la opción.

Pruebas realizadas

Ninguna prueba actualmente.

Votación

Aún no se han abierto las votaciones.