NFS, Compartiendo archivos en red


tuxgentoo 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 constántemente 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 icon smile NFS, Compartiendo archivos en red

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.

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

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 icon wink NFS, Compartiendo archivos en red

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¡ icon smile NFS, Compartiendo archivos en red

Enlaces complementarios:


Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: Cortex

Compartir este Artículo
  • http://www.anotheronebytesthedust.com Anonimo-xD

    el NFS no es muy seguro,,, pero gracias por el aporte…

  • http://www.dragonjar.org Cortex

    @ANONIMO-XD: En realidad NFS con sus configuraciones por defecto, puede que no sea muy seguro. De cualquier manera haciendo unos ajustes y configurando un par de cosas se puede lograr un poco de _tranquilidad_ a la hora de usar este protocolo.

    Este documento podría ser de utilidad:
    http://tldp.org/HOWTO/NFS-HOWTO/security.html

  • http://plagatux.es piponazo

    Una duda tonta. Yo también uso gentoo en mis dos equipos pero tengo la red configurada mediante SAMBA/CIFS. Quería saber que ventajas/desventajas presenta usar un protocolo frente a otro, pensando en un entorno doméstico donde en principio no debería preocuparme mucho por el tema de “seguridad”. Sobre todo me interesan que las transferencias sean rápidas y el proceso de configuración sencillo.

  • http://www.dragonjar.org Cortex

    @PIPONAZO: Pues todo depende de los sistemas operativos que tengas instalado. En caso de que estés compartiendo información con alguna máquina con Windows instalado, lo más recomendable es que sigas usando SMB/CIFS. Pero si estás utilizando en ambas máquinas Gentoo Linux lo más cómodo y con mejor rendimiento sería NFS.

    La velocidad de transferencias puede ser modificada especificando los parámetros correctos. Posiblemente si no ajustas nada, la tasa de transferencia puede resultar un poco lenta. Revisa de nuevo el artículo, lo he actualizado haciendo referencia a lo que te comento ;)

    Saludos!

  • http://vierito.es/wordpress vierito5

    Un dato importante es que sólo se pueden exportar vía NFS volúmenes montandos con ntfs-3g si el kernel es igual o superior al 2.6.27 o en su defecto usamos externamente el paquete FUSE 2.7.4 o superior.

    En versiones anteriores no era posible por deficiencias del módulo FUSE del kernel.

  • benfrid

    Excelente artículo. Desde hace un tiempo atrás me había preguntado cómo compartir archivos en linux.
    Gracias.

  • http://www.dragonjar.org Cortex

    @VIERITO5: Muchas gracias por la aclaración Javi ;)

    Saludos!

  • http://www.anotheronebytesthedust.com Anonimo-xD

    bueno yo creo que el NFS con la configuración que sea es inseuro hay muchisimas formas de intrusión por NFS…

  • Pingback: ¿Cómo compartir partición entre dos equipos? | Linux4newbies