= 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 [source:branches/ogFSHlnk/boot/ogFSHlnk-generatorV2.sh generación] se basa actualmente en deboostrap y en la compilación de los programas indicados en [source:/trunk/client/engine/ToolsGNU.c 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 [wiki:EACBootAgentPXE 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 == [wiki:InitrdClienteSecondFileSystem 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. # # 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.