Tabla de contenidos NCS

4.12 NFS("Network File System")




Figure: NFS("Network File System")

El protocolo NFS("Network File System") de Sun permite compartir sistemas de ficheros en una red. El protocolo NFS está diseñado para ser independiente de la máquina, el sistema operativo y el protocolo de transporte. Esto es posible porque se implementa sobre RPC(ver RPC("Remote Procedure Call")). RPC establece la independencia de la máquina usando XDR("External Data Representation").

SUN-NFS es un protocolo propuesto como estándar. Su status es electivo. La especificación actual del NFS de Sun se puede encontrar en el RFC 1094 - especificación de NFS:. Este RFC documenta la versión 2 de NFS. Aunque el RFC menciona a la versión 3 de NFS, nadie ha enviado aún un nuevo RFC ni un borrador discutiendo una posible especificación de la versión 3.

4.12.1 Concepto

NFS permite a los usuarios autorizado acceder a ficheros localizados en sistemas remotos como si fueran locales. Dos protocolos sirven a este propósito:

  1. El protocolo de montaje Mount para especificar el host remoto y el sistema de ficheros al que se va a acceder así como dónde localizarlo en la jerarquía local de ficheros.
  2. El protocolo NFS para efectuar la auténtica E/S de ficheros sobre el sistema remoto de ficheros.

Tanto el protocolo Mount como el NFS son aplicaciones de RPC(concepto de llamador/servidor) y son transportados por UDP.

4.12.1.1 Protocolo

El protocolo Mount es una aplicación de RPC integrada con NFS. Su número de programa es el 100005. El protocolo Mount es transportado por UDP. Mount es un servidor RPC y proporciona un total de seis procedimientos:

NULL
No hace nada, es útil para testear las respuestas del servidor
MOUNT
Función Mount, devuelve un descriptor de fichero apuntando al directorio
DUMP
Devuelve la lista de todos los sistemas de ficheros montados
UMOUNT
Elimina una entrada de la lista de sistemas de ficheros montados
UNMTALL
Elimina todas de las entradas de la lista de sistemas de ficheros montados para el cliente
EXPORT
Devuelve información sobre los sistemas de ficheros disponibles

La llamada a MOUNT devuelve un descriptor de fichero que apunta al directorio. Este descriptor es un campo de 32 bytes, que el cliente usará posteriormente para acceder a los ficheros. Los descriptores son una parte fundamental de NFS ya que a través de ellos se referenciará cada fichero y directorio. Algunas implementaciones encriptan los descriptores por razones de seguridad(por ejemplo, el NFS de VM puede usar opcionalmente programas de encriptación para esto).

El comando MOUNT aporta la interfaz a esta aplicación de RPC. El usuario ejecuta el comando MOUNT para localizar el sistema de ficheros remoto en su propia jerarquía de ficheros.

4.12.1.2 Protocolo NFS

NFS es la aplicación de RPC que suministra funciones de E/S sobre ficheros en un host remoto, una vez que ha sido solicitado mediante el comando MOUNT. Tiene el número de programa 100003 y a veces usa el puerto IP 2049. Como este no es un número de puerto asignado oficialmente, y ya existen diversas versiones de NFS(y de MOUNT) lo números de puerto pueden cambiar. Es aconsejable dirigirse al Portmap(número de puerto 111) (ver Portmap o Portmapper) para obtener los números de puerto para MOUNT y NFS. El protocolo NFS es transportado por UDP.

El programa NFS soporta 18 procedimientos para todas las operaciones básicas de E/S, como por ejemplo:

LOOKUP
Busca un fichero en el directorio actual y si lo encuentra, devuelve un descriptor a ese fichero más información sobre los atributos del fichero.
READ y WRITE
Primitivas básicas para acceder el fichero.
RENAME
Renombra un fichero.
REMOVE
Borra un fichero.
MKDIR y RMDIR
Creación/borrado de subdirectorios.
GET y SET-ATTR
Devuelve conjuntos de atributos de ficheros.

Además hay otras funciones soportadas.

Se correponden con la mayoría de primitivas de E/S usadas en el sistema operativo local para acceder a ficheros locales. De hecho, una vez que se ha montado el directorio remoto, el sistema operativo local tiene que "reencaminar" las primitivas de E/S al host remoto. Esto hace que todas las operaciones de E/S sobre ficheros tengan el mismo aspecto, independientemente de si el fichero es local o remoto. El usuario puede trabajar con los comandos y programas habituales en ambos tipos de ficheros; en otras palabras, el protocolo NFS es completamente transparente al usuario. Ver Figura - E/S de ficheros en NFS.


Figura: E/S de ficheros en NFS - Interceptada a nivel de sistema operativo, haciéndose por tanto transparente al usuario.

4.12.1.3 Sistema de ficheros NFS

NFS asume un sistema de ficheros jerárquico(directorios). Los ficheros son secuencias de bytes sin estructura y carentes de significado inherente: es decir, todos lo ficheros se ven como una secuencia contigua de bytes, sin ninguna estructura de registros.

Con NFS, todas las operaciones sobre ficheros son síncronas. Esto significa que la operación sólo retorna cuando el servidor ha completado todo el trabajo asociado para esa operación. En caso de una solicitud de escritura, el servidor escribirá físicamente los datos en el disco, y si es necesario, actualizará a estructura de directorios, antes de devolver una respuesta al cliente. Esto garantiza la integridad de los ficheros.

NFS también especifica que los servidores no deberían estar asociados a un cliente determinado. Es decir, un servidor no necesita mantener información extra de ninguno de sus clientes para funcionar correctamente. En caso de un fallo del servidor, los clientes sólo tienen que reintentar la solicitud hasta que el servidor responda, sin tener que repetir la operación de mount.

Tabla de contenidosEl sistema de autentificación y autorización Kerberos