El advenimiento de la computación distribuida estuvo marcado por la introducción de sistemas de archivos distribuidos. Dichos sistemas involucraban múltiples máquinas cliente y uno o unos pocos servidores. El servidor almacena datos en sus discos y los clientes pueden solicitar datos a través de algunos mensajes de protocolo.
Ventajas de un sistema de archivos distribuido:
- Permite compartir fácilmente los datos entre los clientes.
- Proporciona administración centralizada.
- Proporciona seguridad, es decir, solo se deben proteger los servidores para proteger los datos.
Arquitectura del sistema de archivos distribuidos:
Incluso una arquitectura simple de cliente/servidor involucra más componentes que los sistemas de archivos físicos discutidos anteriormente en OS. La arquitectura consta de un sistema de archivos del lado del cliente y un sistema de archivos del lado del servidor . Una aplicación cliente emite una llamada al sistema (por ejemplo, leer(), escribir(), abrir(), cerrar(), etc.) para acceder a archivos en el sistema de archivos del lado del cliente, que a su vez recupera archivos del servidor. Es interesante notar que para una aplicación cliente, el proceso no parece diferente a solicitar datos de un disco físico, ya que no se requiere una API especial para hacerlo. Este fenómeno se conoce como transparencia en términos de acceso a archivos. Es el sistema de archivos del lado del cliente el que ejecuta los comandos para dar servicio a estas llamadas al sistema.
Por ejemplo, suponga que una aplicación cliente emite la llamada al sistema read(). Luego, el sistema de archivos del lado del cliente envía un mensaje al sistema de archivos del lado del servidor para leer un bloque del disco del servidor y devolver los datos al cliente. Finalmente, almacena estos datos en el búfer read() y completa la llamada al sistema.
El sistema de archivos del lado del servidor también se denomina simplemente servidor de archivos .
Sistema de archivos de red de Sun:
El primer sistema distribuido exitoso podría atribuirse a Sun Microsystems, que desarrolló el Sistema de archivos de red (NFS). NFSv2 fue el protocolo estándar seguido durante muchos años, diseñado con el objetivo de una recuperación simple y rápida de fallas del servidor. Este objetivo es de suma importancia en las arquitecturas de red basadas en múltiples clientes y un solo servidor porque un solo instante de falla del servidor significa que todos los clientes quedan sin servicio. Todo el sistema se cae.
Los protocolos con estado complican las cosas cuando se trata de bloqueos. Considere un cliente A que intenta acceder a algunos datos del servidor. Sin embargo, justo después de la primera lectura, el servidor colapsó. Ahora, cuando el servidor está funcionando, el cliente A emite la segunda solicitud de lectura. Sin embargo, el servidor no sabe a qué archivo se refiere el cliente, ya que toda esa información era temporal y se perdió durante el bloqueo.
Los protocolos sin estado vienen a nuestro rescate. Dichos protocolos están diseñados para no almacenar ninguna información de estado en el servidor. El servidor no sabe qué están haciendo los clientes: qué bloques están almacenando en caché, qué archivos abren y dónde están sus punteros de archivo actuales. El servidor simplemente entrega toda la información que se requiere para atender la solicitud de un cliente. Si ocurre un bloqueo del servidor, el cliente simplemente tendría que volver a intentar la solicitud. Debido a su simplicidad, NFS implementa un protocolo sin estado.
Identificadores de archivos :
NFS utiliza identificadores de archivos para identificar de forma exclusiva un archivo o un directorio en el que se está realizando la operación actual. Este consta de los siguientes componentes:
- Identificador de volumen: un servidor NFS puede tener varios sistemas de archivos o particiones. El identificador de volumen le dice al servidor a qué sistema de archivos se hace referencia.
- Número de iNode: este número identifica el archivo dentro de la partición.
- Número de generación: este número se usa al reutilizar un número de iNode.
Atributos de archivo:
«Atributos de archivo» es un término comúnmente utilizado en la terminología de NFS. Este es un término colectivo para los metadatos rastreados de un archivo, incluida la hora de creación del archivo, la última modificación, el tamaño, los permisos de propiedad, etc. Se puede acceder llamando a stat() en el archivo.
Protocolo NFSv2:
A continuación se enumeran algunos de los mensajes de protocolo comunes.
Mensaje | Descripción |
---|---|
NFSPROC_GETATTR | Dado un identificador de archivo, devuelve los atributos del archivo. |
NFSPROC_SETATTR | Establece/actualiza los atributos del archivo. |
NFSPROC_LOOKUP | Dado el identificador de archivo y el nombre del archivo para buscar, devuelve el identificador de archivo. |
NFSPROC_READ | Dado el identificador de archivo, el desplazamiento, los datos de conteo y los atributos, lee los datos. |
NFSPROC_ESCRIBIR | Dado el identificador de archivo, el desplazamiento, los datos de conteo y los atributos, escribe datos en el archivo. |
NFSPROC_CREATE | Dado el identificador del directorio, el nombre del archivo y los atributos, crea un archivo. |
NFSPROC_REMOVE | Dado el identificador del directorio y el nombre del archivo, elimina el archivo. |
NFSPROC_MKDIR | Dado el identificador de directorio, el nombre del directorio y los atributos, crea un nuevo directorio. |
El mensaje de protocolo LOOKUP se utiliza para obtener el identificador de archivo para acceder a más datos. El protocolo de montaje NFS ayuda a obtener el identificador de directorio para el directorio raíz (/) en el sistema de archivos. Si una aplicación cliente abre un archivo /abc.txt, el sistema de archivos del lado del cliente enviará una solicitud de BUSCAR al servidor, a través del identificador de archivo raíz (/) en busca de un archivo llamado abc.txt. Si la búsqueda tiene éxito, se devuelven los atributos del archivo.
Almacenamiento en caché del lado del cliente:
para mejorar el rendimiento de NFS, los sistemas de archivos distribuidos almacenan en caché los datos y los metadatos leídos del servidor a los clientes. Esto se conoce como almacenamiento en caché del lado del cliente. Esto reduce el tiempo necesario para los accesos posteriores de los clientes. El caché también se usa como un búfer temporal para escribir. Esto ayuda a mejorar aún más la eficiencia ya que todas las escrituras se escriben en el servidor a la vez.
Publicación traducida automáticamente
Artículo escrito por Anannya Uberoi 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA