SISTEMAS DE ARCHIVOS DISTRIBUIDOS
El sistema de archivos es un
elemento esencial de un sistema distribuido Su tarea fundamental es almacenar
los programas y datos y tenerlos disponibles cuando sean necesarios. Nos
centraremos en analizar los aspectos que los diferencían de los sistemas de
archivos centralizados.
Es importante distinguir entre los
conceptos de servicio de archivos y servidor de archivos.
El servicio de archivos especifica
la interfaz del sistema de archivos con los clientes. Describe las primitivas
disponibles, los parámetros que utilizan y las acciones que llevan a cabo.
Un servidor de archivos es un
proceso que se ejecuta en alguna máquina y ayuda a implantar el servicio de
archivos. Un sistema puede tener uno o varios servidores de archivos, pero los
clientes no deben conocer el número de servidores de archivos, su posición o
función. Todo lo que saben es que, al solicitar un servicio, éste se lleva a
cabo de alguna manera.
Diseño
Generalmente un sistema de archivos
distribuidos (DFS) tiene dos componentes: el servicio de archivos y el servicio
de directorios.
INTERFAZ DEL SERVICIO DE ARCHIVOS
Un archivo es una secuencia de bytes con algún significado
especial para el usuario.
Un archivo puede tener atributos,
que son partes de información relativas a él, pero que no son parte del archivo
propiamente dicho (propietario, tamaño, fecha de creación, permisos de acceso,
etc.). Generalmente el servicio de archivos proporciona primitivas para leer y
escribir alguno de los atributos.
En algunos sistemas de archivos se
maneja el concepto de inmutabilidad,
que consiste en que un archivo sólo puede ser creado y leído, pero no
modificado. Esto facilita el soporte del ocultamiento y la replicación de
archivos, puesto que se eliminan los problemas de actualización de copias
remotas.
Los servicios de archivos se pueden
dividir en dos tipos, según si soportan un modelo de carga/descarga o un
modelo de acceso remoto.
En
el modelo de carga/descarga, el servicio de archivos proporciona dos
operaciones principales: lectura de archivo y escritura del mismo. La lectura
transfiere todo el archivo de los servidores de archivos al cliente
solicitante. La escritura transfiere todo el archivo del cliente de regreso al
servidor. El modelo conceptual es el traslado de archivos completos en alguna
de las direcciones. La interfaz es sencilla, y la transferencia completa de
archivos es muy eficiente.
El modelo de acceso remoto se
proporciona un gran número de operaciones para abrir y cerrar archivos, leer y
escribir partes de archivos, moverse a través de un archivo (lseek), etc. Aquí
el sistema de archivos se ejecuta en los servidores y nunca se trasladan los
archivos a los clientes. Su ventaja es que no necesita mucho espacio en los
clientes y la cantidad de información transferida es mínima.
INTERFAZ DEL SERVICIO DE DIRECTORIOS
El servicio de directorios
proporciona las operaciones para crear, eliminar directorios, nombrar o cambiar
archivos dentro de directorios, y mover archivos de un directorio a otro. Los
directorios pueden contener subdirectorios y éstos también pueden contener
subdirectorios, lo que se conoce como sistema jerárquico de archivos o árbol de
directorios.
En ciertos sistemas es posible crear enlaces o apuntadores
a un directorio arbitrario desde cualquier directorio, con lo que se pueden
crear grafos arbitrarios, que son más poderosos que los árboles. La distinción
entre árboles y grafos es de particular importancia en sistemas distribuidos.
Ejemplo
de árbol de directorios y grafo de directorios
En la gráfica anterior se muestra en ejemplo de cómo se
pueden tener directorios que abarquen más de un servidor de archivos.
Cada servidor tiene una estructura
de directorios local que se enlaza con la estructura de otro servidor. Es
posible que cada servidor vea globalmente una estructura distinta y este es un
problema si se desea que los clientes vean una referencia a los archivos del tipo //servidor/ruta, ya que debe reconocerse que el directorio raíz está en
alguno de los servidores en particular, y la estructura de directorios que éste
ve es la que verán todos los clientes.
Uno de los principales problemas de
este tipo de estructura es que no se tiene una transparencia referencial o de
nombres, ya que es necesario conocer el nombre del servidor para poder alcanzar
un archivo, lo que impide que el servidor pueda migrarse dinámicamente.
Generalmente se puede atacar este
problema con tres formas diferentes de nombrar los archivos y directorios:
1. Nombre
de máquina + ruta de acceso [p.e.:
//Servidor1/archivos/datos/textos/x1.txt - Windows]
2. Montaje
de sistemas de archivos remotos en la jerarquía local de archivos [p.e.: NFS]
3. Un
espacio de nombres que tenga la misma apariencia en todas las máquinas
Los dos primeros son fáciles de implantar en sistemas centralizados que se convierten en distribuidos. El tercero es la manera ideal en que se comporta un sistema distribuido .
SEMÁNTICA DE ARCHIVOS COMPARTIDOS
Uno de los principales problemas al manejar archivos en forma distribuida se refiere a cómo se reflejan los eventos de lectura y escritura en un archivo a todos los clientes (semántica de la lectura y escritura). Podemos considerar cuatro formas básicas de compartir archivos en un sistema distribuido:
OCULTAMIENTO
Para facilitar el desempeño en el acceso a los archivos distribuidos pueden utilizarse técnicas que permitan ocultar los retrasos normales en la transferencia de archivos entre las diferentes máquinas. Este ocultamiento se logra con el uso de cachés en sus diferentes formas.
Existen cuatro lugares donde se
pueden almacenar archivos o partes de archivos: El disco del servidor, la
memoria principal del servidor, el disco del cliente o la memoria principal del
cliente:
Características de cada opción:
No hay comentarios:
Publicar un comentario