|
NFS (Network File System) permite el acceso transparente a archivos y directorios ubicados en computadoras remotas, es decir, permite que usuarios y programas traten archivos remotos como si fueran locales.
La computadora remota (llamada server NFS) pone ciertos directorios de su propio sistema de archivos a disposición de otras computadoras exportándolos hacia la red. Para acceder a los archivos remotos, las computadoras que los utilizan (los clientes NFS) previamente deben montar alguno de los directorios exportados por el servidor en algún punto de su sistema de archivos (de la misma forma que los sistemas de archivos residentes en discos duros locales deben ser montados antes de poder ser utilizados).
A modo de ejemplo, en el gráfico anterior se muestra que Andrómeda, actuando como servidor NFS, exporta a la red el directorio /net, y que un cliente NFS, en éste caso Altair, lo monta en /usr/local. Esto significa que para los usuarios de Altair existen los directorios /usr/local/bin, /usr/local/etc y /usr/local/apps, pero en realidad dichos directorios están ubicados en Andrómeda.
NFS fue desarrollado originariamente por Sun Microsystems, y se transformó en el standard para compartir archivos bajo plataforma Unix; también existen actualmente implementaciones de NFS para otros sistemas operativos.
Para ofrecer servicios NFS, una computadora debe ejecutar los siguientes demonios:
rpc.nfsd: Es el demonio principal de NFS, responsable de manejar las peticiones de los clientes para acceder a archivos remotos.
rpc.mountd: Procesa las peticiones de montura de los clientes NFS.
Algunas implementaciones de NFS requieren demonios auxiliares adicionales como los siguientes:
biod: Demonio de E/S por bloques. Gestiona el lado del cliente de las peticiones de Entrada/Salida vía NFS. Este demonio solo es necesario en el cliente NFS.
rpc.lockd: Demonio de bloqueo. Este demonio se ejecuta tanto en el cliente como en el server, y gestiona las peticiones de acceso en modo exclusivo.
rpc.statd: Demonio de control de estado. Este demonio es requerido por rpc.lockd para monitorear las operaciones de E/S por NFS.
Para exportar directorios desde un server NFS, el administrador debe listarlos en el archivo /etc/exports, teniendo en cuenta las siguientes consideraciones:
El archivo /etc/exports contendrá una línea por cada directorio exportado, en la que se indicará la ruta completa al mismo, seguida por ciertos parámetros que configurarán el modo en que se exporta el directorio, los cuales permiten especificar cuales computadoras tienen derecho a montar remotamente el directorio exportado, y de que manera:
/net *.galaxia.org.ar(rw)
/home/jperez canopus.galaxia.org.ar(rw)
/datos/ftp/public (ro)
En el ejemplo anterior, el server NFS exporta tres directorios:
/net Accesible desde cualquier computadora del dominio galaxia.org.ar, en modo de lectura/escritura (rw = read/write).
/home/jperez Accesible sólo desde la computadora Canopus, también en modo de lectura/escritura.
/datos/ftp/public Accesible desde cualquier computadora (de cualquier dominio), pero en modo de sólo lectura (ro = read only).
Los directorios remotos se montan localmente de la misma manera que otro sistema de archivos: manualmente por medio del comando mount, o listándolos en /etc/fstab para que se monten automáticamente al inicializar el sistema operativo.
En ambos casos, la sintaxis para especificar un directorio remoto es la siguiente:
Por ejemplo, para montar manualmente el directorio /net de Andrómeda en /usr/local de Altair, se debe ejecutar el siguiente comando:
Alternativamente, se podría agregar la siguiente línea en /etc/fstab:
Obsérvese que al montar un directorio remoto pude indicarse la opción bg a fin de realizar la operación de montura en background.
Si al momento de solicitar la montura el server NFS no se encuentra disponible, el cliente permanecerá reintentando hasta que el server lo esté. La opción bg premite que esos reintentos continúen en background y así no detener las demás operaciones del cliente que no dependen del acceso a ese recurso compartido. Cuanto tiempo el cliente permanecerá reintentando depende de si la montura es dura (hard mounts) o blanda (soft mounts).
Por defecto, las monturas de directorios NFS son duras, lo
cual significa que el cliente permanecerá reintentando
indefinidamente hasta recibir respuesta del server. Si la montura
es blanda (en cuyo caso deberá utilizarse la opción
soft en /etc/fstab
o al montar manualmente con mount), al cabo de
cierto número de reintentos la operación fallará
y retornará un mensaje de error al usuario, indicando
que el server es inaccesible.