NFS compartiendo archivos en red

NFS compartiendo archivos en red, en mi hogar tengo dos equipos (laptop y escritorio) ambos con la meta-distribución Gentoo Linux instalada, suelo utilizar el PC de Escritorio para almacenamiento por lo tanto ahí alojo gran parte de mi información.

Necesito estar accediendo constantemente a este equipo para compartir/modificar los datos que tengo. Gracias a NFS puedo disponer de ellos como si de una carpeta más de mi sistema se tratara... veamos cómo podemos hacer uso de este protocolo para hacer más fácil nuestra vida 🙂

NFS compartiendo archivos en red

Índice

NFS compartiendo archivos en red ¿De qué se trata NFS?

NFS (Network File System) es un protocolo de sistema de archivos en red desarrollado originalmente por Sun Microsystems en 1984, permitiéndole a un usuario en una máquina cliente acceder a los archivos en la red como si lo estuviera haciendo localmente. Es ampliamente usado en sistemas UNiX-like aunque también puede ser utilizado bajo plataformas Windows, Mac OS, Novell NetWare, entre otros.

NFS compartiendo archivos en red Un proceso con máquina GNU/Linux

El proceso se llevará acabo como mencioné anteriormente haciendo uso de máquinas con GNU/Linux. En caso de que quieras disponer de un cliente NFS bajo una plataforma Windows, puedes consultar los enlaces que se encuentran al final del post.

1. Habilitando el soporte para NFS en el kernel

NFS es tratado como un sistema de archivos más en el núclo del sistema (así como ext3, ext4, ReiserFS...) , por lo tanto debes activar el soporte en el mismo. En caso de que estés utilizando distribuciones como Ubuntu, Debian, Fedora, Arch y un gran etcétera lo más probable es que ya se encuentre activado por defecto este sistema de archivos. En caso de que uses Gentoo ó configures tus propios núcleos:

Servidor

File Systems  --->
  [*] Network File Systems  --->
    <*> NFS server support
      [*]   NFS server support for NFS version 3
      [ ]     NFS server support for the NFSv3 ACL protocol extension
      [ ]   NFS server support for NFS version 4 (EXPERIMENTAL)

Cliente

File Systems  --->
  [*] Network File Systems  --->
    <*>   NFS client support
      [*]    NFS client support for NFS version 3
      [ ]    NFS client support for the NFSv3 ACL protocol extension
      [ ]    NFS client support for NFS version 4 (EXPERIMENTAL)

Después de haber configurado, lo de siempre, compilar instalar: make && make modules_install

2. Instalar las utilidades para el espacio de usuario

Ahora que ya tenemos activado el soporte en nuestro núcleo, debemos instalar las herramientas que nos permitirán hacer uso de este protocolo en nuestra distribución:

    • Cliente Ubuntu/Debian:
aptitude install nfs-kernel-server nfs-common portmap
    • Servidor Ubuntu/Debian:
aptitude install nfs-kernel-server nfs-common portmap
    • Fedora:
yum -y install system-config-nfs
    • ArchLinux:
pacman -S nfs-utils
    • Gentoo:

emerge -av nfs-utils

NFS compartiendo archivos en red utilidades graficas para facilitar la configuración

En general, para cualquier distribución es el mismo proceso, excepto que en algunas se cuenta con utilidades gráficas que facilitan la configuración (por ejemplo Fedora). Como mencioné anteriormente lo haré desde Gentoo pero casi la totalidad del texto te servirá.

Empezaremos configurando el servidor

Para compartir un determinado directorio debemos editar el archivo /etc/exports. Ahí es donde se encuentra la información referente a los datos que se deben compartir y sus respectivos permisos. En mi caso quiero compartir dos particiones que tengo en el desktop: Warez y Stuff (particiones NTFS), así que primero deben estar montadas.

mount -t ntfs-3g /dev/sda2 /media/Warez
mount -t ntfs-3g /dev/sda3 /media/Stuff

Es recomendable automatizar un poco el proceso agregando las entradas necesarias a /etc/fstab. La dirección IP estática que tiene asignada mi laptop es: 192.168.1.178. Quiero que únicamente esta dirección IP tenga acceso a estos datos, así que edito el archivo /etc/exports y agrego las siguientes líneas:

/media/Stuff 192.168.1.178/255.0.0.0(async,rw,no_subtree_check)
/media/Warez 192.168.1.178/255.0.0.0(async,rw,no_subtree_check)

Expliquemos un poco la estructura

  • /media/Stuff: Es el directorio que quiero compartir. En caso de que quisieras compartir tu home simplemente reemplaza por /home/usuario ó lo que sea.
  • 192.168.1.178/255.255.255.0: Aquí estoy especificando la dirección IP que puede tener acceso a estos datos. En caso de que quieras compartir con cualquier equipo en la red bastaría con reemplazar la primera IP y por 192.168.0.0.
  • (async,rw,no_subtree_check): Estos son los parametros bajo los que se debe realizar la compartición. Veamos algunos de lo más usados e importantes:
    • rw: Permite lectura y escritura.
    • ro: Permite sólo lectura en el directorio.
    • async: Responde los pedidos antes de ser realizados. ES IMPORTANTE hacer uso de este parámetro ya que aumenta el rendimiento y evita que ocurran cosas como que el disco se llene en mitad de envío ya que primero hace las comprobaciones necesarias y después las ejecuta.
    • no_subtree_check: Deshabilita el chequeo del subárbol. Es recomendado al compartir directorios que cambien constántemente como /home. Más información man exports.
    • Estas son las más esenciales, para profundizar un poco puedes mirar aquí.

Guardamos el archivo e iniciamos el demonio para empezar a compartir nuestros archivos:

/etc/init.d/nfs start

En caso de que quieras que se inicie automáticamente en cada arranque del sistema (Gentoo):

rc-update add nfs boot

Y con esto terminamos de configurar el servidor.

Vamos ahora del lado del cliente.

Esta es la parte más sencilla de todas ya que simplemente basta con montar el directorio como si de una partición más se tratara. Quiero que los datos compartidos por NFS se encuentren en /mnt así que primero creo las carpetas:

mkdir -p /mnt/{Stuff,Warez}

Hecho esto procedo a montar las particiones:

mount 192.168.1.86:/media/Stuff /mnt/Stuff
mount 192.168.1.86:/media/Warez /mnt/Warez

¡Eso es todo! Ahora podemos acceder al directorio que hayamos asignado en nuestro sistema con los permisos que hayamos establecido 😉

A veces resulta bastante engorroso tener que estar ejecutando el anterior comando cada vez que queramos acceder a los datos. Podemos agilizar el proceso agregando una línea al archivo /etc/fstab:

192.168.1.86:/media/Stuff /mnt/Stuff nfs defaults,noauto,rsize=32768,wsize=32768 0 0

De esta manera para acceder a la carpeta en el servidor basta con ejecutar:

mount /mnt/Stuff

Y listo. Agregué la opción noauto para que no se monte automáticamente la partición ya que puede que el equipo servidor no se encuentre encendido ó no accedas muy frecuentemente a ella.

Y como diría mi compañero: ¡Eso es todo amigos¡ 🙂

Enlaces complementarios NFS compartiendo archivos en red

Subir