Difference between revisions of "NFS (Español)"

From ArchWiki
Jump to: navigation, search
(Actualizar)
Line 1: Line 1:
 
[[Category:File systems (Español)]]
 
[[Category:File systems (Español)]]
 
[[Category:Networking (Español)]]
 
[[Category:Networking (Español)]]
[[en:NFS]]
+
[[ar:NFS]]
 
[[de:Network File System]]
 
[[de:Network File System]]
 +
[[en:NFS]]
 
[[fr:NFS]]
 
[[fr:NFS]]
 
[[it:NFSv4]]
 
[[it:NFSv4]]
Line 11: Line 12:
 
{{Article summary wiki|NFS Troubleshooting}} - Artículo dedicado a los problemas y soluciones más comunes.
 
{{Article summary wiki|NFS Troubleshooting}} - Artículo dedicado a los problemas y soluciones más comunes.
 
{{Article summary end}}
 
{{Article summary end}}
Según la Wikipedia [[Wikipedia: Network File System|Wikipedia]]:  
+
Según la [[Wikipedia:es:Network_File_System|Wikipedia]]:  
:''El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.''
+
:''El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, desarrollado originariamente por Sun Microsystems en 1984, que permite a un usuario de un equipo cliente acceder a archivos remotos a través de una red, de una manera similar a como se accede a los archivos almacenados localmente.''
  
 
==Instalación==
 
==Instalación==
Tanto el cliente como el servidor necesitan únicamente de la [[Pacman|instalación]] del paquete {{Pkg|nfs-utils}}.
+
Tanto el cliente como el servidor necesitan únicamente de la [[Pacman (Español)|instalación]] del paquete {{Pkg|nfs-utils}}.
  
{{Nota|Es SUMAMENTE recomendable el uso de un demonio de sincronización horaria en TODOS los nodos de su red para mantener sincronizados los relojes de cliente y servidor. ¡Si no hay un ajuste preciso en los relojes de todos los nodos, el NFS puede presentar retrasos indeseados! El sistema [[NTP]] es recomendable para sincronizar tanto el servidor como los clientes con los servidores NTP extremadamente precisos disponibles en Internet.}}
+
{{Nota|Es SUMAMENTE recomendable el uso de un demonio de sincronización horaria en TODOS los nodos de su red para mantener sincronizados los relojes de cliente y servidor. ¡Si no hay un ajuste preciso en los relojes de todos los nodos, el NFS puede presentar retrasos indeseados! El sistema [[Network Time Protocol daemon|NTP]] es recomendable para sincronizar tanto el servidor como los clientes con los servidores NTP extremadamente precisos disponibles en Internet.}}
  
 
==Configuración==
 
==Configuración==
 
 
===Servidor===
 
===Servidor===
 
==== Mapeo de ID ====
 
==== Mapeo de ID ====
Line 37: Line 37:
 
Nobody-Group = nobody
 
Nobody-Group = nobody
 
</nowiki>}}
 
</nowiki>}}
 +
 
==== Sistema de archivos ====
 
==== Sistema de archivos ====
 +
 
{{Nota|Por razones de seguridad, es recomendable que use una raíz de exportación NFS con lo que mantendrá a los usuarios únicamente dentro de ese punto de montaje. El siguiente ejemplo ilustrará esta idea.}}
 
{{Nota|Por razones de seguridad, es recomendable que use una raíz de exportación NFS con lo que mantendrá a los usuarios únicamente dentro de ese punto de montaje. El siguiente ejemplo ilustrará esta idea.}}
  
