Tabla de contenidos
NFS (Network File System) permite acceder a ficheros y directorios remotos de la misma forma que se accedería a ficheros locales. NFS utiliza al igual que NIS, RPC. En Linux esto es posible, gracias a una mezcla de funcionalidad del Kernel en el cliente y un demonio servidor de NFS en el servidor.
La forma de trabajar de NFS es la siguiente. Un cliente intenta montar ( conectar a su árbol de directorios ) un directorio desde un host remoto en un directorio local de la misma forma que si fuera un dispositivo físico. Sin embargo la sintáxis empleada para montar el directorio remoto es diferente:
[root@mis01]# mount -t nfs hostname:/dirremoto /dirlocal
El comando mount intenta conectar con el demonio mountd en el host remoto via RPC. El servidor chequeará si el cliente tiene permitida la operación, y si es así le devolverá un manejador de fichero.
Cuando alguien accede a un fichero a través de NFS, el kernel coloca un allamada RPC en el demonio nfsd en la máquina servidora. Esta llamada toma el manejador de fichero, el nombre de fichero a ser accedido, y el uid y el gid del usuario como parámetros, que se utilizan para determinar los derechos de acceso.
En la mayoría de implementaciones UNIX, la funcionalidad NFS, tanto en el cliente como en el servidor se implementa como demonios (procesos) a nivel de Kernel que se arrancan desde el espacio de usuario en el boot del sistema. Estos son, el domonio nfsd en el host servidor y el demonio de bloqueo de E/S biod en el cliente.
El NFS de Linux es un poco diferente ya que el código del cliente está integrado en el nivel del Sistema de Ficheros Virtual (VFS) del kernel y no requiere control adicional a través de un demonio biod.
Actualmente existen dos implementaciones del servidor NFS bajo Linux. Una es el servidor NFS en el espacio del usuario y otra el servidor NFS en el espacio del Kernel.La del espacio del usuario tiene que copiar memoria extra entre el espacio del kernel y el espacio del usuario y además es una sobrecarga para el cambio de contexto. No se permiten bloqueos a nivel de registro ni de fichero. Mientras que el servidor NFS en el espacio del kernel no tiene que mover memoria entre los dos espacios ya que se ejecuta en el espacio del kernel y realiza las llamadas RPC dentro del kernel. Si que permite bloqueo de regisros y ficheros lo cual es importante cuando tienes un entorno heterogéneo, y además permite lanzar varias del demonio servidor.
RedHat Linux implementa por defecto el servidor NFS en el espacio del Kernel.