lunes, 9 de noviembre de 2009

Servidor y cliente NFS

Estoy tan hocicón que no me da tiempo ni a hacer capturas. Ahora me ha dado por montar un sistema de NFS que viene a ser para compartir archivos, como Samba pero otro. Por que lo hago? Porque Samba me va como el puto culo. No se muy bien el motivo de esto, pero apenas pillo 1 mb de transferencia y pasar un archivo grande de un equipo a otro te puede hacer vomitar. Y esto en teoría no debería ser así. He leido varios comentarios de gente que dice que Samba está pensado para compartir archivos en redes en las que hay equipos con Windows. Y como en la mía no hay ninguno, probaremos esta otra alternativa.

Basicamente hay que instalar en el equipo que hace de servidor nfs-kernel-server y portmap si es que no lo mete automáticamente. Después de esto se crea un archivo que se llama /etc/exports el cual debemos editar para establecer las carpetas que queremos compartir. La verdad es que alguien debería currarse la forma de hacer esto graficamente.

Así pues lo editamos con sudo gedit /etc/exports o lo que sea y habría que añadir una linea de este estilo por cada una de las carpetas que queremos compartir:

/home/hocicon/datos/Peliculas 192.168.1.7(ro,no_root_squash,async)

Basicamente hay que poner la ruta que compartimos, la ip a la que damos acceso y los parametros. Puedes elegir entre ro para solo lectura y rw para escritura. El resto de parametros y otros más que he visto por ahí no tengo ni puta idea de lo que hacen. En otros lados he visto que ponen la ip y la mascara de subred, y en otros que ponen para que de acceso a todos los ordenadores de la red 192.168.1.0/24 pero a mi de esa manera no me funcionó.

Después de modificarlo ejecutamos sudo exportfs -a

La cosa debería estar lista en el lado del servidor. Siempre se puede hacer un sudo /etc/init.d/nfs-kernel-server restart pero no se si es necesario.

Ahora en el ordenador cliente hay que hacer parecido. Instalamos los paquetes portmap y nfs-common. Vamos a montar la carpeta que he puesto de ejemplo. Tenemos que tener creada la carpeta sobre la que lo queremos montar de antemano.

sudo mount 192.168.1.2:/home/hocicon/datos/Peliculas /home/hocicon2/carpetaparamontar

Esto debiera funcionar. Obviamente .2 es donde tenia el servidor y .7 el cliente. Ahora vamos con más mandanga. Queremos que esto suceda al arrancar el ordenador en vez de a mano. Entonces editamos sudo gedit /etc/fstab
Añadimos lo mismo una línea por cada carpeta:

192.168.1.2:/home/hocicon/datos/Peliculas /home/hocicon2/carpetaparamontar nfs rsize=8192,wsize=8192,timeo=14,intr,_netdev 0 0

Información de esto: rsize y wsize se supone que mejora el rendimiento aunque en otro lado vi que ponia valores distintos tratandose de una red gigabit. timeo=14 no tengo ni puta idea de lo que hace y yo en una de mis pruebas lo quite y me quede tan ancho. Intr más de lo mismo. Pero _netdev es FUNDAMENTAL. Aquí viene una de las mayores aberraciones que he visto. Resulta que si no pones _netdev, el sistema intentará montar la carpeta durante el arranque ANTES de que se establezca la conexión de area local. Exacto. Montarás pollacoles.
Pero _netdev tiene un nuevo y maravilloso misterio más. Y es que no funciona con WICD. Entonces yo no paraba de ver como la gente resolvia con esto su problema mientras a mi no me iba. Y era por usar el gestor de conexiones WICD en lugar del network-manager que viene de serie. Cambiado uno por otro y todo es felicidad.

ACTUALIZACION ACERCA DE LA VELOCIDAD
Aunque se supone que es más rápido NFS que Samba, a mi me funcionaba exactamente a la misma velocidad. Ya a punto de rendirme cambié de modelo de router, estaba trabajando con un Huawei de Jazztel y puse un Zyxel. Problema resuelto. La velocidad de transferencia en red local pasó a ser la que debería ser. No quiero ni pensar las horas que he pasado buscando fallos de configuración para finalmente descubrir que el puñetero router me limitaba la velocidad, no se por que motivo.

No hay comentarios: