Sistema de archivos de red

Network File System ( NFS ) es un protocolo para el acceso de red a sistemas de archivos , desarrollado originalmente por Sun Microsystems en 1984 . Se toma como base el protocolo de llamada a procedimiento remoto ( ONC RPC , inglés  Open Network Computing Remote Procedure Call [1] ) . Le permite montar (montar) sistemas de archivos remotos a través de una red.

NFS se abstrae de los tipos de sistema de archivos del servidor y del cliente. Hay muchas implementaciones de servidores y clientes NFS para varios sistemas operativos y arquitecturas de hardware. La versión más madura de NFS es v.4 [2] , que admite varios medios de autenticación (en particular, Kerberos y LIPKEY usando el protocolo RPCSEC GSS ) y listas de control de acceso (tanto POSIX como Windows ).

NFS proporciona a los clientes un acceso transparente a los archivos y al sistema de archivos del servidor. A diferencia de FTP , el protocolo NFS accede solo a aquellas partes del archivo a las que accede el proceso, y su principal ventaja es que hace que este acceso sea transparente. Esto significa que cualquier aplicación cliente que pueda funcionar con un archivo local puede funcionar igualmente con un archivo NFS, sin ninguna modificación en el programa en sí.

Los clientes de NFS acceden a los archivos en un servidor NFS enviando solicitudes RPC al servidor. Esto se puede implementar utilizando procesos de usuario normales, es decir, el cliente NFS puede ser un proceso de usuario que realiza llamadas RPC específicas al servidor, que también puede ser un proceso de usuario.

Una parte importante de la última versión del estándar NFS (v4.1) es la especificación pNFS , que tiene como objetivo proporcionar una implementación paralela de intercambio de archivos que aumenta las tasas de transferencia de datos en proporción al tamaño y grado de paralelismo del sistema.

Objetivos de Desarrollo

Los requisitos iniciales para el desarrollo de NFS fueron:

Componentes de NFS

La implementación de NFS consta de varios componentes. Algunos de ellos están localizados en el servidor o en el cliente, y otros se usan en ambos lados de la conexión. Algunos componentes no son necesarios para la funcionalidad básica, pero forman parte de la interfaz NFS ampliada.

El protocolo NFS define un conjunto de solicitudes (operaciones) que puede enviar un cliente a un servidor, así como un conjunto de argumentos y valores de retorno para cada una de estas solicitudes. La versión 1 de este protocolo solo existía en las entrañas de Sun Microsystems y nunca se lanzó. Todas las implementaciones de NFS (incluido NFSv3) admiten NFS versión 2 (NFSv2), que se lanzó por primera vez en 1985 con SunOS 2.0. La versión 3 del protocolo se publicó en 1993 y varios proveedores la implementaron.

El protocolo de llamada a procedimiento remoto ( RPC ) define el formato de todas las comunicaciones entre un cliente y un servidor. Cada solicitud de NFS se envía como un paquete RPC.

La representación de datos externos (XDR ) proporciona un método independiente de la máquina para codificar datos para su transmisión a través de una red. Todas las solicitudes RPC usan codificación XDR para transferir datos. XDR y RPC se utilizan para implementar muchos otros servicios además de NFS.

El código del servidor NFS es responsable de manejar todas las solicitudes de los clientes y brindar acceso a los sistemas de archivos exportados. El código de cliente NFS implementa todo el acceso del sistema cliente a archivos remotos mediante el envío de una o más solicitudes RPC al servidor.

El protocolo de montaje define la semántica para montar y desmontar sistemas de archivos NFS. NFS utiliza varios procesos de daemon en segundo plano . En el servidor, un conjunto de demonios nfsd escucha y responde a las solicitudes de los clientes NFS. El demonio mountd maneja las solicitudes de montaje. En el cliente, un conjunto de demonios biod maneja la E/S asíncrona del bloque de archivos NFS.

Network Lock Manager (NLM) y Network Status Monitor (NSM) juntos proporcionan los medios para bloquear archivos en la red. Estas instalaciones, aunque no están asociadas formalmente con NFS, se pueden encontrar en la mayoría de las implementaciones de NFS. Proporcionan servicios que no son posibles en el protocolo subyacente. NLM y NSM implementan la funcionalidad del servidor mediante los demonios lockd y statd, respectivamente.

Versiones

La primera versión [3] solo se usó internamente en Sun con fines experimentales.

La versión 2 [3] (NFSv2) lanzada en marzo de 1989, originalmente se ejecutaba completamente sobre el protocolo UDP . Los desarrolladores han optado por no almacenar datos de estado interno dentro del protocolo, como el bloqueo implementado fuera del protocolo subyacente. Las personas involucradas en la creación de la versión 2 de NFS son Rusty Sandberg , Bob Lyon , Bill Joy y Steve Kleiman .

NFSv3 [4] se lanzó en junio de 1995, agregó soporte para descriptores de archivos de tamaño variable de hasta 64 bytes (en la versión 2, una matriz de tamaño fijo de 32 bytes), eliminó el límite de 8192 bytes en las llamadas de lectura y escritura RPC (por lo tanto, el tamaño del bloque transferido en las llamadas está limitado solo por el límite de datagramas UDP - 65535 bytes), se implementa soporte para archivos grandes, se admiten llamadas asíncronas para operaciones de escritura, ACCESO (verificación de derechos de acceso a archivos), MKNOD (creación de un Unix especial file) se agregan a los procedimientos READ y WRITE), READDIRPLUS (devuelve los nombres de los archivos en un directorio junto con sus atributos), FSINFO (devuelve información estadística sobre el sistema de archivos), FSSTAT (devuelve información dinámica sobre el sistema de archivos), PATHCONF (devuelve información POSIX.1 sobre un archivo) y COMMIT (confirma escrituras asincrónicas realizadas previamente en el almacenamiento permanente).

En el momento de la introducción de la versión 3, hubo un aumento en la popularidad entre los desarrolladores del protocolo TCP . Algunos desarrolladores independientes agregaron soporte para TCP a NFS versión 2 como medio de transporte, Sun Microsystems agregó soporte TCP para NFS en uno de los complementos de la versión 3. Con el soporte para TCP, fue posible usar NFS sobre WAN .

NFSv4 [2] se lanzó en diciembre de 2000, influenciado por AFS y CIFS , e incluye mejoras de rendimiento y seguridad. La versión 4 fue la primera versión desarrollada en conjunto con el Grupo de Trabajo de Ingeniería de Internet ( IETF ). La versión NFS v4.1 fue aprobada por el IESG en enero de 2010 [5] (la nueva especificación de 612 páginas se conoce como el documento más largo aprobado por el IETF). Una innovación importante en la versión 4.1 es la especificación pNFS - Parallel NFS, un mecanismo para el acceso paralelo del cliente NFS a los datos de múltiples servidores NFS distribuidos. La presencia de dicho mecanismo en el estándar del sistema de archivos de red ayudará a construir sistemas de información y almacenamiento en la nube distribuidos.

NFS versión 4.2 RFC 7862 se publicó en noviembre de 2016 e incluye nuevas características: clonación y copia del lado del servidor, recomendaciones de E/S de aplicaciones, archivos dispersos , reserva de espacio, bloque de datos de aplicación (ADB) etiquetado como NFS con el atributo sec_label que se adapta a cualquier MAC sistema de seguridad y dos nuevas operaciones para pNFS (LAYOUTERROR y LAYOUTSTATS).

Otros módulos

WebNFS es una extensión de las versiones 2 y 3 de NFS que permite una integración más sencilla en los navegadores web y brinda la capacidad de trabajar a través de un firewall . Varios protocolos de terceros se han asociado con NFS, incluidos:

Network Lock Manager (NLM) y Network Status Monitor (NSM) juntos proporcionan los medios para bloquear archivos en la red. Estas instalaciones, aunque no están asociadas formalmente con NFS, se pueden encontrar en la mayoría de las implementaciones de NFS. Proporcionan servicios que no son posibles en el protocolo subyacente. NLM y NSM implementan la funcionalidad del servidor mediante los demonios lockd y statd, respectivamente.

Protocolo de información de cuota remota (RQUOTAD) (NFS permite a los usuarios ver la cuota de disco en un servidor NFS remoto).

Plataformas

Aunque NFS se usa más comúnmente en sistemas similares a Unix, también se puede usar en otros sistemas operativos como Mac OS Classic , OpenVMS , Microsoft Windows , Novell NetWare e IBM i .

Configuración típica de cliente NFS y servidor NFS

Alternativas a NFS

Los protocolos alternativos de acceso a archivos incluyen SMB ( Server Message Block , también conocido como Samba y CIFS ), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP). En el sistema operativo Microsoft Windows, SMB y NetWare Core Protocol (NCP) se usan con más frecuencia que NFS. En los sistemas Macintosh, AFP es más común que NFS.

Véase también

Notas

  1. RFC1057 ; RFC 1831
  2. 12RFC 3010 ; _ RFC 3530
  3. 12RFC 1094 _
  4. RFC1813
  5. RFC 5661

Enlaces

Estándares