Descripción:
Inicialización:
Arranque desde cache ?
*
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.
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.
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.
Ninguna prueba actualmente.
Aún no se han abierto las votaciones.