Sistema de archivos distribuido
From Wikipedia, the free encyclopedia
Un sistema de archivos distribuido o sistema de archivos de red es un sistema de archivos de computadoras que sirve para compartir archivos, impresoras y otros recursos como un almacenamiento persistente en una red de computadoras. El primer sistema de este tipo fue desarrollado en la década de 1970, y en 1985 Sun Microsystems creó el sistema de archivos de red NFS, que fue ampliamente utilizado como sistema de archivos distribuido. Otros sistemas notables utilizados fueron el sistema de archivos Andrew (AFS) y el sistema Server Message Block (SMB), también conocido como CIFS.
Un sistema de archivos distribuido es una solución para almacenar y acceder a datos basada en una arquitectura cliente/servidor. Los datos se almacenan en un dispositivo de almacenamiento central, pero se accede a ellos y se procesan como si estuvieran almacenados en una máquina cliente local. Con un sistema de archivos distribuido, los usuarios en la misma red comparten fácilmente información en los archivos de manera controlada y autorizada.
Un sistema de archivos distribuido va a permitir almacenar y acceder a archivos remotos como si fueran locales, esto sin notar pérdidas en el rendimiento. Este sistema es útil cuando es necesario que los usuarios tengan acceso a información compartida en diferentes ubicaciones de forma ininterrumpida.
Una de las ventajas de este tipo de sistemas es que se puede optimizar la carga de la red para que los nodos con mucho tráfico deriven recursos compartidos a otras ubicaciones de la red con lo cual se minimiza el riesgo de cuello de botella y se optimiza la velocidad de acceso a la información.
Una de las desventajas de este tipo de sistemas es que, al igual que el mismo sistema operativo del sistema distribuido, los sistemas de archivo suelen ser muy complejos, ya que muchas veces hay que llevar a cabo la sincronización de la lectura y escritura con el fin de proteger la integridad de los datos.
El desarrollo de sistemas computacionales surgió primero de forma centralizada, es decir, una sola computadora que trabaja de manera autónoma desde un lugar específico. La interacción era estática y el funcionamiento enfocado a trabajos muy específicos. A gran escala, un sistema trabajaba de la manera siguiente: se ingresaban los datos de entrada (tarjetas perforadas o cintas magnéticas), se esperaba a que la computadora procesara esas entradas y, cuando terminaba, regresaba los resultados obtenidos.
Después se desarrollaron sistemas operativos con modelos de tiempo compartido y la implementación de varias terminales conectadas a una computadora que se evolucionó a una manera más interactiva para el usuario y menos centralizada, pues ya no era necesario que los usuarios del sistema se encontraran presencialmente en el mismo lugar que el sistema; sólo necesitaba que su terminal estuviera conectada a la computadora central.
Aunque trabajar con terminales remotas ya era un avance, el problema era que el número de estas que podían estar conectadas a una computadora era limitado. Es por eso por lo que al abaratarse los precios de las estaciones de trabajo se dejó de trabajar con terminales y se optó por compartir y acceder a la información a través de una red, como la Ethernet. Así es como comienza el concepto de sistema de archivos distribuidos, con el objetivo de disponer de una manera conveniente y eficiente para compartir la información en una red local.
Los sistemas de archivos distribuidos surgieron con la necesidad de tener acceso de forma más rápida a archivos que se encontraban en otros equipos, ya que antes la forma de compartir archivos era mediante disquetes: se copiaba el archivo original a este y posteriormente se colocaba una copia al otro dispositivo. Esto no era del todo eficiente, ya que se necesitaban disponer de estos dispositivos de almacenamiento. Por ello, se comenzó a utilizar FTP (File Transfer Protocol), que eliminaba la necesidad de usar dispositivos extraíbles, pero seguía planteando el problema de tener varias copias de un archivo, en este caso el archivo original se debía copiar al servidor y posteriormente del servidor a la computadora destino. Este no era el único problema, ya que para poder comprar los archivos era necesario contar con las direcciones físicas de los equipos.
Clasificaciones de los sistemas de archivos
Existen cuatro principales clasificaciones de sistemas de archivos y cada una de ellas contiene subdivisiones o categorías.
La primera clasificación contine dos clases principales:
- Servidor de archivos real: es un sistema de archivos completo, reconoce nombres de archivos textuales y administra directorios de archivos para usuarios.
- Servidor de almacenamiento: este almacena datos en objetos no estructurados haciendo que únicamente sean accesibles por identificadores primitivos.
En esta siguiente, sus clases están basadas en tres parámetros (acceso a unidad de datos, unidad de bloqueo y ámbito de actualizaciones atómicas.
- Sistema de archivos simple
- Sistema de archivos universal
- Servidor de soporte de administración para bases de datos
Esta clasificación tres cuenta con dos tipos:
- Servicio tradicional de archivos: los archivos pueden ser abiertos, leídos y reescritos.
- Servicio de archivos robusto: para aplicaciones que requieren una alta fiabilidad
En la última clasificación se encuentran los sistemas de archivos distribuidos y la transferencia de archivos explícita. Esta clasificación está asociada a la primera y toma acceso remoto de archivos en consideración:
- Transferencia de archivos explícita: el cliente debe invocar una utilidad de transferencia de archivo para transferir un archivo remoto.
- Sistema de archivos distribuido: la ubicación del archivo es transparente a los usuarios, los cuales hacen referencia al archivo por su nombre. Ubica el servidor que almacena el archivo referenciado, hace las operaciones orientadas a la seguridad, como la autenticación, sincronizar el acceso al archivo y transferir el archivo. Por razones de desempeño algunos datos y directorios son almacenados en caché, y por fiabilidad algunos son replicados.
Servicios que proporciona un sistema de archivos distribuido
Los sistemas de archivos son muy importantes en los sistemas operativos pues actúan como una interfaz entre el mismo sistema y todos los dispositivos conectados al equipo ya sean, dispositivos internos o externos.
Un servidor de archivos proporciona los siguientes servicios.
- Copia de respaldo y recuperación automática: realizado como medida preventiva contra fallas del medio y errores de usuario.
- Movilidad de usuario: permitir al usuario el uso de un entorno de trabajo independiente de la computadora o de la ubicación sin necesidad de dispositivos de almacenamiento secundario.
- Estaciones de trabajo sin disco: son deseadas debido a que generan menos calor y menor ruido.
- Transparencia de escalabilidad: Los usuarios pueden acceder a los archivos sin preocuparse por la cantidad de nodos de almacenamiento o su ubicación. La escalabilidad del sistema de archivos se maneja de manera transparente.
- Manejo de la concurrencia: El sistema de archivos distribuido gestiona la concurrencia, permitiendo que múltiples usuarios accedan y modifiquen archivos simultáneamente de manera coordinada y consistente.
- Manejo de fallos: Proporciona mecanismos para la detección y recuperación de fallos. Si un nodo de almacenamiento falla, el sistema de archivos distribuido debe ser capaz de mantener la integridad y disponibilidad de los datos.
Componentes de un sistema de archivos distribuido
Este tipo de sistema tiene dos componentes que son esencialmente importantes;
- Servidor de archivos: es el encargado de las operaciones que se pueden hacer sobre los archivos individuales, tales como la lectura, escritura o modificación de archivos. Dentro de los aspectos importantes se encuentra la administración de los atributos, esta es información que no es parte del archivo mismo. El servidor de archivos también es el responsable de la protección contra accesos no permitidos, donde se puede hacer uso de las listas de control de acceso.
- Servidor de directorios: es el que ofrece las operaciones que pueden realizarse sobre los directorios, como la creación y borrado de directorios, así como de copiar y mover los archivos entre los directorios. También es el responsable de resolver el nombre de los archivos porque debe de proveer transparencia de los nombres con respecto a la localización, y debe de ofrecer nombres de dos niveles, nombres simbólicos y nombres binarios, también administra la organización de los archivos en un sistema jerárquico y por último ese encarga de manejar los enlaces lógicos y físicos.
La búsqueda de nombres puede darse de las siguientes maneras:
- Búsqueda iterativa: el cliente envía el nombre al servidor, este realiza la traducción hasta que termina en un componente que pertenece a otro servidor, finalmente el servidor envía el resultado al cliente, el cual si no ha terminado la traducción continua con el servidor correspondiente.
- Búsqueda automática o recursiva: el cliente manda el nombre al servidor, este comienza a contactarse con los demás servidores y el último de ellos devuelve el resultado al servidor anterior y así sucesivamente, hasta llegar al primer servidor que es con el que el cliente se contacto para que este primer servidor sea quien le devuelva la respuesta al cliente.
- Búsqueda transitiva: los sistemas implicados se contactan para llevar a cabo la traducción y el último servidor es el que devuelve la solución al cliente. Este tipo de resolución rompe el modelo cliente/servidor.
Requisitos de un sistema de archivos distribuido
Inicialmente se ofrecían como requisitos la transparencia de acceso y la transparencia de ubicación, los demás requisitos fueron surgiendo en fases posteriores del desarrollo. Entre los principales requisitos a considerar para el desarrollo de un sistema de archivos distribuido se encuentran:
- Transparencia: Se refiere al encubrimiento de la separación de los componentes en un sistema distribuido al usuario y al programador de la aplicación, de modo que el sistema se perciba como un todo y no como una colección de componentes independientes. Los tipos de transparencia que requiere un SAD son:
- De acceso:Los programas clientes no deben estar al tanto de la distribución de archivos. Se proporciona un conjunto único de operaciones para acceder a archivos locales y remotos. Los programas escritos para operar en archivos locales pueden acceder a archivos remotos sin necesidad de modificaciones.
- De ubicación:Los programas clientes deben ver un espacio de nombres de archivo (namespace) uniforme. Los archivos o grupos de archivos pueden ser reubicados sin cambiar sus nombres de ruta, y los programas de usuario en el mismo espacio de nombres dondequiera que se ejecuten.
- De movilidad: Ni los programas clientes ni las tablas de administración del sistema en los nodos clientes necesitan ser cambiados cuando los archivos son movidos. Esto permite la movilidad de archivos, archivos o conjuntos o volúmenes de archivos pueden ser movidos, ya sea por los administradores del sistema o automáticamente.
- De rendimiento:Los programas clientes deben seguir funcionando de manera satisfactoria mientras que la carga en el servicio varía dentro de un rango especificado.
- De escalabilidad: El servicio puede ser ampliado mediante el crecimiento incremental para tratar con una amplia gama de cargas y tamaños de red.
- Heterogeneidad: las interfaces del servicio deben de estar definidas de tal modo que el software del cliente y el del servidor puedan estar implementadas en diferentes sistemas operativo, este es un aspecto importante dentro de la extensibilidad.
- Concurrencia: hace referencia a que los cambios realizados por un cliente no deben de interferir con la operación de otros clientes que accedan o modifiquen simultáneamente el mismo archivo.
- Eficiencia: el rendimiento debe de ser parecido al de un sistema de archivos local, ya que debe de proporcionar un servicio que sea comparable o mejor que los sistemas de archivos locales. Debe ser adecuado para administrar, proporcionando operaciones y herramientas que permitan a los administradores del sistema instalar y operar un sistema de una manera conveniente.
- Seguridad: los sistemas de archivos proporcionan un sistema de control de acceso, los cuales están basados en el uso de listas de control de acceso. Dentro de los sistemas de archivos distribuidos surge la necesidad de autenticar las solicitudes de un cliente, por lo que el control de acceso en el servidor se basa en identificar al usuario correcto y también se encarga de proteger el contenido de los mensajes de solicitud y respuesta a través de formas digitales y de encriptación de datos.
- Tolerancia a fallos: una de las funciones importantes en los sistemas de archivos distribuidos es que este siga funcionando aunque haya fallos del cliente o del servidor. Los servidores pueden ser sin estado, lo que significa que pueden ser reiniciados y el servicio establecido sin la necesidad de recuperar el estado previo.
- Replicación: en un servicio de archivos que soporta replicación, un archivo puede estar representado por varias copias de su contenido en diferentes ubicaciones, lo cual trae consigo dos beneficios, ya que permite que múltiples servidores compartan la carga de proporcionar un servicio a los clientes que acceden al mismo conjunto de archivos, mejorando así la escalabilidad del servicio y también la tolerancia a fallos, lo que permite a los clientes localizar otro servidor en donde esta guardada una copia del archivo cuando falló el primer servidor al que intentó acceder.
- Consistencia: hace referencia a que todos los procesos ven el mismo archivo. En caso de haber una replicación, los cambios tardan en propagarse, por lo que la consistencia puede ser menor.