Tengo tres máquinas en producción.
machineA 10.66.136.129
machineB 10.66.138.181
machineC 10.66.138.183
y todas esas máquinas tienen Ubuntu 12.04 instalado y tengo acceso root a todas esas tres máquinas.
Ahora se supone que debo hacer las siguientes cosas en mis máquinas anteriores:
Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/
Ya he creado el /opt/exhibitor/conf
directorio en todas esas tres máquinas como se mencionó anteriormente.
Ahora estoy tratando de crear un punto de montaje. Así que seguí el siguiente proceso:
Instale archivos de soporte NFS y servidor de kernel NFS en las tres máquinas anteriores
$ sudo apt-get install nfs-common nfs-kernel-server
Cree el directorio compartido en las tres máquinas anteriores.
$ mkdir /opt/exhibitor/conf/
Edité /etc/exports
y agregó la entrada como esta en las tres máquinas anteriores:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/ 10.66.136.129(rw)
/opt/exhibitor/conf/ 10.66.138.181(rw)
/opt/exhibitor/conf/ 10.66.138.183(rw)
He intentado montar en la máquina A como a continuación desde la máquina B y la máquina C y me da este error:
root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
¿Mi /etc/exports
archivo se ve bien? Estoy bastante seguro, he estropeado mi exports
archivo. Como tengo el mismo contenido en las tres máquinas en el archivo de exportaciones.
¿Alguna idea de qué mal estoy haciendo aquí? ¿Y cuál será el /exports
archivo correcto aquí?
0750
o0700
el cliente que intenta montar es muy probable que falle con este mismo mensaje de error. Cambié el host de0750
a0755
y luego el error desapareció y todo estuvo bien.Respuestas:
exportfs
Cuando crea un
/etc/exports
archivo en un servidor, debe asegurarse de exportarlo. Por lo general, querrás ejecutar este comando:Esto exportará todas las entradas en el archivo de exportaciones.
showmount
La otra cosa que haré a menudo es desde otras máquinas. Comprobaré cualquier máquina que esté exportando recursos compartidos NFS a la red usando el
showmount
comando.Ejemplo
Digamos, por ejemplo, que he iniciado sesión en scully.
fstab
Para montar estos en las botas, agregaría esta línea a sus máquinas cliente que desean consumir los montajes NFS.
montaje automático
Si va a reiniciar estos servidores, le sugiero que busque configurar el montaje automático (
autofs
) en lugar de agregar estas entradas/etc/fstab
. Es un poco más de trabajo pero vale la pena el esfuerzo.Hacerlo le permitirá reiniciar los servidores de manera más independiente entre sí y también creará el montaje NFS cuando sea realmente necesario y / o esté siendo utilizado. Cuando esté inactivo, se desmontará.
Referencias
fuente
exportfs -a
, corríexportfs -rv
. ¿Hay alguna diferencia entre esos? Y en mi caso,showmount -e 10.66.136.129
lo haré desde machineB y machineC. ¿derecho?exportfs -rv
solo hace una reexportación + es detallado. El-a
exportará todo. En cuanto ashowmount -e
sí, puede ejecutarlo desde esas máquinas o la que sirve las acciones.Vi el mismo error (
mount.nfs: access denied by server while mounting...
) y el problema se solucionó mediante la-o v3
opción siguiente:fuente
mount.nfs: Connection timed out
. (El cliente es Ubuntu 14.04 LTS de 64 bits. El servidor es un QNAP NFS con QTS 4.0.2 2016/01/09.)En mi caso funciona usando nfs4 haciendo:
En el
/etc/export
archivo en el servidorfsid=0
crea el/Path/to/export
directorio raíz cuando monta el recurso compartido.crossmnt
, porque tengo algunas otras unidades en el sistema de archivos exportado a las que también quiero acceder.no_root_squash
, porque quiero acceder como usuario root (su) desde el lado del cliente. Estoy bastante seguro de que soy el único que puede hacer eso en mi red local.Servidor y clientes son Ubuntu 14.04 64bit.
Si quieres usar nfs3, la respuesta de @ fumisky-wells también funciona para mí.
fuente
Recibía el mismo mensaje de error y mi problema se debió a que la máquina del cliente tenía dos interfaces de red conectadas a la misma LAN. El servidor se había configurado para esperar una dirección IP específica y el tráfico salía en la segunda interfaz que tiene una dirección IP dhcp. Así que acabo de configurar la segunda interfaz para que tenga una dirección IP estática y también agregué la segunda dirección IP estática a la configuración del servidor.
fuente
/etc/exports
necesita ser editado en la máquina del servidor NFS , no en los clientes, como usted dice, ya que el servidor NFS lo verifica cuando un cliente solicita acceso a un recurso compartido.Si coloca lo siguiente en
/etc/exports
el servidor NFS, debería funcionar:fuente
exportfs -a
?Si nfs-client está tratando de montar el recurso compartido exportado dentro del contenedor de Linux, el contenedor debería ejecutarse en modo privilegiado.
En caso de estibador;
$ docker run -it --rm --privileged ubuntu:14.04
fuente
Para mí, el problema era que estaba usando la dirección IP del servidor en
/etc/exports/
lugar de la del cliente .La cuestión es que debe poner todos los ips a los que concede acceso en el servidor
/etc/exports/
fuente
Después de luchar con este mismo mensaje de error durante horas, mi problema resultó ser nada más complicado que los buenos permisos de archivos Linux en el host NFS.
La carpeta que estaba tratando de compartir (
/home/foo/app/share
) tenía los permisos correctos, pero debido a que el directorio de inicio del usuario (/home/foo
) tenía0750
modo, NFS no pudo atravesarla para acceder al directorio compartido.Tan pronto como configuré el directorio de inicio del usuario en modo
0751
, el servicio NFS pudo atravesarlo y pude montar el recurso compartido desde mi máquina cliente.fuente
Para mí, el problema era que mi enrutador cambió la dirección IP usada del cliente, de modo que la entrada en
/etc/exports
la máquina del servidor solo permitía el acceso a una dirección IP que ya no se usaba.fuente
Lo mismo podría suceder si intenta montar un recurso compartido NFS en la instancia de Virtual Box con el adaptador de red configurado como
NAT
.Elegir
Bridged Adapter
en la configuración de red de la máquina virtual soluciona este problema.fuente
Sé que este es un hilo viejo, pero mi problema tenía que ver con LXC y AppArmor .
Matar AppArmor , o agregar un perfil de excepción, lo reparó.
fuente
Este error también puede ser causado al intentar montar una ruta encriptada. (Por ejemplo, en su directorio de inicio, si elige encriptarlo)
fuente
La única solución que funcionó para mí fue exportar sistemas de archivos a partir de
/srv
. Parece que esto es una limitación (o una opción predeterminada, al menos) de NFSv4.Como estaba tratando de exportar una unidad USB
/media
a la que se monta automáticamente , necesitaba una forma de "montarla"/srv
. Para lograr eso:Y en
/etc/exports
:Cuando exportaba
/media/jim/wdportable/videos
directamente, siempre intentaba montar en el clientemount.nfs: access denied by server
.La
-o v3
solución funcionó, pero no quería forzar v3.fuente
/media/jim
carpeta. Si el directorio que está intentando compartir es (o está dentro de) un directorio con solo700
o750
modo, NFS no podrá atravesarlo. Si cambiaras/media/jim
a751
, probablemente funcionaría.sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
(raspbian en Raspi 3 B +), también lo intentésudo chmod 751 /media/pi
. Después, ya no necesitaba-o v3
:sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
hice el trabajo (después de desmontar). Muchas gracias a @DaleAnderson.Cabe señalar que una página vinculada que me llevó aquí tenía mi respuesta correcta, que era que NO se puede usar el comodín * en la dirección IP en la exportación. Es * (todas las IP) o se usa como comodín en los nombres de dominio IE: * .domain.com.
Por ejemplo: esto es correcto
Esto no funcionará (o al menos es incorrecto), pero funcionó para mí durante años hasta que intenté montar la exportación desde una VM de Fedora.
fuente