Un sistema de archivos en clúster ( CFS ) es un sistema de archivos que se comparte al montarse simultáneamente en varios servidores . Existen varios enfoques para la agrupación en clústeres , la mayoría de los cuales no emplean un sistema de archivos en clúster (solo almacenamiento adjunto directo para cada nodo). Los sistemas de archivos en clúster pueden proporcionar características como direccionamiento independiente de la ubicación y redundancia que mejoran la confiabilidad o reducen la complejidad de las otras partes del clúster. Los sistemas de archivos paralelos son un tipo de sistema de archivos en clúster que distribuye datos en varios nodos de almacenamiento, generalmente para redundancia o rendimiento. [1]
Un sistema de archivos de disco compartido utiliza una red de área de almacenamiento (SAN) para permitir que varias computadoras obtengan acceso directo al disco a nivel de bloque . El control de acceso y la traducción de las operaciones a nivel de archivo que utilizan las aplicaciones a las operaciones a nivel de bloque que utiliza la SAN deben realizarse en el nodo cliente. El tipo más común de sistema de archivos en clúster, el sistema de archivos de disco compartido, al agregar mecanismos para el control de concurrencia , proporciona una vista consistente y serializable del sistema de archivos, evitando la corrupción y la pérdida de datos no deseada incluso cuando varios clientes intentan acceder a los mismos archivos al mismo tiempo. Los sistemas de archivos de disco compartido comúnmente emplean algún tipo de mecanismo de cercado para evitar la corrupción de datos en caso de fallas de nodos, porque un dispositivo no cercado puede causar corrupción de datos si pierde la comunicación con sus nodos hermanos e intenta acceder a la misma información a la que acceden otros nodos.
La red de área de almacenamiento subyacente puede utilizar cualquiera de varios protocolos a nivel de bloque, incluidos SCSI , iSCSI , HyperSCSI , ATA sobre Ethernet (AoE), Fibre Channel , dispositivo de bloque de red e InfiniBand .
Existen diferentes enfoques arquitectónicos para un sistema de archivos de disco compartido. Algunos distribuyen la información de los archivos entre todos los servidores de un clúster (distribución total). [2]
Los sistemas de archivos distribuidos no comparten el acceso a nivel de bloque al mismo almacenamiento, sino que utilizan un protocolo de red . [3] [4] Estos se conocen comúnmente como sistemas de archivos de red , aunque no son los únicos sistemas de archivos que utilizan la red para enviar datos. [5] Los sistemas de archivos distribuidos pueden restringir el acceso al sistema de archivos dependiendo de las listas de acceso o capacidades tanto de los servidores como de los clientes, dependiendo de cómo esté diseñado el protocolo.
La diferencia entre un sistema de archivos distribuido y un almacén de datos distribuido es que un sistema de archivos distribuido permite acceder a los archivos utilizando las mismas interfaces y semánticas que los archivos locales (por ejemplo, montaje/desmontaje, listado de directorios, lectura/escritura en límites de bytes, modelo de permisos nativo del sistema). Los almacenes de datos distribuidos, por el contrario, requieren el uso de una API o biblioteca diferente y tienen semánticas diferentes (generalmente las de una base de datos). [6]
Los sistemas de archivos distribuidos pueden aspirar a la "transparencia" en varios aspectos. Es decir, aspiran a ser "invisibles" para los programas cliente, que "ven" un sistema similar a un sistema de archivos local. Tras bambalinas, el sistema de archivos distribuido se encarga de localizar archivos, transportar datos y, potencialmente, proporcionar otras funciones que se enumeran a continuación.
El sistema de tiempo compartido incompatible utilizó dispositivos virtuales para el acceso transparente al sistema de archivos entre máquinas en la década de 1960. Se desarrollaron más servidores de archivos en la década de 1970. En 1976, Digital Equipment Corporation creó el File Access Listener (FAL), una implementación del Protocolo de acceso a datos como parte de DECnet Phase II, que se convirtió en el primer sistema de archivos de red ampliamente utilizado. En 1984, Sun Microsystems creó el sistema de archivos llamado " Network File System " (NFS), que se convirtió en el primer sistema de archivos de red basado en el Protocolo de Internet ampliamente utilizado . [4] Otros sistemas de archivos de red notables son Andrew File System (AFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP) y Server Message Block (SMB), que también se conoce como Common Internet File System (CIFS).
En 1986, IBM anunció el soporte de cliente y servidor para la Arquitectura de Gestión de Datos Distribuidos (DDM) para los sistemas System/36 , System/38 y mainframes IBM que ejecutaban CICS . A esto le siguió el soporte para IBM Personal Computer , AS/400 , mainframes IBM con los sistemas operativos MVS y VSE , y FlexOS . DDM también se convirtió en la base de la Arquitectura de Base de Datos Relacional Distribuida , también conocida como DRDA.
Existen muchos protocolos de red peer-to-peer para sistemas de archivos distribuidos de código abierto para sistemas de archivos agrupados en la nube o de código cerrado, por ejemplo: 9P , AFS , Coda , CIFS/SMB , DCE/DFS , WekaFS, [7] Lustre , PanFS, [8] Google File System , Mnet, Chord Project .
El almacenamiento conectado a red (NAS) proporciona tanto almacenamiento como un sistema de archivos, como un sistema de archivos de disco compartido sobre una red de área de almacenamiento (SAN). NAS normalmente utiliza protocolos basados en archivos (a diferencia de los protocolos basados en bloques que utilizaría una SAN), como NFS (popular en sistemas UNIX ), SMB/CIFS ( Server Message Block/Common Internet File System ) (utilizado con sistemas MS Windows), AFP (utilizado con computadoras Apple Macintosh ) o NCP (utilizado con OES y Novell NetWare ).
La falla del hardware del disco o de un nodo de almacenamiento determinado en un clúster puede crear un único punto de falla que puede provocar la pérdida o falta de disponibilidad de los datos. La tolerancia a fallas y la alta disponibilidad se pueden proporcionar mediante la replicación de datos de un tipo u otro, de modo que los datos permanezcan intactos y disponibles a pesar de la falla de un solo equipo. Para ver ejemplos, consulte las listas de sistemas de archivos distribuidos tolerantes a fallas y sistemas de archivos distribuidos paralelos tolerantes a fallas .
Una medida de rendimiento común de un sistema de archivos en clúster es la cantidad de tiempo necesario para satisfacer las solicitudes de servicio. En los sistemas convencionales, este tiempo consiste en un tiempo de acceso al disco y una pequeña cantidad de tiempo de procesamiento de la CPU . Pero en un sistema de archivos en clúster, un acceso remoto tiene una sobrecarga adicional debido a la estructura distribuida. Esto incluye el tiempo para entregar la solicitud a un servidor, el tiempo para entregar la respuesta al cliente y, para cada dirección, una sobrecarga de la CPU para ejecutar el software del protocolo de comunicación .
El control de concurrencia se convierte en un problema cuando más de una persona o cliente accede al mismo archivo o bloque y desea actualizarlo. Por lo tanto, las actualizaciones del archivo desde un cliente no deberían interferir con el acceso y las actualizaciones de otros clientes. Este problema es más complejo con los sistemas de archivos debido a las escrituras superpuestas simultáneas, donde diferentes escritores escriben en regiones superpuestas del archivo simultáneamente. [9] Este problema generalmente se maneja mediante el control de concurrencia o el bloqueo que puede estar integrado en el sistema de archivos o proporcionado por un protocolo complementario.
Los mainframes de IBM en la década de 1970 podían compartir discos físicos y sistemas de archivos si cada máquina tenía su propia conexión de canal a las unidades de control de las unidades. En la década de 1980, los clústeres TOPS-20 y OpenVMS (VAX/ALPHA/IA64) de Digital Equipment Corporation incluían sistemas de archivos de discos compartidos. [10]
NFS fue diseñado para simplificar el uso compartido de recursos del sistema de archivos en una red de máquinas no homogéneas.
En última instancia, tanto VMS como TOPS-20 incorporaron este tipo de capacidad.