Configurar cliente de NFS en WRT

El objetivo de configurar un cliente de NFS en el WRT es poder ampliar las capacidades tanto de almacenamiento como de cantidad y complejidad máxima de ejecutar programas. Debido a que el WRT posee interfaces 100baseT1) y a que el protocolo NFS está diseñado para ser extremadamente eficiente, es que se pueden alcanzar tasas de transferencia más que interesantes y muy superiores a las que se alcanzarían con el Mod de la SD.

Sin embargo el mod de la SD tiene varias ventajas al método que se describe en este documento, las cuales deberían ser consideradas:

  • La memoria SD es independiente del estado de la red pues se enchufa mediante conectores especiales.
  • Al usar un cliente de NFS se precisa un servidor de NFS por lo cual se pasa a depender de la estabilidad del servidor, sin embargo la memoria SD no precisa de servidor alguno.

En este manual se asume que el WRT está corriendo OpenWRT kamikaze, pero otras distribuciones de linux basadas en OpenWRT deberían presentar a lo sumo diferencias muy mínimas.

Glosario

NFS:

Es un protocolo para poder acceder a un sistema de archivos remoto por medio de la red. Es muy eficiente y tanto cliente como servidor son extremadamente pequeños.

Mod de la SD:

Es una modificación que se le realizan a los WRT con el fin de poder enchufarle una memoria SD al equipo y poder usarlo como si fuera un disco duro.

montar:

Se le llama montar al procedimiento que implica hacer visible un sistema de archivos. Los sistemas de archivos están en red, o en dispositivos de bloques como disquetes, cederrones, discos duros, etc. Dicho en otras palabras es lo que permite enganchar el disquete en una carpeta y poder mediante esa carpeta ver lo que hay dentro del disquete.

Instalando un servidor de NFS

Para instalar el servidor de NFS es conveniente leer:

http://nfs.sourceforge.net/nfs-howto/

Y dado que es imprescindible tener un servidor de NFS para poder tener clientes de NFS, es que no tiene sentido alguno proceder con la guía si no se tiene un servidor en funcionamiento.

Para estar seguros de que el servidor funciona, es muy conveniente recordar los siguientes puntos y hacer una segunda verificación:

  • NFS funciona sobre TCP/UDP, por tanto hay que tener los puertos del NFS abiertos para la IP del cliente.
  • Para que NFS pueda funcionar, el servidor tiene que tener el portmap corriendo, y tiene que ser accesible desde el cliente, así que también tiene que estar abierto los puertos TCP/UDP del portmap hacia el cliente.
  • El cliente y el servidor tienen que estar conectados entre sí por red y haber rutas válidas entre ellos que permitan establecer simples conexiones TCP.
  • El cliente tiene que no estar en hosts.deny, o si está en hosts.deny tiene que estar también en hosts.allow.
  • El directorio a exportar en el servidor tiene que EXISTIR, y tiene que estar escrito correctamente, y el cliente tiene que estar admitido en la lista de acceso del directorio a exportar.
  • Hay que recordar que cada vez que se cambia el archivo /etc/exports hay que correr exportfs -ar.
  • El servidor de NFS tiene que estar funcionando, rpcinfo -p tiene que mencionar por lo menos una línea con nfs.

Instalando un cliente de NFS

He aquí la parte interesante del manual.

A modo de ejemplo se asumirá que la IP del servidor NFS es la 10.71.0.1, y que la IP del cliente de NFS, o sea la del AP, es la 10.71.0.137.

Para que el WRT pueda ser un cliente de NFS hay que montar en algún directorio del WRT la carpeta exportada en el servidor. Para eso se precisan los siguientes paquetes:

Paquetes

  • kmod-fs-nfs: Módulo del kernel para soporte NFS.
  • swap-utils (opcional): Herramientas para crear y habilitar swap.
  • losetup y kmod-loop (opcionales): Para configurar la emulación de disp. de bloques.

Nota: swap-utils, losetup y kmod-loop son los tes paquetes que nos dan las herramientas necesarias e imprescindibles para poder tener memoria swap a través de la red, si no se desea tener swap por sobre la red entonces es preferible no instalar los paquetes.

Para instalar, por ejemplo, el paquete kmod-fs-nfs hay que ejecutar:

ipkg update
ipkg install kmod-fs-nfs

Accediendo al sistema de archivos

Ya a partir de este momento es que se podría acceder al directorio exportado usando el comando:

