Compartir ficheros mediante NFS

NFS es un protocolo para comparti archivos a traves de la red.

Su configuración es relativamente sencilla y proporciona una integración tal que pensarás que estás trabajando en local.

Servidor NFS

Pues no es otra cosa que la máquina que va a actuar como servidor central.

Instalación

En un entorno Debianita o derivados es tan sencillo como :

root@porta:/home/juantxu# apt-get install nfs-common nfs-kernel-server portmap

Configuración

Lo primero es la seguridad. Edita tu fichero /etc/hosts.deny para decirle que no piensas dejar entrar a nadie.

root@porta:#vi /etc/hosts.deny

Y añadimos:

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Y ahora que ya le hemos denegado el permiso a todo el mundo se lo vamos a permitir a los que queremos dejar acceder.

Editamos /etc/hosts.allow y le decimos que red o que ip puede acceder

root@porta:#vi /etc/hosts.allow
# para permitir toda mi red local...
portmap: 192.168.1.
lockd: 192.168.1.
rquotad: 192.168.1.
mountd: 192.168.1.
statd: 192.168.1.

Vamos a revisar la configuración de portmap. Es importante hacerlo porque posiblemente en el archivo /etc/default/portmap tengas una linea parecida a la siguiente:

ARGS=127.0.0.1

En ese caso comentala o borrala. Porque si no, portmap sólo escuchará a la máquina local y no podrás conectar nunca.

root@porta:#vi /etc/default/portmap

Tiene que quedar algo parecido a esto:

#ARGS=127.0.0.1

Y por fin la lista de directorios que vamos a exportar en el fichero /etc/exports

root@porta:#vi /etc/exports
/mediateca 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
/copsec 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
/home/juantxu 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

Como puedes imaginar la estructura es: ruta del directorio + espacio + ip/red a la que vas a exportar + parametros

Los parametros 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 part 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.

Todo listo por aquí

Cliente NFS

En el lado del cliente tambien necesitamos los servicios básicos de NFS por lo que tenemos que hacer tambien una pequeña instalación

Instalación

Otra vez en un entorno Debianita o derivados es tan sencillo como :

root@porta:/home/juantxu# apt-get install nfs-common 

Configuración

Existen dos posibilidades básicas:

  1. Montar los volumenes bajo demanda
  2. Montar los volumenes al arrancar el sistema y tenerlos siempre montados.

Esta segunda opción es la más cómoda. Aunque en algunos casos, como en portatiles que se conectan a traves de wifi hace que el proceso de arranque se alargue un poquito. Para lo cual existen algunos trucos.

Montar un volumen NFS

Tan sencillo como hacer lo siguiente como usuario root:

root@porta:/home/juantxu# mount -t nfs ip_del_servidor:/path/del/servidor  /path/local/donde/quieres/montar opciones

Montar los volumenes al arrancar el sistema

Esto se puede hacer incluyendo los volúmenes a montar en el fichero /etc/fstab

# device       mountpoint     fs-type     options      dump fsckorder
...
192.168.0.200:/home/juantxu /home/juantxu/nfs nfs rw,hard,intr 0 0

Fijate que sigue el mismo patron: ip del servidor:/ruta/a/montar /ruta/local/ sistema_de_archivos(nfs) opciones 0 0

Así es como lo tengo yo en mi máquina de sobremesa.Pero en el portatil esto hace que el arranque se retrase mucho ya que tiene que activar la red primero para poder montar los sistemas de archivos remotos. Esto lo he optimizado de la siguiente manera:

Montar volumenes al inicar la sesión

En realidad yo no quiero montar los directorios NFS hasta que no he accedido a la sesión por lo que he creado un script que me los monta bajo demanda al que llamo con el inicio de sesion. De ese modo se montan justo tras arrancar la sesión. Es cierto que si intentas abrir el directorio justo tras arrancar no tienes los archivos ahi. Pero… es una situación que se da una de cada 100 veces que arranca el portatil. Además tiene su gracia ir refrescando la carpeta hasta ver tus archivos. En contrapartida el portatil arranca mucho mas rápido y está listo para trabajar cuanto antes.

script:


#!/bin/bash
sudo mount -t nfs 192.168.1.200:/copsec /home/juantxu/copsec
sudo mount -t nfs 192.168.1.200:/home/juantxu /home/juantxu/ola

Ahora sólo hace falta llamar a este script al iniciar la sesión.

Como has visto hago un sudo para montar cada volumen porque es el usuario root el único que puede montar volumenes.

Sudo Visudo

Por ello debemos editar el fichero visudo. Esto nos permitirá indicarle al sistema que un script puede ejecutarse como root sin necesidad de pedir la contraseña de root.

La forma de editarlo es así :

sudo visudo

y le añadimos la linea referente a nuestro script

TU_USUARIO ALL = NOPASSWD: /home/juantxu/scripts/montaOla.sh

Y ya está!

Ahora tan sólo hay que invocar el script al iniciar la sesión.

A lo CMD

Editas el fichero .profile de tu directorio $HOME y lo invocas al final.

cd $HOME
vi .profile

y añades:

# script para montar volumenes NFS
sudo /home/juantxu/scripts/montaOla.sh

A lo I.G.U

Te vas al menú Sistema =⇒ Preferencias =⇒ Sesiones

Te aparecerá una interfaz parecida a esta

Picas sobre añadir y añades el lanzador para el script que acabamos de crear

  • Nombre : Pues el nombre que tu quieras
  • Orden: sudo /ruta/a/tu/script.sh
  • Comentario : Pos eso.

Y ya está. Fijate que te aparece en el listado de Programas de inicio y que te aparece seleccionado.

Ya puedes reiniciar el sistema para comprobar que efectivamente se monta

 
red/nfs.txt · Última modificación: 2008/05/28 05:35 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki