Monte el recurso compartido NFS de Linux en Mountain Lion 10.8.5

Soy nuevo en el uso de Apple como sistema operativo principal. Estoy acostumbrado a fstab en Linux para mantener los montajes para nfs. Cuando uso Go toen Finder para montar nfs://serveripaddress/home/shared, aparece un error de permisos.

Sin embargo, el siguiente comando funciona desde la Terminal:

    mount -t nfs -o resvport,nolocks,locallocks,intr,soft,wsize=32768,rsize=3276 \
        serveripaddress:/home/shared /private/shared

¿Cómo puedo hacer que esto se monte cada vez que inicie sesión y vpn en la red donde reside este recurso compartido?

Actualmente, he recurrido a un script de shell en mi carpeta de documentos que, cuando se ejecuta, montará las unidades deseadas.
También estoy lidiando con NFS; vea mi respuesta a su pregunta a continuación. ¿Podría explicar las opciones de montaje en su ejemplo y por qué las está usando?

Respuestas (2)

He pasado bastante tiempo descubriendo los montajes automáticos de recursos compartidos NFS en OS X...

En algún momento, Apple decidió que permitir los montajes directamente en /Volumes no debería ser posible:

/etc/auto_master (ver última línea) :

#
# Automounter master map
#
+auto_master        # Use directory service
/net            -hosts      -nobrowse,hidefromfinder,nosuid
/home           auto_home   -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-          -static
/-          auto_nfs    -nobrowse,nosuid

/etc/auto_nfs (todo esto es una sola línea) :

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

Esto no funcionará (¡nunca más!) aunque "debería".

$ sudo automount -cv
...
automount: /Volumes/my_mount: mountpoint unavailable

¿Cual es la solución?

Es tan fácil que me quedé boquiabierto cuando lo descubrí. Básicamente, engañamos a OS X para que piense que estamos montando * en otro lugar. *

Cuando habla de rutas en casi cualquier entorno, la carpeta raíz es la ruta más alta a la que puede llegar, ya sea C:\(Windows) o /(*nix)

Cuando esté en esta ruta, al intentar llegar a la ruta principal, via ..lo mantendrá en la ruta raíz.

Por ejemplo: /../../../../sigue siendo solo/

Por ahora, algunos de ustedes ya lo han descubierto.

TL; DR / Solución:

Cambie su /etc/auto_nfsconfiguración de (todo esto es una línea) :

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

Para (todo esto es una sola línea) :

/../Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

Y vuelva a ejecutar el montador automático:

$ sudo automount -cv
...
automount: /Volumes/my_mount: mounted

..... ahí lo tienes! Técnicamente /../Volumessigue siendo así /Volumes, pero el montador automático no ve las cosas de esa manera;)

Esta configuración conserva el montaje entre reinicios y crea el punto de montaje automáticamente.

¿YO SE, VERDAD?

También soy nuevo en OSX. Así es como monté mi recurso compartido de Linux. Utilicé sudo vifsla que aparentemente es la forma preferida de OSX para editar archivos /etc/fstab. Luego ingresé una estrofa de montaje como la siguiente:

myserver:/path/to/files /Users/me/files nfs resvport,bg,async,nfc 0 0

Esto funciona y el montaje ocurre automáticamente. Sin embargo, estoy sufriendo el famoso problema de mostrar el rendimiento en el buscador (copiar al servidor rápidamente en la línea de comandos pero terriblemente lento en el buscador).

Las opciones de montaje que utilicé son:

  • resvport- necesitaba usar un puerto bajo como esperaba el servidor Linux
  • bg- el montaje se volverá a intentar en silencio en segundo plano si no tiene éxito
  • async- mi intento de aumentar el rendimiento. man mount_nfsy leer los riesgos.
  • nfc- hace que los caracteres UTF-8 funcionen correctamente ( man mount_nfs)

Para completar, aquí está la configuración del lado del servidor en /etc/exports:

/home/me/files 10.20.30.40(rw,sync,all_squash,anonuid=1000,anongid=100)

Aquí, 10.20.30.40 debería ser la IP del cliente OSX (suponiendo que desee restringir la exportación a ese cliente). Mi uid/gid de Linux son 1000/100. Solía all-squash​​convertir uid/gid a los que tengo en Linux debido a las diferencias de OSX. Esta no es una manera perfecta de hacer esto, pero satisface mis necesidades inmediatas.