Network File System ( NFS ) es un protocolo de sistema de archivos distribuido desarrollado originalmente por Sun Microsystems (Sun) en 1984, [1] que permite a un usuario de una computadora cliente acceder a archivos a través de una red de computadoras de forma muy similar a como se accede al almacenamiento local. NFS, como muchos otros protocolos, se basa en el sistema de llamada a procedimiento remoto de computación en red abierta (ONC RPC). NFS es un estándar abierto definido en una Solicitud de comentarios (RFC), que permite a cualquiera implementar el protocolo.
Versiones y variaciones
Sun utilizó la versión 1 solo con fines experimentales internos. Cuando el equipo de desarrollo agregó cambios sustanciales a la versión 1 de NFS y la lanzó fuera de Sun, decidieron lanzar la nueva versión como v2, de modo que se pudiera probar la interoperación de versiones y la versión alternativa de RPC. [2] [3]
NFSv2
La versión 2 del protocolo (definido en RFC 1094, marzo de 1989) originalmente operaba solo sobre el Protocolo de datagramas de usuario (UDP). Sus diseñadores pretendían mantener el lado del servidor sin estado , con bloqueo (por ejemplo) implementado fuera del protocolo central. Las personas involucradas en la creación de la versión 2 de NFS incluyen a Russel Sandberg , Bob Lyon , Bill Joy , Steve Kleiman y otros. [1] [4]
La interfaz del Sistema de archivos virtual permite una implementación modular, reflejada en un protocolo simple. En febrero de 1986, se demostraron implementaciones para sistemas operativos como System V versión 2, DOS y VAX / VMS usando Eunice . [4] NFSv2 solo permite leer los primeros 2 GB de un archivo debido a las limitaciones de 32 bits .
NFSv3
La versión 3 (RFC 1813, junio de 1995) agregó:
- soporte para tamaños de archivo de 64 bits y compensaciones, para manejar archivos de más de 2 gigabytes (GB);
- soporte para escrituras asincrónicas en el servidor, para mejorar el rendimiento de escritura;
- atributos de archivo adicionales en muchas respuestas, para evitar la necesidad de recuperarlos;
- una operación READDIRPLUS, para obtener identificadores de archivos [5] y atributos junto con los nombres de los archivos al escanear un directorio;
- una variedad de otras mejoras.
La primera propuesta de NFS Versión 3 dentro de Sun Microsystems se creó poco después del lanzamiento de NFS Versión 2. La motivación principal fue un intento de mitigar el problema de rendimiento de la operación de escritura síncrona en NFS Versión 2. [6] Para julio de 1992, implementación La práctica había resuelto muchas deficiencias de la versión 2 de NFS, dejando solo la falta de compatibilidad con archivos grandes (tamaños y compensaciones de archivos de 64 bits) como un problema urgente. Esto se convirtió en un gran problema para Digital Equipment Corporation con la introducción de una versión de 64 bits de Ultrix para admitir su procesador RISC de 64 bits recientemente lanzado , el Alpha 21064 . En el momento de la introducción de la Versión 3, el soporte de los proveedores para TCP como protocolo de capa de transporte comenzó a aumentar. Si bien varios proveedores ya habían agregado soporte para NFS Versión 2 con TCP como transporte, Sun Microsystems agregó soporte para TCP como transporte para NFS al mismo tiempo que agregó soporte para la Versión 3. Uso de TCP como transporte realizado usando NFS sobre una WAN más factible y permitió el uso de tamaños de transferencia de lectura y escritura más grandes más allá del límite de 8 KB impuesto por el Protocolo de datagramas de usuario .
NFSv4
La versión 4 (RFC 3010, diciembre de 2000; revisada en RFC 3530, abril de 2003 y nuevamente en RFC 7530, marzo de 2015), influenciada por Andrew File System (AFS) y Server Message Block (SMB, también denominado CIFS), incluye mejoras de rendimiento, exige una seguridad sólida e introduce un protocolo con estado . [7] La versión 4 se convirtió en la primera versión desarrollada con el Grupo de trabajo de ingeniería de Internet (IETF) después de que Sun Microsystems entregó el desarrollo de los protocolos NFS.
La versión 4.1 de NFS (RFC 5661, enero de 2010; revisada en RFC 8881, agosto de 2020) tiene como objetivo proporcionar soporte de protocolo para aprovechar las implementaciones de servidores en clúster, incluida la capacidad de proporcionar acceso paralelo escalable a archivos distribuidos entre varios servidores (extensión pNFS). La versión 4.1 incluye un mecanismo de enlace troncal de sesión (también conocido como NFS Multipathing) y está disponible en algunas soluciones empresariales como VMware ESXi .
La versión 4.2 de NFS (RFC 7862) se publicó en noviembre de 2016 [8] con nuevas características que incluyen: clonación y copia del lado del servidor, aviso de E / S de la aplicación, archivos dispersos, reserva de espacio, bloque de datos de la aplicación (ADB), etiquetado como NFS con sec_label que se adapta a cualquier sistema de seguridad MAC y dos nuevas operaciones para pNFS (LAYOUTERROR y LAYOUTSTATS).
Una gran ventaja de NFSv4 sobre sus predecesores es que solo se usa un puerto UDP o TCP, 2049, para ejecutar el servicio, lo que simplifica el uso del protocolo a través de firewalls.
Otras extensiones
WebNFS , una extensión de la Versión 2 y la Versión 3, permite que NFS se integre más fácilmente en los navegadores web y habilite el funcionamiento a través de firewalls. En 2007, Sun Microsystems abrió su implementación de WebNFS del lado del cliente. [9]
Varios protocolos de banda lateral se han asociado con NFS. Nota:
- el protocolo de asesoramiento Network Lock Manager (NLM) de rango de bytes (agregado para admitir las API de bloqueo de archivos de UNIX System V )
- el protocolo de informes de cuotas remotas (RQUOTAD), que permite a los usuarios de NFS ver sus cuotas de almacenamiento de datos en servidores NFS
- NFS sobre RDMA , una adaptación de NFS que utiliza el acceso directo a memoria remota (RDMA) como transporte [10] [11]
- NFS-Ganesha, un servidor NFS, que se ejecuta en el espacio del usuario y admite varios sistemas de archivos como GPFS / Spectrum Scale, CephFS a través de los respectivos módulos FSAL (capa de abstracción del sistema de archivos). El CephFS FSAL admite el uso libcephfs [12]
- NFS de confianza (TNFS) [13]
Plataformas
NFS se usa a menudo con sistemas operativos Unix (como Solaris , AIX , HP-UX ), macOS de Apple y sistemas operativos similares a Unix (como Linux y FreeBSD ). También está disponible para sistemas operativos como Acorn RISC OS , [14] AmigaOS , el clásico Mac OS , OpenVMS , [3] MS-DOS , [15] Microsoft Windows , [16] OS / 2 , [17] ArcaOS , [18] Novell NetWare , [19] e IBM AS / 400 . [20] Los protocolos alternativos de acceso a archivos remotos incluyen el bloque de mensajes del servidor (SMB, también denominado CIFS), el protocolo de archivos de Apple (AFP), el protocolo central de NetWare (NCP) y el sistema de archivos del servidor de archivos OS / 400 (QFileSvr.400).
SMB y NetWare Core Protocol (NCP) ocurren con más frecuencia que NFS en sistemas que ejecutan Microsoft Windows; AFP ocurre con más frecuencia que NFS en sistemas Apple Macintosh ; y QFileSvr.400 ocurre con más frecuencia en los sistemas AS / 400 . Haiku en 2012 agregó soporte para NFSv4 como parte de un proyecto Google Summer of Code.
Implementación típica
Suponiendo un escenario de estilo Unix en el que una máquina (el cliente ) necesita acceso a los datos almacenados en otra máquina (el servidor NFS ):
- El servidor implementa procesos demonio NFS , que se ejecutan de forma predeterminada como
nfsd
, para que sus datos estén disponibles genéricamente para los clientes. - El administrador del servidor determina qué poner a disposición, exportando los nombres y parámetros de los directorios , normalmente utilizando el
/etc/exports
archivo de configuración y elexportfs
comando. - La administración de seguridad del servidor garantiza que pueda reconocer y aprobar clientes validados.
- La configuración de la red del servidor garantiza que los clientes adecuados puedan negociar con él a través de cualquier sistema de firewall .
- La máquina cliente solicita acceso a los datos exportados, normalmente mediante la emisión de un
mount
comando. (El cliente pregunta al servidor (rpcbind) qué puerto está usando el servidor NFS, el cliente se conecta al servidor NFS (nfsd), nfsd pasa la solicitud a mountd) - Si todo va bien, los usuarios de la máquina cliente pueden ver e interactuar con los sistemas de archivos montados en el servidor dentro de los parámetros permitidos.
Tenga en cuenta que la automatización del proceso de montaje NFS puede tener lugar - tal vez usando /etc/fstab
y / o montaje automático instalaciones.
Desarrollo de protocolo
Durante el desarrollo del protocolo ONC (llamado SunRPC en ese momento), solo el Network Computing System (NCS) de Apollo ofrecía una funcionalidad comparable. Dos grupos competidores se desarrollaron sobre diferencias fundamentales en los dos sistemas de llamada de procedimiento remoto. Argumentos centrados en el método de codificación de datos: la representación de datos externos (XDR) de ONC siempre mostraba los números enteros en orden big-endian , incluso si ambos pares de la conexión tenían arquitecturas de máquina little-endian , mientras que el método de NCS intentaba evitar el intercambio de bytes siempre que dos pares compartieran un endianidad común en sus arquitecturas de máquina. Un grupo industrial llamado Network Computing Forum se formó (marzo de 1987) en un intento (finalmente infructuoso) de reconciliar los dos entornos de computación en red.
En 1987, Sun y AT&T anunciaron que desarrollarían conjuntamente el UNIX System V Release 4 de AT&T . [21] Esto provocó que muchos de los otros licenciatarios del sistema UNIX de AT&T se preocuparan de que esto colocaría a Sun en una posición ventajosa y, finalmente, condujo a Digital Equipment. , HP, IBM y otros que formaron la Open Software Foundation (OSF) en 1988. Irónicamente, Sun y AT&T habían competido anteriormente por NFS de Sun contra el Sistema de archivos remotos (RFS) de AT&T , y la rápida adopción de NFS sobre RFS por parte de Digital Equipment, HP, IBM y muchos otros proveedores de computadoras inclinaron a la mayoría de los usuarios a favor de NFS. La interoperabilidad de NFS se vio favorecida por eventos denominados "Connectathons" que comenzaron en 1986 y que permitieron probar las implementaciones de forma neutra entre sí. [22] OSF adoptó el entorno informático distribuido (DCE) y el sistema de archivos distribuido DCE (DFS) sobre Sun / ONC RPC y NFS. DFS usó DCE como RPC y DFS derivó del Andrew File System (AFS); El propio DCE derivó de un conjunto de tecnologías, incluidas NCS y Kerberos de Apollo . [ cita requerida ]
Decenio de 1990
Sun Microsystems e Internet Society (ISOC) llegaron a un acuerdo para ceder el "control de cambios" de ONC RPC para que el organismo de estándares de ingeniería de ISOC, el Grupo de trabajo de ingeniería de Internet (IETF), pudiera publicar documentos de estándares (RFC) relacionados con ONC RPC. protocolos y podría extender ONC RPC. OSF intentó convertir a DCE RPC en un estándar IETF, pero finalmente se mostró reacio a renunciar al control de cambios. Más tarde, el IETF decidió extender ONC RPC agregando un nuevo tipo de autenticación basado en la Interfaz de Programa de Aplicación de Servicios de Seguridad Genérica (GSSAPI), RPCSEC GSS , para cumplir con los requisitos de IETF de que los estándares de protocolo tienen la seguridad adecuada.
Más tarde, Sun e ISOC llegaron a un acuerdo similar para otorgar a ISOC control de cambios sobre NFS, aunque redactaron el contrato con cuidado para excluir NFS versión 2 y versión 3. En cambio, ISOC obtuvo el derecho de agregar nuevas versiones al protocolo NFS, lo que resultó en IETF. especificando NFS versión 4 en 2003.
2000
En el siglo XXI, ni DFS ni AFS habían logrado un éxito comercial importante en comparación con SMB-CIFS o NFS. IBM, que anteriormente había adquirido el principal proveedor comercial de DFS y AFS, Transarc , donó la mayor parte del código fuente de AFS a la comunidad de software libre en 2000. El proyecto OpenAFS sigue vivo. A principios de 2005, IBM anunció el fin de las ventas de AFS y DFS.
En enero de 2010, Panasas propuso un NFSv4.1 basado en su tecnología Parallel NFS (pNFS) que afirmaba mejorar la capacidad de paralelismo de acceso a datos [23] . El protocolo NFSv4.1 define un método para separar los metadatos del sistema de archivos de la ubicación de los datos del archivo; va más allá de la simple separación de nombre / datos al dividir los datos entre un conjunto de servidores de datos. Esto difiere del servidor NFS tradicional que contiene los nombres de los archivos y sus datos bajo el paraguas único del servidor. Algunos productos son servidores NFS de varios nodos, pero la participación del cliente en la separación de metadatos y datos es limitada.
El servidor NFSv4.1 pNFS es un conjunto de recursos o componentes del servidor; se supone que están controlados por el servidor de metadatos.
El cliente pNFS todavía accede a un servidor de metadatos para atravesar o interactuar con el espacio de nombres; cuando el cliente mueve datos hacia y desde el servidor, puede interactuar directamente con el conjunto de servidores de datos que pertenecen a la colección de servidores pNFS. El cliente NFSv4.1 se puede habilitar para que sea un participante directo en la ubicación exacta de los datos del archivo y para evitar la interacción solitaria con un servidor NFS al mover datos.
Además de pNFS, NFSv4.1 proporciona:
- Sesiones
- Delegación de directorio y notificaciones
- Espacio de nombres de varios servidores
- listas de control de acceso y control de acceso discrecional
- Atribuciones de retención
- SECINFO_NO_NAME
Ver también
- 9P (protocolo) - Protocolo de sistema de archivos Plan 9
- Alluxio
- Andrew Sistema de archivos
- BeeGFS , el sistema de archivos paralelo
- CacheFS : un mecanismo de almacenamiento en caché para clientes NFS de Linux
- Sistema de archivos distribuido Hadoop ( HDFS )
- Kerberos (protocolo)
- Servicio de información de red
- Sistema de archivos remoto
- Calabaza de raíz
- Samba (software)
- Sistema de archivos Secure Shell : monte un directorio remoto utilizando solo un inicio de sesión ssh en la computadora remota
- Bloque de mensajes del servidor
- Recurso compartido
- Envoltorio TCP
Referencias
- ^ a b Russel Sandberg; David Goldberg; Steve Kleiman; Dan Walsh; Bob Lyon (1985). "Diseño e implementación del sistema de archivos Sun Network". USENIX . CiteSeerX 10.1.1.14.473 . Cite journal requiere
|journal=
( ayuda ) - ^ NFS ilustrado (2000) por Brent Callaghan - ISBN 0-201-32570-5
- ^ a b "Servicios HP TCP / IP para la gestión de OpenVMS" . h41379.www4.hpe.com . HP . Consultado el 24 de septiembre de 2016 .
- ^ a b Russel Sandberg. "El sistema de archivos Sun Network: diseño, implementación y experiencia" (PDF) . Informe técnico . Sun Microsystems.
- ^ Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (marzo de 2015). Sistemas operativos: tres piezas fáciles (PDF) (.9 ed.). Libros Arpaci-Dusseau. pag. 5 . Consultado el 8 de noviembre de 2017 .
- ^ Brian Pawlowski; Chet Juszczak; Peter Staubach; Carl Smith; Diane Lebel; David Hitz (1994). "Diseño e Implementación de NFS Versión 3" . USENIX .
- ^ "Versión 4 de NFS" . USENIX . 2005-04-14.
- ^ Haynes, Thomas (1 de noviembre de 2016). "NFS versión 4 versión secundaria 2" .
- ^ yanfs.dev.java.net [ enlace muerto permanente ]
- ^ Tom Talpey (28 de febrero de 2006). "Actualización de la (s) implementación (es) de NFS / RDMA" (PDF) . Network Appliance, Inc. Archivado desde el original (PDF) el 12 de mayo de 2011.
- ^ Brent Callaghan (28 de enero de 2002). "NFS sobre RDMA" (PDF) . Sun Microsystems.
- ^ Singh, Karan (2016). "4: Trabajar con el sistema de archivos Ceph". Libro de cocina de Ceph . Birmingham: Packt Publishing Ltd. p. 110. ISBN 9781784397364. Consultado el 21 de marzo de 2017 .
NFS-Ganesha es un servidor NFS que se ejecuta en el espacio del usuario y admite CephFS FSAL (capa de abstracción del sistema de archivos) mediante libcephfs.
- ^ Glover
, Fred. @zk3.dec.com>"Una especificación de las extensiones del protocolo Trusted NFS (TNFS)" . tools.ietf.org . - ^ [1]
- ^ "Otro software de SUN Microsystems" . www.computinghistory.org.uk . El Centro de Historia de la Computación . Consultado el 24 de septiembre de 2016 .
- ^ "Introducción a los servicios de Microsoft Windows para UNIX 3.5" . technet.microsoft.com . Microsoft . Consultado el 24 de septiembre de 2016 .
- ^ "Complemento NTFS para NetDrive" . ecsoft2.org . Consultado el 22 de septiembre de 2020 .
- ^ "NetDrive para OS / 2" . arcanoae.com . Consultado el 22 de septiembre de 2020 .
- ^ "Puerta de enlace NFS para NetWare 6.5" . www.novell.com . Novell . Consultado el 24 de septiembre de 2016 .
- ^ "Soporte del sistema de archivos de red OS / 400" (PDF) . publib.boulder.ibm.com . IBM . Consultado el 24 de septiembre de 2016 .[ enlace muerto permanente ]
- ^ Carole Patton (26 de octubre de 1987). "AT&T licenciará el chip SPARC de Sun Microsystems" . InfoWorld . pag. 37 . Consultado el 16 de julio de 2019 .
- ^ "¿Qué es Connectathon?" . Sitio web original de Connectathon.Org . Archivado desde el original el 28 de enero de 1999.
- ^ "pNFS" . Panasas . Consultado el 4 de agosto de 2013 .
enlaces externos
- RFC :
- RFC 5661 - Protocolo del sistema de archivos de red (NFS) versión 4 menor versión 1
- RFC 5403 - RPCSEC_GSS Versión 2
- RFC 3530 - Especificación del protocolo NFS versión 4
- RFC 2054 - Especificación WebNFS
- RFC 2339 - Acuerdo de control de cambios Sun / ISOC NFS
- RFC 2203 - Especificación RPCSEC_GSS
- RFC 1813 - Especificación del protocolo NFS versión 3
- RFC 1790 - Acuerdo de control de cambios de Sun / ISOC ONC RPC
- RFC 1094 - Especificación del protocolo NFS versión 2
- Varios recursos:
- IETF: Carta del sistema de archivos de red versión 4 (nfsv4)
- Descripción general de Linux NFS, preguntas frecuentes y documentos HOWTO
- Operación NFS explicada con diagramas de secuencia Archivado 2020-09-22 en Wayback Machine
- Revisión del artículo "Por qué NFS apesta" del Simposio de Linux de 2006 por Mike Eisler, 27 de octubre de 2006