Ayuda OnLine de GULiC

Anon1129

Ayuda
  • Temática: Puedes preguntarnos sobre Software Libre, Linux o GULiC. Otros temas pueden ser respondidos (o no!)
  • Acceso: Para mantener tu anonimato, se te ha asignado un nick al azar (Anon1129). Si deseas identificarte, puedes solicitar tu inscripción como socio ó iniciando sesión, si ya lo eres. En cualquier caso, si usas jabber, puedes informarte de cómo entrar a esta sala con tu cliente habitual, o bien entrando vía jwchat.
  • Uso: Para ver el chat más grande, usa ésta página. Si vas a pegar textos grandes, mejor usa nuestro pastebin. Para avisar de errores o problemas, usa nuestro trac.
  • Horarios: Nuestro huso horario es WET. No te extrañe si a las 5 de la mañana no te responde nadie.
  • Foros: Si nadie te responde al momento, deja tu mensaje en nuestro foro de libre acceso después de oir la señal... Beep!

NFSv4 en Debian

Llevaba algún tiempo intentando hacer funcionar un servidor NFS versión 4 y hoy por fin lo he conseguido. Como la cosa no es tan directa como cabria pensar voy a dejar constancia aquí de lo hecho. Eso si, se que otras distribuciones hace tiempo que traen el soporte; pero yo he utilizado una Debian inestable.

EL NUCLEO

Lo primero es compilar un núcleo 2.6 con el soporte de NFSv4. Eso al menos en mi caso, porque tengo un núcleo personalizado. Es posible que los núcleos empaquetados de la distribución traigan ese soporte (más que nada porque traen de todo). Si se va a compilar hay que seleccionar las siguientes opciones:

  • Code maturity options
    • Prompt for development and/or incomplete code/drivers
  • File systems
    • Network File Systems
    • NFS file system support
      • Provide NFSv3 client support
      • Provide NFSv4 client support
    • NFS server support
      • Provide NFSv3 server support
      • Provide NFSv4 server support
      • Provide NFS server over TCP support
  • Cryptographic options
    • Cryptographic API

      • MD5 digest algorithm
      • DES and Triple DES EDE cipher algorithms

Evidentemente esto activa tanto el soporte de cliente como el de servidor. Es cosa de cada uno activar el soporte adecuado según el tipo de máquina que estemos configurando.

Para saber si nuestro núcleo tiene el soporte que deseamos (y así evitar compilarlo) podemos mirar en /boot/config-2.6.* y comprobar si al menos tenemos las siguientes variables de configuración con los valores m o y:

CONFIG_NFS_FS=m o y
CONFIG_NFS_V3=m o y
CONFIG_NFS_V4=m o y
CONFIG_NFSD=m o y
CONFIG_NFSD_V3=m o y
CONFIG_NFSD_V4=m o y
CONFIG_NFSD_TCP=m o y

También sería interesante tener activado el soporte ACL (access control list) para el sistema de ficheros donde se guardan los datos (p.ej. cuentas de usuario) de nuestro servidor. Para ellos debemos activar las siguientes opciones:

  • File systems
    • ???? extended attributes
    • ???? POSIX Access Control Lists

Donde ???? es el sistema de ficheros que queremos configurar (p.ej. Ext3. XFS, …).

  • Más información aquí

UTILIDADES DEL MODO USUARIO

Las utilidades NFS de Debian no tienen soporte para NFSv4. Es necesario aplicar un parche y compilarlas. Yo de todas formas he preferido utilizar paquetes no oficiales precompilados. Estas son las líneas para el /etc/apt/sources.list

deb http://www.citi.umich.edu/projects/nfsv4/debian unstable main
deb-src http://www.citi.umich.edu/projects/nfsv4/debian unstable main

Ejecutar los siguientes comandos debería bastar para actualizar nuestro sistema a los paquetes no oficiales:

apt-get update
apt-get upgrade

  • Más información aquí

CONFIGURACION

NFS COMMON

NFSv4 utiliza algunos demonios adicionales a los conocidos NFSD y MOUNTD. Esos demonios son:

  • GSSD: Este demonio permite que NFSv4 pueda autentificar la conexión entre cliente y servidor (ver opción sec en man nfs).
  • IDMAPD: Es el demonio de NFSv4 encargado del mapeo entre UIDs (o GIDs) y nombres de usuario (o nombres de grupos).

Podemos activarlos/desativarlos en /etc/default/nfs-common y /etc/default/nfs-kernel-server. En mi caso particular no estaba interesado en la autentificación así que desactive el demonio GSSD descomentando la siguiente linea en el fichero /etc/default/nfs-common.

NEED_GSSD=no

Y la siguiente linea en el fichero /etc/default/nfs-kernel-server.

NEED_SVCGSSD=no

El paquete no oficial se olvida de crear cierto directorio necesario para que IDMAPD funcione. Debemos ejecutar el siguiente comando tanto en el cliente como en el servidor.

mkdir /var/lib/nfs/rpc_pipefs

Ahora deberiamos reiniciar nfs-common y nfs-kernel-server para que se enteren de los cambios.

/etc/init.d/nfs-common restart
/etc/init.d/nfs-kernel-server restart

EXPORTS

NFSv4 introduce el concepto de raiz de todos los sistemas de ficheros exportados. Cada vez que un fichero se abre en un sistema NFS se le asigna un manejador (file handler). Ese manejador tiene una parte que identifica el sistema de ficheros. Habitualmente esa porción se deriva de los números del dispositivo (el mayor y el menor) pero puede ser fijada con la opción fsid. Además si establecemos fsid=0 estaríamos indicando cual es la raiz de la que he hablado anteriormente. Por ejemplo, si quiero exporta el directorio /export añadiría la siguiente línea a mi fichero /etc/exports.

/export 192.168.10.0/255.255.255.0(rw,sync,fsid=0)

Lo importante es haber añadio fsid=0 en las opciones. En mi caso yo tengo:

/export 192.168.10.0/255.255.255.0(rw,sync,fsid=0)
/export/home 192.168.10.0/255.255.255.0(rw,sync,nohide)

Esto es porque /export/home está en un sistema de fichero diferente al de /export. Debemos por tanto añadir un entrada en /etc/exports e indicar con la opción nohide que no debe ser ocultado. Si no lo hacemos así el cliente debería de montar explícitamnete /export/home mientras que de esta manera no es necesario que lo haga. Además demos darnos cuenta que en la línea de /export/home no decimos nada sobre el fsid.

MONTAJE

Por último para montar en el cliente el sistema de ficheros exportado nos bastaría con poner la siguiente línea en /etc/fstab:

files:/ /mnt/files nfs4 rsize=32768,wsize=32768,hard,intr 0 0

No usamos files:/export sino files:/ puesto que hemos exportado /export como raiz de todos los sistemas de ficheros exportados (fsid=0). También podemos montar /export/home:

files:/home /home nfs4 rsize=32768,wsize=32768,hard,intr 0 0

Para ver el resto de opciones disponibles al montar un sistema de ficheros exportado por NFS podemos mirar man nfs.