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 entre múltiples nodos de almacenamiento, generalmente por motivos de 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 utilizadas por 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 protección para evitar la corrupción de datos en caso de fallas de los nodos, porque un dispositivo no protegido 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 información de archivos entre todos los servidores de un clúster (completamente distribuidos). [2]
Los sistemas de archivos distribuidos no comparten 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 según las listas de acceso o las capacidades tanto de los servidores como de los clientes, según 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ántica 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 una semántica diferente (la mayoría de las veces, la de una base de datos). [6]
Los sistemas de archivos distribuidos pueden aspirar a la "transparencia" en varios aspectos. Es decir, pretenden ser "invisibles" para los programas cliente, que "ven" un sistema similar a un sistema de archivos local. Detrás de escena, 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. En la década de 1970 se desarrollaron más servidores de archivos. En 1976, Digital Equipment Corporation creó 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 " Sistema de archivos de red " (NFS), que se convirtió en el primer sistema de archivos de red basado en 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ó soporte de cliente y servidor para la Arquitectura de gestión de datos distribuidos (DDM) para las computadoras centrales System/36 , System/38 y IBM que ejecutan 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 bases de datos relacionales distribuidas , 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 en clúster de código cerrado o en la nube, por ejemplo: 9P , AFS , Coda , CIFS/SMB , DCE/DFS , WekaFS, [7] Lustre , PanFS, [8] Sistema de archivos de Google , Mnet, Proyecto Chord .
El almacenamiento conectado a la red (NAS) proporciona almacenamiento y un sistema de archivos, como un sistema de archivos de disco compartido encima de una red de área de almacenamiento (SAN). NAS normalmente utiliza protocolos basados en archivos (a diferencia de los protocolos basados en bloques que usaría una SAN), como NFS (popular en sistemas UNIX ), SMB/CIFS ( Bloque de mensajes del servidor/Sistema de archivos común de Internet ) (usado con sistemas MS Windows) , AFP (usado con computadoras Apple Macintosh ) o NCP (usado 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 resultar en la pérdida o indisponibilidad de los datos. Se puede proporcionar tolerancia a fallas y alta disponibilidad 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 cualquier pieza del equipo. Para ver ejemplos, consulte las listas de sistemas de archivos distribuidos tolerantes a fallos y sistemas de archivos distribuidos paralelos tolerantes a fallos .
Una medida de rendimiento común de un sistema de archivos en clúster es la cantidad de tiempo necesaria 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 agrupado, 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 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 escrituras superpuestas simultáneas, donde diferentes escritores escriben en regiones superpuestas del archivo al mismo tiempo. [9] Este problema generalmente se soluciona mediante control de concurrencia o bloqueo que puede estar integrado en el sistema de archivos o proporcionado mediante 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 tuviera su propio canal de conexión a las unidades de control de las unidades. En la década de 1980, los clústeres TOPS-20 y OpenVMS de Digital Equipment Corporation (VAX/ALPHA/IA64) incluían sistemas de archivos de disco compartido. [10]
NFS fue diseñado para simplificar el intercambio de recursos del sistema de archivos en una red de máquinas no homogéneas.
Al final, tanto VMS como TOPS-20 ofrecieron este tipo de capacidad.