Sistemas distribuidos de archivos Un servicio de archivos es una especificación de un conjunto de servicios que el sistema de archivos ofrece a sus clientes: primitivas disponibles, parámetros, etc. Un servidor de archivos es un proceso que se ejecuta en alguna máquina y ayuda a implementar el servicio de archivos Un sistema puede tener uno o varios servidores de archivos, pero los clientes no deben conocer el nº de servidores, su posición o función Los clientes solo tienen que llamar a los procedimientos del servicio de archivos, el trabajo necesario se lleva a cabo de alguna manera y se obtienen los resultados pedidos
Sistemas distribuidos de archivos Una forma de evitar los problemas de actualización de copias del archivo y duplicación es la de imponer que los archivos sean inmutables => solo se permiten las operaciones CREATE y READ Los servicios de archivos se pueden dividir en: modelo de carga/descarga: solo se proporciona la lectura de un archivo y la escritura del mismo. La lectura transfiere todo el archivo de uno de los servidores de archivos al cliente. La escritura transfieren el archivo completo en sentido contrario modelo de acceso remoto: el servicio de archivos proporciona un gran nº de operaciones (abrir, cerrar, leer, escribir, moverse por el archivo…) El modelo de carga/descarga es conceptualmente simple pero muchas veces el traslado del archivo completo es absurdo
Sistemas distribuidos de archivos Las posibilidades de un sistema jerárquico de archivos (ej. UNIX) son difíciles de implementar en un sistema distribuido El montaje de un sistema de archivos remoto en un sistema local hace que una misma ruta no signifique lo mismo en ambas máquinas La transparencia respecto a la posición significa que la ruta de acceso no sugiere la posición del archivo. Una ruta servidor1/dir1/x indica que x está en el servidor 1 pero no indica la posición del servidor, que podría estar en cualquier máquina. El archivo puede moverse en la red sin que la ruta tenga que cambiarse
Sistemas distribuidos de archivos Un sistema donde los archivos se pueden desplazar sin que cambien sus nombres tiene independencia con respecto a la posición Un s.d. que incluya los nombres de la máquina o el servidor en los nombres de las rutas de acceso no es independiente con respecto a la posición. Tampoco lo es uno que usa el montaje remoto Lo ideal es tener un espacio de nombres que tenga la misma apariencia en todas las máquinas
Sistemas distribuidos de archivos La mayoría de los s.d. de archivos usan nombres de dos niveles: un nombre ASCII para el usuario y un nombre interno en algún código más manejable por la máquina Cuando se accede a un archivo se hace la traducción del nombre ASCII al nombre interno Una posibilidad es que un nombre ASCII tenga asociados varios nombres binarios. De esta forma se puede intentar acceder primero al primer nombre binario, si no se puede, al segundo, etc.; esto proporciona cierto grado de tolerancia a fallos
Sistemas distribuidos de archivos Con respecto a la compartición de archivos, la semántica de archivos UNIX asegura que un READ que se hace después de un WRITE obtiene el valor escrito En un s.d la semántica UNIX es difícil de lograr. si hay varios servidores lo normal es permitir a los clientes que puedan mantener una copia local de los archivos Pero entonces un cliente puede modificar un archivo y poco después otro cliente lee el archivo del servidor, obtiendo una copia ya obsoleta Una forma de solucionar esto es imponer la semántica de sesión: los cambios que hace un cliente sobre un archivo solo serán visibles a todo el mundo en el momento de cerrarlo Otra forma es emplear las transacciones atómicas para acceder al archivo
Sistemas distribuidos de archivos A la hora de implementar un sistema distribuido de archivos es importante tener en cuenta ciertas características del acceso a archivos en general: La mayoría de los archivos accedidos son pequeños (menos de 10K), por lo que podría añadirse al sistema la posibilidad la transferencia de archivos completos en vez de bloques La mayoría de los archivos tienen tiempos de vida cortos (ej. compilador que crea archivos temporales), por lo que podría ser buena idea crear el archivo en el cliente y mantenerlo ahí hasta su eliminación Es poco usual compartir archivos, lo que da una oportunidad de emplear caché en los clientes
Sistemas distribuidos de archivos Los servidores pueden ser con o sin estado Un servidor con estado mantiene información del estado y los accesos de los clientes. Cuando un cliente abre un archivo el servidor suele insertar una entrada en una tabla donde asocia a cada cliente los descriptores de archivos que tiene abiertos, punteros de acceso, etc. En un servidor sin estado, cuando un cliente envía una solicitud a un servidor, éste la lleva a cabo, envía la respuesta y elimina de sus tablas internas toda la información relativa a los clientes. Cada solicitud debe estar autocontenida, debe contener el nombre del archivo y la posición dentro de éste.
Sistemas distribuidos de archivos Ventajas de los servidores sin estado: Tolerancia a fallos (pensar en falla del servidor que pierde las tablas) No se desperdicia espacio del servidor en tablas No existe límite para el nº de archivos abiertos (si se usan tablas en el servidor, éstas podrían llenarse cuando el nº de clientes con archivos abiertos es alto) No hay problemas en el servidor si un cliente falla Ventajas de los servidores con estado: Los mensajes de solicitud son más cortos En general, mayor eficiencia
Sistemas distribuidos de archivos En un sistema cliente-servidor, cada uno con su memoria principal y disco, hay cuatro lugares posibles donde almacenar los archivos: Disco del servidor Memoria principal del servidor Disco del cliente Memoria principal del cliente El primer lugar a considerar para almacenar los archivos es naturalmente el disco del servidor: hay mucho espacio y los archivos serán accesibles a todos los clientes
Página siguiente |