NFS SERVIDOR / CLIENTE

sismo
12/14/2008 - 20:00

NFS:

El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales. Originalmente fue desarrollado en 1984 por Sun Microsystems, con el objetivo de que sea independiente de la máquina, el sistema operativo y el protocolo de transporte, esto fue posible gracias a que está implementado sobre los protocolos XDR (presentación) y ONC RPC (sesión) .[1] El protocolo NFS está incluido por defecto en los Sistemas Operativos UNIX y las distribuciones Linux.

Servidor:

Procedimiento:

El primer paso a realizar es actualizar la lista de paquetes disponibles.

< sudo apt-get update

A continuación se debe instalar los paquetes necesarios para dar el servicio.

< sudo apt-get -udV install nfs-common nfs-kernel-server
< sudo apt-get install nfs-common nfs-kernel-server

Finalizada la descarga se debe definir que directorio se va a servir como compartido y que equipos van a poder acceder al mismo.

La configuración que se va a llevar adelante es la correspondiente al protocolo NFS v3.  Actualmente ubuntu soporta NFS v4 (pero en este caso no se implementará ningún elemento de configuración de esta versión).

El archivo donde se definen los directorios a compartir es "/etc/exportfs".  Para editarlo se debe ejecutar el siguiente comando:

< sudo vi /etc/exports

En este caso se compatirá la carpeta "/var/www/htdocs" a la ip del equipo del desarrallador web "10.0.0.6" para que este pueda editar el contenido del mismo (el uid y gid en el cliente/servdiro son los mismos).

Para llevar adelante esa acción se debe agregar la siguiente línea al archivo "/etc/exportfs".

/var/www/htdocs       10.0.0.6(rw,no_subtree_check,sync)

Las opciones con las que se puede parametrizar los elementos compartidos son:

ro: Read-Only. El cliente sólo podrá leer. Es el modo por defecto.

rw: Read-Write. El cliente podrá leer y escribir.

no_subtree_check: Si se exporta sólo parte de una partición puede ser que el usuario cliente no tenga derecho de acceso al directorio en cuestión. Esta directiva permite no comprobar el camino hasta el directorio que se exporta.

sync: Es la opción por defecto. Aunque las versiones mas nuevas usan la opción async. Bueno, sync sirve para que nfs notifique al usuario de los cambios (escritura) en los archivos cuando realmente se hayan ejecutado

async: Por contra es mucho mas rápido ya que no espera a la confirmación por parte del sistema servidor para comunicar al usuario los cambios. Esta opción es mas peligrosa ya que si hay varios usuarios trabajando simultaneamente sobre un mismo archivo se pueden generar archivos corruptos.

root_squash: root_squash indica que un cliente identificado como root tendrá acceso al directorio con los privilegios del usuario anónimo.

no_root_squash: indica que todos los clientes salvo el identificado como root tendrán acceso al directorio con los privilegios del usuario anónimo.

all_squash: indica que todos los clientes tendrán acceso al directorio con los privilegios del usuario anónimo.

Verificación:

Para verificar que el servidor esta exportando los directorios definidos se debe ejecutar el comando "exportfs" que imprime los directorios exportados y hosts que tienen acceso.

< sudo exportfs

Imprimirá por pantalla:

> /var/www/htdocs
                         10.0.0.6

Cliente:

Procedimiento:

El primer paso a realizar es actualizar la lista de paquetes disponibles.

< sudo apt-get update

A continuación se debe instalar los paquetes necesarios para utilizar el servicio.

< sudo apt-get -udV install nfs-common 
< sudo apt-get install nfs-common 

Finalizada la instalación se debe editar el fstab para agregar el punto de montaje.

< sudo vi /etc/fstab

En este caso no se quería que el equipo monte el sistema en forma automatica (opción noauto).

Se le configuró un buffer de 4mb de lectura y 4mb de escritura (rsize=4096,wsize=4096).

El usuario que puede montar este sistema es el que tiene el id 1000 (user,uid=1000).

Se deshabilita la actualización del registro de acceso del archivo (noatime).

Donde 10.0.0.13 es la ip del servidor nfs y /var/www/htdocs es el punto de montaje definido.

10.0.0.13:/var/www/htdocs    /var/www/htdocs        nfs    user,uid=1000,noauto,rsize=4096,wsize=4096,noatime    0    0
 

Para probar el montaje se debe ejecutar el siguiente comando (mount -a monta todas las entradas disponibles en el fstab)

< sudo mount -a

o si se es el usuario con el id 1000

< mount -a

Y a continuación

< mount

Donde debería listar el montaje del nfs.

Para probar la lectura/escritura se puede crear un archivo en el directorio donde se monta el sistema.

< ls /var/www/htdocs/

Listará el contenido del /var/www/htdocs del servidor (se puede generar un archivo en forma previa si esta vacío).

< dd if=/dev/zero of=/var/www/htdocs/zero.tmp bs=4194304 count=1

Crea un archivo de 4mb.

< ls /var/www/htdocs -lh |grep zero.tmp
> -rw-r--r-- 1 sismo  sismo  4.0M 2008-12-15 12:09 zero.tmp

Listo el contenido y filtro or el nombre del archivo creado, para verificar la existencia y el tamaño del mismo.

< rm /var/www/htdocs/zero.tmp

Borra el archivo de test.

Navegación del libro

Comentarios

Buenas, agradezco el tuto, aunque tengo lios para configurar el cliente, el servidor anda de 10. seguire buscando cual es la posible falla.

Aviso que en la verificacion del servidor el comando para hacerlo es:

 

<exportfs

 

ahi devueve la carpeta compartida

Si necesitas una mano para configurar el cliente. Avisame.  No entendí lo del comando exportfs que me decis.  Esta bien tipeado en el tuto.

Distribuir contenido