Defina los archivos de NFS compartidos en {{ic|/etc/exports}} con una ruta es relativa a la raíz de NFS.  En este ejemplo, la raíz NFS será {{ic|/srv/nfs4}} y el recurso compartido será {{ic|/mnt/music}}.
+
Defina los archivos de NFS compartidos en {{ic|/etc/exports}} con una ruta relativa a la raíz de NFS.  En este ejemplo, la raíz NFS será {{ic|/srv/nfs4}} y el recurso compartido será {{ic|/mnt/music}}.
  
 
{{bc|# mkdir -p /srv/nfs4/music}}
 
{{bc|# mkdir -p /srv/nfs4/music}}
Line 56: Line 58:
  
 
==== Exportación ====
 
==== Exportación ====
 +
 
Añada los directorios que se compartirán y la dirección IP o nombre de servidor de las máquinas cliente a las que les estará permitido montarlas en {{ic|exports}}:
 
Añada los directorios que se compartirán y la dirección IP o nombre de servidor de las máquinas cliente a las que les estará permitido montarlas en {{ic|exports}}:
 
{{hc|/etc/exports|<nowiki>
 
{{hc|/etc/exports|<nowiki>
Line 66: Line 69:
 
Para más información sobre todas las opciones disponibles vea {{ic|man 5 exports}}.
 
Para más información sobre todas las opciones disponibles vea {{ic|man 5 exports}}.
  
Si usted modifica {{ic|/etc/exports}} mientras el servidor está funcionando, usted debe volver a exportarlos para que los cambios surtan efecto:
+
Si usted modifica {{ic|/etc/exports}} mientras el servidor está funcionando, debe volver a exportarlos para que los cambios surtan efecto:
{{bc|# exportfs -ra}}
+
{{bc|# exportfs -rav}}
  
 
====Arrancando el servidor====
 
====Arrancando el servidor====
  
[[Daemons|Encienda/habilite]] {{ic|rpc-idmapd.service}} y {{ic|rpc-mountd.service}}. Observe que esas unidades requieren de otros servicios, que serán lanzados automáticamente por [[systemd]].
+
[[Daemons|Encienda/habilite]] los servicios {{ic|rpc-idmapd}} y {{ic|rpc-mountd}}. Observe que esas unidades requieren de otros servicios, que serán lanzados automáticamente por [[systemd (Español)|systemd]].
 +
 
 +
==== Configuración del cortafuegos ====
 +
 
 +
Para activar el acceso a través de un cortafuegos, necesita abrir los puertos 111, 2049, y 20048 para tcp y udp. Para configurar dichos puertos para [[iptables (Español)|iptables]], edite {{ic|/etc/iptables/iptables.rules}} para incluir las líneas siguientes:
 +
 
 +
{{hc|/etc/iptables/iptables.rules|<nowiki>
 +
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
 +
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
 +
-A INPUT -p tcp -m tcp --dport 20048 -j ACCEPT
 +
-A INPUT -p udp -m udp --dport 111 -j ACCEPT
 +
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT
 +
-A INPUT -p udp -m udp --dport 20048 -j ACCEPT
 +
</nowiki>}}
 +
 
 +
Para aplicar los cambios, reinicie el servicio {{ic|iptables}}.
  
 
===Cliente===
 
===Cliente===
Los clientes necesitan de {{Pkg|nfs-utils}} para conectarse, pero no es necesaria una configuración especial cuando se conectan a un servidor NFS 4.
+
 
 +
Los clientes necesitan de {{Pkg|nfs-utils}} para conectarse, y para evitar una demora aproximadamente de 15 segundos a la que acompaña un error que dice: «RPC: AUTH_GSS upcall timed out», obligando a los usuarios a iniciar el servicio {{ic|rpc-gssd}} en cualquier equipo cliente.
 +
 
 +
{{Nota|Los servidores NFS4 no necesitan ejecutar este servicio.}}
  
 
====Montaje en Linux====
 
====Montaje en Linux====
 +
 
Muestre los sistemas de archivos exportados por el servidor:
 
Muestre los sistemas de archivos exportados por el servidor:
 
{{bc|$ showmount -e servername}}
 
{{bc|$ showmount -e servername}}
Line 84: Line 106:
  
 
=====Ajustes en /etc/fstab=====
 
=====Ajustes en /etc/fstab=====
El uso de [[fstab]] es útil para un servidor que siempre esté operativo, y los recursos compartidos a través de NFS estén disponible en cualquier lugar que arranque el cliente. Edite el archivo {{ic|/etc/fstab}}, y añada la línea de configuración apropiada. De nuevo, deberá omitir la ruta de la raíz de exportación del servidor NFS.
+
 
 +
El uso de [[fstab (Español)|fstab]] es útil para un servidor que siempre esté operativo, y los recursos compartidos a través de NFS estén disponible en cualquier lugar que arranque el cliente. Edite el archivo {{ic|/etc/fstab}}, y añada la línea de configuración apropiada. De nuevo, deberá omitir la ruta de la raíz de exportación del servidor NFS.
 
{{hc|/etc/fstab|<nowiki>
 
{{hc|/etc/fstab|<nowiki>
 
servername:/music  /mountpoint/on/client  nfs4  rsize=8192,wsize=8192,timeo=14,intr,_netdev 0 0
 
servername:/music  /mountpoint/on/client  nfs4  rsize=8192,wsize=8192,timeo=14,intr,_netdev 0 0
 
</nowiki>}}
 
</nowiki>}}
  
{{Nota|Aquí puede especificar opciones de montaje adicionales. Consulte la página principal de NFS para obtener más información.}}
+
{{Nota|Consulte la página principal de NFS para obtener más información.}}
 +
 
 
Algunas opciones de montaje adicionales que puede tener en cuenta para incluir son:
 
Algunas opciones de montaje adicionales que puede tener en cuenta para incluir son:
  
* {{ic|1=rsize=8192}} y {{ic|1=wsize=8192}}
+
; rsize y wsize: El valor {{ic|rsize}} es el número de bytes usados cuando se lee desde el servidor. El valor {{ic|wsize}} es el número de bytes usados cuando se escribe en el servidor. El valor predeterminado para ambos es 1024, pero si se usan valores mayores como 8192 puede mejorar el rendimiento.  Esto no es así de manera general. Es recomendable hacer pruebas antes de hacer definitivos estos cambios, véase [[#Ajustar el rendimiento]].
* {{ic|1=timeo=14}}
+
* {{ic|1=intr}}
+
* {{ic|1=_netdev}}
+
  
El valor {{ic|rsize}} es el número de bytes usados cuando se lee desde el servidor. El valor {{ic|wsize}} es el número de bytes usados cuando se escribe en el servidor. El valor predeterminado para ambos es 1024, pero si se usan valores mayores como 8192 puede mejorar el rendimiento.  Esto no es así de manera general. Es recomendable hacer pruebas antes de hacer definitivos estos cambios.
+
; timeo: El valor {{ic|timeo}} es la cantidad de tiempo, en décimas de segundo, que se debe esperar antes de volver a enviar una transmisión después de un tiempo de espera RPC. Después del primer tiempo de espera, este valor se doblará en cada reintento hasta alcanzar un máximo de 60 segundos o hasta que se produzca un tiempo de espera mayor. Si la conexión se realiza con un servidor lento o en una red muy concurrida, puede conseguir un mayor rendimiento si aumenta este tiempo de espera.  
  
El valor {{ic|timeo}} es la cantidad de tiempo, en décimas de segundo, que se debe esperar antes de volver a enviar una transmisión después de un tiempo de espera RPC. Después del primer tiempo de espera, este valor se doblará en cada reintento hasta alcanzar un máximo de 60 segundos o hasta que se produzca un tiempo de espera mayor. Si la conexión se realiza con un servidor lento o en una red muy concurrida, puede conseguir un mayor rendimiento si aumenta este tiempo de espera.  
+
; intr: La opción {{ic|intr}} permite enviar señales para interrumpir las operación de los archivos si ocurre un tiempo de espera mayor en la partición compartida.
  
La opción {{ic|intr}} permite enviar señales para interrumpir las operación de los archivos si ocurre un tiempo de espera mayor en la partición compartida.
+
; _netdev: La opción {{ic|_netdev}} le dice al sistema que espere hasta que la red esté operativa después de intentar montar el recurso compartido. systemd lo hace de manera predeterminada para NFS, pero de todas formas es una buena práctica usarlo para todos los tipos de sistemas de archivos en red.
 
+
La opción {{ic|_netdev}} le dice al sistema que espere hasta que la red esté operativa después de intentar montar el recurso compartido. systemd lo hace de manera predeterminada para NFS, pero de todas formas es una buena práctica usarlo para todos los tipos de sistemas de archivos en red.
+
  
 
=====Uso de autofs=====
 
=====Uso de autofs=====
El uso de [[autofs]] es útil cuando varías máquinas se quieren conectar a través de NFS; ya sean clientes o servidores. La razón por la cual este método es perferible a los más he reason this method is preferable over the actuales es que si el servidor se apaga, el cliente no mostrará mensajes de error al ser incapaz de encontrar los archivos compartidos. Revise [[autofs#NFS Network mounts]] para obtener mayor información.
+
 
 +
El uso de [[autofs]] es útil cuando varías máquinas se quieren conectar a través de NFS; ya sean clientes o servidores. La razón por la cual este método es perferible a los más actuales es que si el servidor se apaga, el cliente no mostrará mensajes de error al ser incapaz de encontrar los archivos compartidos. Revise [[autofs#NFS Network mounts]] para obtener mayor información.
  
 
==== Montaje en Windows ====
 
==== Montaje en Windows ====
{{nota|Solo las ediciones Ultimate y Enterprise de Windows 7 y la edición Enterprise de Windows 8 incluyen "Cliente de NFS".}}
 
Los archivos compartidos a través de NFS pueden ser montados desde Windows si el servicio "Cliente de NFS" está activo (no lo está de manera predeterminada).
 
Para instalar el servicio vaya a "Programas and características" en el Panel de Control y pulse en "Encender o apagar las características de Windows". Busque los "Servicios de NFS" y actívelos conjuntamente con los subservicios ("Herramientas administrativas" y "Cliente de NFS").
 
  
Puede seleccionar algunas opciones generales abriendo los "Servicios para Network File System" (localícelo con la caja de búsquedas) y pulse con el botón derecho en cliente->propiedades.  
+
{{nota|Solo las ediciones Ultimate y Enterprise de Windows 7 y la edición Enterprise de Windows 8 incluyen «Cliente de NFS».}}
  
{{Advertencia|Pueden producirse problemas graves de rendimiento (De forma aleatória tarda 30-60 segundos en mostrar la carpeta, velocidades de copia de 2 MB/s en una red LAN Gigabit, ...) para lo cual, Microsoft no tiene aún una solución.[https://social.technet.microsoft.com/Forums/en-CA/w7itpronetworking/thread/40cc01e3-65e4-4bb6-855e-cef1364a60ac]}}
+
Los archivos compartidos a través de NFS pueden ser montados desde Windows si el servicio «Cliente de NFS» está activo (no lo está de manera predeterminada).
 +
Para instalar el servicio vaya a «Programas y características» en el Panel de Control y pulse en «Encender o apagar las características de Windows». Busque los «Servicios de NFS» y actívelos conjuntamente con los subservicios («Herramientas administrativas» y «Cliente de NFS»).
 +
 
 +
Puede seleccionar algunas opciones generales abriendo los «Servicios para Network File System» (localícelo con la caja de búsquedas) y pulse con el botón secundario del ratón en cliente → propiedades.
 +
 
 +
{{Advertencia|Pueden producirse problemas graves de rendimiento (de forma aleatoria tarda 30-60 segundos en mostrar la carpeta, velocidades de copia de 2 MB/s en una red LAN Gigabit, ...) para lo cual, Microsoft no tiene aún una solución.[https://social.technet.microsoft.com/Forums/en-CA/w7itpronetworking/thread/40cc01e3-65e4-4bb6-855e-cef1364a60ac]}}
  
 
Para montar un recurso compartido mediante Explorer:
 
Para montar un recurso compartido mediante Explorer:
Line 122: Line 144:
  
 
==== Montaje en OS X ====
 
==== Montaje en OS X ====
{{note|OS X usa de forma predeterminada un puerto inseguro (>1024) para montar los recursos compartidos.}}
+
 
 +
{{nota|OS X usa de forma predeterminada un puerto inseguro (>1024) para montar los recursos compartidos.}}
 
O bien exporte del recurso compartido con la marca {{ic|insecure}}, y monte usando Finder:
 
O bien exporte del recurso compartido con la marca {{ic|insecure}}, y monte usando Finder:
  
Line 129: Line 152:
 
O, monte el recurso compartido usando un puerto seguro usando la terminal:
 
O, monte el recurso compartido usando un puerto seguro usando la terminal:
 
{{bc|# sudo mount -t nfs -o resvport servername:/srv/nfs4 /Volumes/servername}}
 
{{bc|# sudo mount -t nfs -o resvport servername:/srv/nfs4 /Volumes/servername}}
 +
 +
== Consejos y trucos ==
 +
 +
=== Ajustar el rendimiento ===
 +
 +
Con el fin de obtener el máximo rendimiento de NFS, es necesario ajustar las opciones de montaje de {{ic|rsize}} y {{ic|wsize}} para satisfacer los requisitos de la configuración de la red.
 +
 +
=== Manejar el montaje automático ===
 +
 +
Este consejo es muy útil para los portátiles que requieren compartir NFS desde una red inalámbrica local. Si el equipo NFS se vuelve inaccesible, el recurso compartido NFS se desmontará para evitar que el sistema se bloquea cuando usemos la opción {{ic|hard mount}}. Véase https://bbs.archlinux.org/viewtopic.php?pid=1260240#p1260240
 +
 +
Asegúrese de que los puntos de montaje NFS están indicados correctamente en {{ic|/etc/fstab}}:
 +
 +
{{hc|$ cat /etc/fstab|<nowiki>
 +
lithium:/mnt/data          /mnt/data         nfs noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0
 +
lithium:/var/cache/pacman  /var/cache/pacman nfs noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0</nowiki>
 +
}}
 +
 +
La opción de montaje {{ic | noauto}} le dice a systemd que no monte automáticamente los recursos compartidos en el arranque. De otro modo, systemd intentará montar los recursos compartidos nfs, que puedan o no existir en la red, demorando el proceso de arranque con una pantalla en blanco.
 +
 +
Con el fin de poder montar el recurso compartido NFS por un usuario normal, puede ser necesario añadir el grupo {{ic|user}} a la entrada fstab. También le posibilitará que active rpc-statd.service.
 +
 +
Cree el script {{ic|auto_share}}, que será utilizado por ''cron'' para comprobar si el equipo NFS está accesible:
 +
 +
{{hc|/root/bin/auto_share|<nowiki>
 +
#!/bin/bash
 +
 +
SERVER="YOUR_NFS_HOST"
 +
 +
MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut -f2 -d" ")
 +
 +
ping -c 1 "${SERVER}" &>/dev/null
 +
 +
if [ $? -ne 0 ]; then
 +
    # The server could not be reached, unmount the shares
 +
    for umntpnt in ${MOUNT_POINTS}; do
 +
        umount -l -f $umntpnt &>/dev/null
 +
    done
 +
else
 +
    # The server is up, make sure the shares are mounted
 +
    for mntpnt in ${MOUNT_POINTS}; do
 +
        mountpoint -q $mntpnt || mount $mntpnt
 +
    done
 +
fi
 +
</nowiki>}}
 +
 +
# chmod +x /root/bin/auto_share
 +
 +
Cree la entrada cron de root para ejecutar {{ic|auto_share}} en todo momento:
 +
 +
{{hc|# crontab -e|<nowiki>
 +
* * * * * /root/bin/auto_share
 +
</nowiki>}}
 +
 +
Un archivo de unidad de systemd también puede ser utilizado para montar los recursos compartidos NFS en el arranque. El archivo de unidad no es necesario si NetworkManager está instalado y configurado en el sistema cliente. Véase [[#NetworkManager dispatch]].
 +
 +
{{hc|/etc/systemd/system/auto_share.service|<nowiki>
 +
[Unit]
 +
Description=NFS automount
 +
 +
[Service]
 +
Type=oneshot
 +
RemainAfterExit=yes
 +
ExecStart=/root/bin/auto_share
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
</nowiki>}}
 +
 +
Ahora active {{ic|auto_share}}.
 +
 +
==== NetworkManager dispatcher ====
 +
 +
Además del método descrito anteriormente, NetworkManager también se puede configurar para ejecutar un script para cuando cambie el estado de la conexión de red.
 +
 +
Active e inicie el servicio {{ic|NetworkManager-dispatcher}}.
 +
 +
El método más fácil para montar recursos compartidos al cambiar el estado de la red es creando un enlace simbólico al script {{ic|auto_share}}:
 +
 +
# ln -s /root/bin/auto_share /etc/NetworkManager/dispatcher.d/30_nfs.sh
 +
 +
O, usando el script de montaje siguiente, que comprueba la disponibilidad de la red:
 +
 +
{{hc|/etc/NetworkManager/dispatcher.d/30_nfs.sh|<nowiki>
 +
#!/bin/bash
 +
 +
SSID="CHANGE_ME"
 +
 +
MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut -f2 -d" ")
 +
 +
ISNETUP=$(nmcli dev wifi | \grep $SSID | tr -s ' ' | cut -f 10 -d ' ') 2>/dev/null
 +
 +
# echo "$ISNETUP" >> /tmp/nm_dispatch_log
 +
 +
if [[ "$ISNETUP" == "yes" ]]; then
 +
    for mntpnt in ${MOUNT_POINTS}; do
 +
        mountpoint -q $mntpnt || mount $mntpnt
 +
    done
 +
else
 +
    for srvexp in ${MOUNT_POINTS}; do
 +
        umount -l -f $srvexp &>/dev/null
 +
    done
 +
fi
 +
</nowiki>}}
 +
 +
Ahora, cuando el SSID inalámbrico "CHANGE_ME" se encienda o se apaque, el script {{ic|nfs.sh}} será llamado para montar o desmontar los recursos compartidos, tan pronto le sea posible.
 +
 +
=== Configurar puertos fijos para NFS ===
 +
 +
{{Out of date|Está sección está referida originariamente a la versión 3 de NFS.}}
 +
Si tiene un [[Firewalls (Español)|cortafuegos]] configurado a través de un puerto, es posible que desee establecer puertos fijos. Para {{ic|rpc.statd}} y {{ic|rpc.mountd}} debe configurar los ajustes siguientes en {{ic|/etc/conf.d/nfs-common}} y {{ic|/etc/conf.d/nfs-server}} (los puertos pueden ser diferentes):
 +
 +
{{hc|/etc/conf.d/nfs-common|2=STATD_OPTS="-p 4000 -o 4003"}}
 +
{{hc|/etc/conf.d/nfs-server|2=MOUNTD_OPTS="--no-nfs-version 2 -p 4002"}}
 +
{{hc|/etc/modprobe.d/lockd.conf|2=# Static ports for NFS lockd
 +
options lockd nlm_udpport=4001 nlm_tcpport=4001}}
 +
 +
Después de reiniciar los demonios {{ic|nfs-common}}, {{ic|nfs-server}} y recargar los módulos {{ic|lockd}}, puede comprobar los puertos utilizados con la siguiente orden:
 +
{{hc|$ rpcinfo -p|
 +
  program vers proto  port  service
 +
    100000    4  tcp    111  portmapper
 +
    100000    3  tcp    111  portmapper
 +
    100000    2  tcp    111  portmapper
 +
    100000    4  udp    111  portmapper
 +
    100000    3  udp    111  portmapper
 +
    100000    2  udp    111  portmapper
 +
    100024    1  udp  4000  status
 +
    100024    1  tcp  4000  status
 +
    100021    1  udp  4001  nlockmgr
 +
    100021    3  udp  4001  nlockmgr
 +
    100021    4  udp  4001  nlockmgr
 +
    100021    1  tcp  4001  nlockmgr
 +
    100021    3  tcp  4001  nlockmgr
 +
    100021    4  tcp  4001  nlockmgr
 +
    100003    2  tcp  2049  nfs
 +
    100003    3  tcp  2049  nfs
 +
    100003    4  tcp  2049  nfs
 +
    100003    2  udp  2049  nfs
 +
    100003    3  udp  2049  nfs
 +
    100003    4  udp  2049  nfs
 +
    100005    3  udp  4002  mountd
 +
    100005    3  tcp  4002  mountd
 +
}}
 +
 +
A continuación, es necesario abrir los puertos 111-2049-4000-4001-4002-4003 TCP y UDP.
  
 
== Solución de problemas ==
 
== Solución de problemas ==
''Hay un artículo dedicado a la solución de problemas [[NFS Troubleshooting]].''
+
 
 +
''Hay un artículo dedicado a la solución de problemas: [[NFS Troubleshooting]].''
 +
 
 +
== Véase también ==
 +
 
 +
* Véase también [[Avahi]], una implementación  de Zeroconf que permite la detección automática de recursos compartidos NFS.
 +
* HOWTO: [[Diskless network boot NFS root]]
 +
* [http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm Very helpful]
 +
* Si va a configurar el servidor NFS con Arch Linux para ser usado por clientes con Windows mediante el SFU de Microsoft, sería aconsejable mirar [https://bbs.archlinux.org/viewtopic.php?pid=523934#p523934 este mensaje del foro] primero.
 +
* [http://blogs.msdn.com/sfu/archive/2008/04/14/all-well-almost-about-client-for-nfs-configuration-and-performance.aspx Microsoft Services for Unix NFS Client info]
 +
* [http://blogs.msdn.com/sfu/archive/2007/05/01/unix-interoperability-and-windows-vista.aspx Unix interoperability and Windows Vista] Requisitos previos para conectarse a NFS con Windows Vista.

Revision as of 17:07, 10 October 2013

Sumario help replacing me
El artículo trata sobre la configuración de NFSv4, el cual es un protocolo estándar de código abierto para compartir archivos en red.
Relacionado
NFS Troubleshooting - Artículo dedicado a los problemas y soluciones más comunes.

Según la Wikipedia:

El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, desarrollado originariamente por Sun Microsystems en 1984, que permite a un usuario de un equipo cliente acceder a archivos remotos a través de una red, de una manera similar a como se accede a los archivos almacenados localmente.

Instalación

Tanto el cliente como el servidor necesitan únicamente de la instalación del paquete nfs-utils.

Nota: Es SUMAMENTE recomendable el uso de un demonio de sincronización horaria en TODOS los nodos de su red para mantener sincronizados los relojes de cliente y servidor. ¡Si no hay un ajuste preciso en los relojes de todos los nodos, el NFS puede presentar retrasos indeseados! El sistema NTP es recomendable para sincronizar tanto el servidor como los clientes con los servidores NTP extremadamente precisos disponibles en Internet.

Configuración

Servidor

Mapeo de ID

Edite /etc/idmapd.conf y establezca el campo Domain con su nombre de dominio.

/etc/idmapd.conf
[General]
 
Verbosity = 1
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = atomic

[Mapping]

Nobody-User = nobody
Nobody-Group = nobody

Sistema de archivos

Nota: Por razones de seguridad, es recomendable que use una raíz de exportación NFS con lo que mantendrá a los usuarios únicamente dentro de ese punto de montaje. El siguiente ejemplo ilustrará esta idea.

Defina los archivos de NFS compartidos en /etc/exports con una ruta relativa a la raíz de NFS. En este ejemplo, la raíz NFS será /srv/nfs4 y el recurso compartido será /mnt/music.

# mkdir -p /srv/nfs4/music

Deberá otorgar permisos de lectura/escritura al directorio music para que los clientes puedan escribir en él.

Ahora monte el directorio que desea compartir, en este caso /mnt/music, en el directorio compartido de NFS a través de la instrucción de montaje:

# mount --bind /mnt/music /srv/nfs4/music

Para hacer que los cambios sean permanentes en cada reinicio del servidor, añada el enlace de montaje a fstab:

/etc/fstab
/mnt/music /srv/nfs4/music  none   bind   0   0

Exportación

Añada los directorios que se compartirán y la dirección IP o nombre de servidor de las máquinas cliente a las que les estará permitido montarlas en exports:

/etc/exports
/srv/nfs4/ 192.168.0.1/24(rw,fsid=root,no_subtree_check)
/srv/nfs4/music 192.168.0.1/24(rw,no_subtree_check,nohide) # note the nohide option which is applied to mounted directories on the file system.

Los usuarios no necesitan abrir el material compartido a la subred completa; se puede especificar solo una dirección IP o un nombre de servidor.

Para más información sobre todas las opciones disponibles vea man 5 exports.

Si usted modifica /etc/exports mientras el servidor está funcionando, debe volver a exportarlos para que los cambios surtan efecto:

# exportfs -rav

Arrancando el servidor

Encienda/habilite los servicios rpc-idmapd y rpc-mountd. Observe que esas unidades requieren de otros servicios, que serán lanzados automáticamente por systemd.

Configuración del cortafuegos

Para activar el acceso a través de un cortafuegos, necesita abrir los puertos 111, 2049, y 20048 para tcp y udp. Para configurar dichos puertos para iptables, edite /etc/iptables/iptables.rules para incluir las líneas siguientes:

/etc/iptables/iptables.rules
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20048 -j ACCEPT
-A INPUT -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT
-A INPUT -p udp -m udp --dport 20048 -j ACCEPT

Para aplicar los cambios, reinicie el servicio iptables.

Cliente

Los clientes necesitan de nfs-utils para conectarse, y para evitar una demora aproximadamente de 15 segundos a la que acompaña un error que dice: «RPC: AUTH_GSS upcall timed out», obligando a los usuarios a iniciar el servicio rpc-gssd en cualquier equipo cliente.

Nota: Los servidores NFS4 no necesitan ejecutar este servicio.

Montaje en Linux

Muestre los sistemas de archivos exportados por el servidor:

$ showmount -e servername

A continuación móntelos omitiendo la raíz de exportación del servidor NFS:

# mount -t nfs4 servername:/music /mountpoint/on/client
Ajustes en /etc/fstab

El uso de fstab es útil para un servidor que siempre esté operativo, y los recursos compartidos a través de NFS estén disponible en cualquier lugar que arranque el cliente. Edite el archivo /etc/fstab, y añada la línea de configuración apropiada. De nuevo, deberá omitir la ruta de la raíz de exportación del servidor NFS.

/etc/fstab
servername:/music   /mountpoint/on/client   nfs4   rsize=8192,wsize=8192,timeo=14,intr,_netdev	0 0
Nota: Consulte la página principal de NFS para obtener más información.

Algunas opciones de montaje adicionales que puede tener en cuenta para incluir son:

rsize y wsize
El valor rsize es el número de bytes usados cuando se lee desde el servidor. El valor wsize es el número de bytes usados cuando se escribe en el servidor. El valor predeterminado para ambos es 1024, pero si se usan valores mayores como 8192 puede mejorar el rendimiento. Esto no es así de manera general. Es recomendable hacer pruebas antes de hacer definitivos estos cambios, véase #Ajustar el rendimiento.
timeo
El valor timeo es la cantidad de tiempo, en décimas de segundo, que se debe esperar antes de volver a enviar una transmisión después de un tiempo de espera RPC. Después del primer tiempo de espera, este valor se doblará en cada reintento hasta alcanzar un máximo de 60 segundos o hasta que se produzca un tiempo de espera mayor. Si la conexión se realiza con un servidor lento o en una red muy concurrida, puede conseguir un mayor rendimiento si aumenta este tiempo de espera.
intr
La opción intr permite enviar señales para interrumpir las operación de los archivos si ocurre un tiempo de espera mayor en la partición compartida.
_netdev
La opción _netdev le dice al sistema que espere hasta que la red esté operativa después de intentar montar el recurso compartido. systemd lo hace de manera predeterminada para NFS, pero de todas formas es una buena práctica usarlo para todos los tipos de sistemas de archivos en red.
Uso de autofs

El uso de autofs es útil cuando varías máquinas se quieren conectar a través de NFS; ya sean clientes o servidores. La razón por la cual este método es perferible a los más actuales es que si el servidor se apaga, el cliente no mostrará mensajes de error al ser incapaz de encontrar los archivos compartidos. Revise autofs#NFS Network mounts para obtener mayor información.

Montaje en Windows

Nota: Solo las ediciones Ultimate y Enterprise de Windows 7 y la edición Enterprise de Windows 8 incluyen «Cliente de NFS».

Los archivos compartidos a través de NFS pueden ser montados desde Windows si el servicio «Cliente de NFS» está activo (no lo está de manera predeterminada). Para instalar el servicio vaya a «Programas y características» en el Panel de Control y pulse en «Encender o apagar las características de Windows». Busque los «Servicios de NFS» y actívelos conjuntamente con los subservicios («Herramientas administrativas» y «Cliente de NFS»).

Puede seleccionar algunas opciones generales abriendo los «Servicios para Network File System» (localícelo con la caja de búsquedas) y pulse con el botón secundario del ratón en cliente → propiedades.

Advertencia: Pueden producirse problemas graves de rendimiento (de forma aleatoria tarda 30-60 segundos en mostrar la carpeta, velocidades de copia de 2 MB/s en una red LAN Gigabit, ...) para lo cual, Microsoft no tiene aún una solución.[1]

Para montar un recurso compartido mediante Explorer:

Mi PC > Conectar una unidad de red > nombre de servidor:/srv/nfs4/music

Montaje en OS X

Nota: OS X usa de forma predeterminada un puerto inseguro (>1024) para montar los recursos compartidos.

O bien exporte del recurso compartido con la marca insecure, y monte usando Finder:

Go > Connect to Server > nfs://servername/

O, monte el recurso compartido usando un puerto seguro usando la terminal:

# sudo mount -t nfs -o resvport servername:/srv/nfs4 /Volumes/servername

Consejos y trucos

Ajustar el rendimiento

Con el fin de obtener el máximo rendimiento de NFS, es necesario ajustar las opciones de montaje de rsize y wsize para satisfacer los requisitos de la configuración de la red.

Manejar el montaje automático

Este consejo es muy útil para los portátiles que requieren compartir NFS desde una red inalámbrica local. Si el equipo NFS se vuelve inaccesible, el recurso compartido NFS se desmontará para evitar que el sistema se bloquea cuando usemos la opción hard mount. Véase https://bbs.archlinux.org/viewtopic.php?pid=1260240#p1260240

Asegúrese de que los puntos de montaje NFS están indicados correctamente en /etc/fstab:

$ cat /etc/fstab
lithium:/mnt/data           /mnt/data	        nfs noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0
lithium:/var/cache/pacman   /var/cache/pacman	nfs noauto,noatime,rsize=32768,wsize=32768,intr,hard 0 0

La opción de montaje noauto le dice a systemd que no monte automáticamente los recursos compartidos en el arranque. De otro modo, systemd intentará montar los recursos compartidos nfs, que puedan o no existir en la red, demorando el proceso de arranque con una pantalla en blanco.

Con el fin de poder montar el recurso compartido NFS por un usuario normal, puede ser necesario añadir el grupo user a la entrada fstab. También le posibilitará que active rpc-statd.service.

Cree el script auto_share, que será utilizado por cron para comprobar si el equipo NFS está accesible:

/root/bin/auto_share
#!/bin/bash

SERVER="YOUR_NFS_HOST"

MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut -f2 -d" ")

ping -c 1 "${SERVER}" &>/dev/null

if [ $? -ne 0 ]; then
    # The server could not be reached, unmount the shares
    for umntpnt in ${MOUNT_POINTS}; do
        umount -l -f $umntpnt &>/dev/null
    done
else
    # The server is up, make sure the shares are mounted
    for mntpnt in ${MOUNT_POINTS}; do
        mountpoint -q $mntpnt || mount $mntpnt
    done
fi
# chmod +x /root/bin/auto_share

Cree la entrada cron de root para ejecutar auto_share en todo momento:

# crontab -e
* * * * * /root/bin/auto_share

Un archivo de unidad de systemd también puede ser utilizado para montar los recursos compartidos NFS en el arranque. El archivo de unidad no es necesario si NetworkManager está instalado y configurado en el sistema cliente. Véase #NetworkManager dispatch.

/etc/systemd/system/auto_share.service
[Unit]
Description=NFS automount

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/root/bin/auto_share

[Install]
WantedBy=multi-user.target

Ahora active auto_share.

NetworkManager dispatcher

Además del método descrito anteriormente, NetworkManager también se puede configurar para ejecutar un script para cuando cambie el estado de la conexión de red.

Active e inicie el servicio NetworkManager-dispatcher.

El método más fácil para montar recursos compartidos al cambiar el estado de la red es creando un enlace simbólico al script auto_share:

# ln -s /root/bin/auto_share /etc/NetworkManager/dispatcher.d/30_nfs.sh

O, usando el script de montaje siguiente, que comprueba la disponibilidad de la red:

/etc/NetworkManager/dispatcher.d/30_nfs.sh
#!/bin/bash

SSID="CHANGE_ME"

MOUNT_POINTS=$(sed -e '/^.*#/d' -e '/^.*:/!d' -e 's/\t/ /g' /etc/fstab | tr -s " " | cut -f2 -d" ")

ISNETUP=$(nmcli dev wifi | \grep $SSID | tr -s ' ' | cut -f 10 -d ' ') 2>/dev/null

# echo "$ISNETUP" >> /tmp/nm_dispatch_log

if [[ "$ISNETUP" == "yes" ]]; then
    for mntpnt in ${MOUNT_POINTS}; do
        mountpoint -q $mntpnt || mount $mntpnt
    done
else
    for srvexp in ${MOUNT_POINTS}; do
        umount -l -f $srvexp &>/dev/null
    done
fi

Ahora, cuando el SSID inalámbrico "CHANGE_ME" se encienda o se apaque, el script nfs.sh será llamado para montar o desmontar los recursos compartidos, tan pronto le sea posible.

Configurar puertos fijos para NFS

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Está sección está referida originariamente a la versión 3 de NFS. (Discuss in Talk:NFS (Español)#)

Si tiene un cortafuegos configurado a través de un puerto, es posible que desee establecer puertos fijos. Para rpc.statd y rpc.mountd debe configurar los ajustes siguientes en /etc/conf.d/nfs-common y /etc/conf.d/nfs-server (los puertos pueden ser diferentes):

/etc/conf.d/nfs-common
STATD_OPTS="-p 4000 -o 4003"
/etc/conf.d/nfs-server
MOUNTD_OPTS="--no-nfs-version 2 -p 4002"
/etc/modprobe.d/lockd.conf
# Static ports for NFS lockd
options lockd nlm_udpport=4001 nlm_tcpport=4001

Después de reiniciar los demonios nfs-common, nfs-server y recargar los módulos lockd, puede comprobar los puertos utilizados con la siguiente orden:

$ rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   4000  status
    100024    1   tcp   4000  status
    100021    1   udp   4001  nlockmgr
    100021    3   udp   4001  nlockmgr
    100021    4   udp   4001  nlockmgr
    100021    1   tcp   4001  nlockmgr
    100021    3   tcp   4001  nlockmgr
    100021    4   tcp   4001  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100005    3   udp   4002  mountd
    100005    3   tcp   4002  mountd

A continuación, es necesario abrir los puertos 111-2049-4000-4001-4002-4003 TCP y UDP.

Solución de problemas

Hay un artículo dedicado a la solución de problemas: NFS Troubleshooting.

Véase también