mount 10.71.0.1:/carpeta/origen /destino -t nfs -o nolock

10.71.0.1:

Es la IP del servidor NFS.

/carpeta/origen:

Es el nombre del directorio tal cual está exportado en el servidor (ver /etc/exports).

/destino:

Este es el directorio en el WRT sobre el cual se montará la carpeta exportada. Es extremadamente conveniente que se elija adecuadamente el nombre del directorio de destino, siendo /mnt/algo una sabia decisión.

Si la carpeta de destino no existe, entonces antes de correr mount, hay que crearla con mkdir:

mkdir /destino

nfs:

nfs no es más que el tipo del sistema de archivos.

nolock:

nolock es la opción que nos permite montar el directorio exportado sin la necesidad de tener complejo software adicional en el WRT. Básicamente la funcionalidad que se pierde es la de poder bloquear archivos. Por tanto es conveniente recordar esto y no realizar tareas sobre el directorio montado que impliquen bloqueos.

Listo, ya podemos pensar en:

Dejar estos cambios permanentes

Como es deseable que se monte automáticamente al prender el Access Point, es que procedemos con las siguientes instrucciones.

En un cliente normal de NFS, lo que generalmente se haría para que al prender la computadora se montase automáticamente el directorio exportado, sería agregar una línea en el archivo /etc/fstab:

# <File system> <Mount point> <Type> <Options> <dump> <pass>
# Note: use option = defaults for nfs if no options
10.71.0.1:/carpeta/origen /destino nfs nolock 0 0

Pero debido a que el archivo /etc/fstab no se encuentra presente por omisión en el WRT, es que va a ser necesario crearlo desde cero con estas líneas recién mencionadas.

El siguiente paso es crear el siguiente script:

/etc/init.d/nfsmount:

#!/bin/sh /etc/rc.common
# copyright: Francisco Castro on Friday 23, November.
 
START=42
start(){
        grep -v '^ *#' /etc/fstab | {
        while read filesystem mountpoint type options dump pass
        do
                [ "$type" = "nfs" ] || continue
                if [ "$options" = "defaults" ]
                then
                        mount "$filesystem" "$mountpoint" -t nfs
                else
                        mount "$filesystem" "$mountpoint" -t nfs -o "$options"
                fi
        done
        }
}

y darle permisos de ejecución:

chmod +x /etc/init.d/nfsmount

Y finalmente para que se ejecute automáticamente al inicio hay que crear un enlaces simbólico:

ln -s /etc/init.d/nfsmount /etc/rc.d/S42nfsmount

Configurando la swap.

El siguiente paso es configurar la memoria swap, para lo cual los cambios no se dejarán permanentes, pero si así se deseara se tendría que seguir un procedimiento similar al mencionado en el punto anterior.

Con los paquetes swap-utils, losetup y kmod-loop instalados, hay que crear sobre el sistema de archivos compartido por NFS un archivo del tamaño que se desee para la swap. Una forma de crearlo es desde el servido ejecutar:

dd if=/dev/zero of=/carpeta/origen/swap count=BLOQUES

donde /carpeta/origen era el nombre del directorio tal cual estaba exportado, y BLOQUES es el número de bloques de 512 bytes que se desea tenga el archivo. Por ejemplo con count=2048 se crea un archivo de un megabyte, y con count=204800 se crea de 100 megabytes.

Una vez creado el archivo, desde el WRT hay que formatear la swap usando:

mkswap /destino/swap

y activarla usando:

LF=`losetup -f`
losetup "$LF" /destino/swap && swapon "$LF"

Finalmente para comprobar que la swap está marchando hay que correr el comando free: y ver una salida similar a esta:

              total         used         free       shared      buffers
  Mem:        14304        11052         3252            0          996
 Swap:       102392            0       102392
Total:       116696        11052       105644

Si no hubiera tenido swap, la salida hubiera sido:

              total         used         free       shared      buffers
  Mem:        14304        11052         3352            0          996
 Swap:            0            0            0
Total:        14304        11052         3352

Notar las diferencias.

1) También conocidas como Fast-Ethernet, permiten tasas de transferencia cercanas a los 10MBytes/s
 
manuales/configurar_cliente_de_nfs_en_wrt.txt · Última modificación: 2007/12/18 10:37 por fcr
 
Recent changes RSS feed Creative Commons License Powered by PHP Driven by DokuWiki