Objetivos del tema Sistemas de ficheros distribuidos • Un sistema de ficheros distribuido es un componente clave de un sistema distribuido • En este tema se van a analizar los aspectos de diseño de los sistemas de ficheros distribuidos (SFD) • Se mostrarán algunos ejemplos de SFD • Se estudiará como mejorar el rendimiento de los sistemas de ficheros mediante el uso de paralelismo: sistemas de ficheros paralelos. Sistemas Distribuidos 1 Félix García Carballeira (1999) Contenido Conceptos básicos Conceptos básicos Estructura de un sistema de ficheros distribuido Servicio de directorio Servicio de ficheros Implementación. Semántica de coutilización, métodos de acceso, cache, coherencia de cache • Incremento de prestaciones. Paralelismo • Ejemplos: NFS, AFS, Coda, ParFiSys • Sistema de ficheros distribuido (SFD) – Objetivo principal: compartir datos entre usuarios ofreciendo transparencia – Objetivos secundarios: • • • • • Sistemas Distribuidos 2 Félix García Carballeira (1999) • rendimiento (debería ser comparable al de un sistema tradicional) • tolerancia a fallos • disponibilidad • Sistema de ficheros paralelo (SFP) – Objetivo principal: ofrecer un alto rendimiento a las aplicaciones. – Especialmente pensado para aplicaciones científicas y paralelas. Sistemas Distribuidos Conceptos básicos 4 Félix García Carballeira (1999) Componentes de un SFD • Modelo cliente-servidor – Servicios del sistema de ficheros. Operaciones proporcionadas a los clientes – Servidores del sistema de ficheros. Procesos de usuario o del sistema que ofrecen los servicios correspondientes (servidores multithread) • Transparencia – Mismas operaciones para acceso locales y remotos. – Imagen única del sistema de ficheros. • Rendimiento. Un SFD tiene sobrecargas adicionales – Red de comunicación, protocolos, posible necesidad de realizar más copias, etc. • Tolerancia a fallos: replicación, funcionamiento degrado. • Facilidad de crecimiento. Eliminar los cuellos de botella Sistemas Distribuidos 3 Félix García Carballeira (1999) Program a de usuairo Program a de usuairo Program a de usuairo Interfaz del SFD Red Servicio de directorios Servicio de ficheros Sistemas Distribuidos 5 Félix García Carballeira (1999) Estructura de un SFD ...................... Cliente Servicio de directorio • Se encarga de la traducción del nombres de usuario a nombres internos • Directorio: relaciona de forma única nombres de fichero con nombres internos • Dos opciones: – Los directorios son objetos independientes gestionados por un servidor de directorios (SD) – Los directorios son ficheros especiales. Servidor de ficheros y de directorios combinados Cliente R ED D E INTER C O N EXIÓ N S ervidor CTR ..... Sistemas Distribuidos ........ S ervidor ...................... CTR CTR ..... ..... 6 ........ CTR ..... Félix García Carballeira (1999) Sistemas Distribuidos Gestión de nombres: principios básicos • Sistema operativo distribuido: servicio uniforme de nombres para todos los objetos • En muchos casos: diferentes esquemas para diferentes objetos (ficheros). Varios servidores de nombres • Transparencia de la posición: el nombre del objeto no permite obtener directamente el lugar donde esta almacenado • Independencia de la posición: el nombre no necesita ser cambiado cuando el objeto cambia de lugar. – Asociación entre nombre y posición dinámica – Propiedad más exigente que la transparencia • Facilidad de crecimiento • Replicación • Nombres orientados al usuario Sistemas Distribuidos 8 Félix García Carballeira (1999) Sistemas Distribuidos 10 Félix García Carballeira (1999) Félix García Carballeira (1999) Nombrado de dos niveles • Nombres de usuario – Generalmente el espacio de nombres es jerárquico – Tres alternativas • Máquina:nombre de fichero – Ni transparencia, ni independencia • Montar un sistema de ficheros remoto sobre la jerarquía local (NFS) – Espacio de nombres diferente en cada máquina • Único espacio de nombres en todas las máquinas – Proporciona transparencia • Nombres internos: identificador único de fichero utilizado por el sistema Sistemas Distribuidos Resolución de nombres • Resolución iterativa – El cliente manda el nombre al SD – El SD realiza la traducción hasta que termina en un componente que pertenece a otro SD – El SD manda el resultado al cliente, el cual si no ha terminado la traducción continúa con el SD correspondiente • Resolución transitiva – Los SD implicados contactan entre si para llevar a cabo la traducción. El último SD devuelve la traducción al cliente – Rompe el modelo cliente/servidor (no adecuado para RPC) • Resolución recursiva – El último SD implicado devuelve el resultado al anterior y así sucesivamente hasta que el primero responde al cliente 7 9 Félix García Carballeira (1999) Servicio de ficheros • Se encarga de la gestión de los ficheros y del acceso a los datos • Aspectos relacionados – Semántica de coutilización – Métodos de acceso – Cache de bloques – El problema de la coherencia de cache – Métodos para mejorar el rendimiento Sistemas Distribuidos 11 Félix García Carballeira (1999) Semánticas de coutilización • Sesión: serie de accesos que realiza un cliente entre un open y un close • La semántica de coutilización especifica el efecto de varios procesos accediendo de forma simultánea al mismo fichero • Semántica UNIX – Una lectura ve los efectos de todas las escrituras previas – El efecto de dos escrituras sucesivas es el de la última de ellas – Los procesos pueden compartir el puntero de la posición – Difícil de implementar en sistemas distribuidos Semánticas de coutilización • Semántica de sesión: – Cambios a un fichero abierto son visibles únicamente en el proceso (nodo) que modificó el fichero – Una vez cerrado el fichero, los cambios son visibles sólo en sesiones posteriores – Múltiples imágenes del fichero – Dos sesiones sobre el mismo fichero que terminan concurrentemente: la última deja el resultado final – Si dos procesos quieren compartir datos deben abrir y cerrar el fichero para propagar los datos • No adecuado para procesos que acceden de forma concurrente a un fichero • Mantener un copia única – No existen punteros compartidos Sistemas Distribuidos 12 Félix García Carballeira (1999) Sistemas Distribuidos Semánticas de coutilización • Semántica de ficheros inmutables – El contenido de un fichero no puede modificarse – El nombre del fichero no puede reutilizarse – Sólo se puede compartir un fichero para sólo lectura • Semántica de transacciones: – Todo acceso al fichero se realiza entre • BEGIN TRANSACTION • END TRANSACTION – El sistema asegura que dos transacciones ejecutadas de forma concurrente tienen el efecto equivalente a ejecutarlas secuencialmente en algún orden Sistemas Distribuidos 14 Félix García Carballeira (1999) 13 Félix García Carballeira (1999) Métodos de acceso remoto • Modelo carga/descarga – Transferencias completas del fichero – Localmente se almacenan en memoria o discos locales – Normalmente utilizan semántica de sesión – Eficiencia en las transferencias – Llamada open con mucha latencia – Múltiples copias de un fichero • Modelo de servicios remotos – El servidor debe proporcionar todas las operaciones sobre el fichero. – Acceso por bloques – Modelo cliente/servidor • Empleo de cache en el cliente – Combina los dos modelos anteriores. Sistemas Distribuidos Cache de bloques 15 Félix García Carballeira (1999) Ventajas de la lectura adelantada • • El empleo de cache de bloques permite mejorar el rendimiento – Explota el principio de proximidad de referencias Lectura secuencial en ParFiSys de un fichero de 100 MB con diferentes tamaños de acceso y de lectura adelantada. Cliente con 4 MB de cache, 4 servidores (SP2) 14 • Proximidad temporal • Proximidad espacial 0 KB 32 KB 12 64 KB – Lecturas adelantadas 128 KB • Mejora el rendimiento de las operaciones de lectura, sobre todo si son secuenciales – Escrituras diferidas • Mejora el rendimiento de las escrituras • Otros tipos de cache Throughput (MB/s) 10 256 KB 8 6 4 – Cache de nombres – Cache de metadatos del sistema de ficheros 2 0 1 2 4 8 16 32 64 Access size (KB) Sistemas Distribuidos 16 Félix García Carballeira (1999) Sistemas Distribuidos 17 Félix García Carballeira (1999) Localización de las cache en un SFD • Cache en los servidores – Reducen los accesos a disco • Cache en los clientes – Reducen el tráfico por la red – Reducen la carga en los servidores – Mejora la capacidad de crecimiento – Dos posibles localizaciones Funcionamiento de una cache de bloques Proceso de usuario Cliente Cache Servidor • En discos locales – Más capacidad, – Más lento – No volátil, facilita la recuperación Cache • En memoria principal – Menor capacidad – Más rápido – Memoria volátil Sistemas Distribuidos Disco 18 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Sistemas Distribuidos 19 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Cliente read() Cache Cliente read() Cache Buscar bloque. Si no está, reservar uno Servidor Servidor Cache Cache Disco Sistemas Distribuidos 20 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Disco Sistemas Distribuidos 21 Funcionamiento de una cache de bloques Proceso de usuario Cliente read() Cache Cliente read() Cache read() Servidor Servidor Cache Cache Disco Sistemas Distribuidos Félix García Carballeira (1999) 22 Félix García Carballeira (1999) Disco Sistemas Distribuidos 23 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Funcionamiento de una cache de bloques Proceso de usuario Cliente read() Cliente read() Cache read() read() Servidor Cache Cache Servidor Cache Buscar bloque. Si no está, reservar uno Disco Sistemas Distribuidos 24 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Disco Sistemas Distribuidos 25 Funcionamiento de una cache de bloques Proceso de usuario Cliente read() Cache read() Cliente read() Cache read() Servidor Servidor Cache Cache read() read() Disco Sistemas Distribuidos 26 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Proceso de usuario Disco Sistemas Distribuidos 27 Proceso de usuario read() Cache read() datos read() Servidor Cache Cache read() read() Disco Félix García Carballeira (1999) Cliente Cache read() Servidor 28 Félix García Carballeira (1999) Funcionamiento de una cache de bloques Cliente Sistemas Distribuidos Félix García Carballeira (1999) Disco Sistemas Distribuidos 29 Félix García Carballeira (1999) Tamaño de la unidad de cache Políticas de actualización • Mayor tamaño puede incrementar la tasa de aciertos y mejorar la utilización de la red pero – Aumentan los problemas de coherencia • Depende de las características de las aplicaciones • En memoria cache grandes – Es beneficioso emplear bloques grandes (8 KB y más) • En memorias pequeñas – El uso de bloques grandes es menos adecuado • Escritura inmediata (write-through) – Buena fiabilidad – En escrituras se obtiene el mismo rendimiento que en el modelo de accesos remotos – Las escrituras son más lentas • Escritura diferida (write-back) – Escrituras más rápidas. Se reduce el tráfico en la red – Los datos pueden borrarse antes de ser enviados al servidor – Alternativas • Volcado (flush) periódico (Sprite) • Write-on-close • Write-before-full (ParFiSys) Sistemas Distribuidos 30 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Sistemas Distribuidos 31 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Cliente Cliente read() Sistemas Distribuidos 32 Servidor Servidor Disco Disco Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Sistemas Distribuidos 33 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Cliente read() Cache Cliente read() Cache Algoritmo de reemplazo Bloque sucio Sistemas Distribuidos 34 Servidor Servidor Disco Disco Félix García Carballeira (1999) Sistemas Distribuidos 35 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Motivación de write-before-full Proceso de usuario Cliente read() Cache Cliente read() write() Servidor Disco Bloque a expulsar Sistemas Distribuidos 36 Félix García Carballeira (1999) Motivación de write-before-full Cache Disco Bloque limpio Sistemas Distribuidos Servidor 37 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Proceso de usuario Cliente read() Cache write() Cliente read() Cache write() Servidor Cache Servidor Cache Algoritmo de reemplazo Bloque sucio Sistemas Distribuidos Disco Disco 38 Félix García Carballeira (1999) Motivación de write-before-full Sistemas Distribuidos 39 Félix García Carballeira (1999) Motivación de write-before-full Proceso de usuario Proceso de usuario Cliente read() Cache write() Cliente read() Cache write() Servidor Cache Servidor Cache write() Bloque a expulsar Sistemas Distribuidos Disco 40 Félix García Carballeira (1999) Bloque limpio Sistemas Distribuidos Disco 41 Félix García Carballeira (1999) Motivación de write-before-full Motivación de write-before-full Proceso de usuario Proceso de usuario Cliente read() Cliente read() Cache write() Cache write() Servidor read() Cache write() Cache read() Sistemas Distribuidos 42 Félix García Carballeira (1999) Sistemas Distribuidos Cliente Cache 43 Escritura en ParFiSys de un fichero de 100 MB con 4 MB de cache en los clientes y 16 MB en los servidores (SP2 con 4 NES). Write-before-full 95 % del tamaño de a cache 14 datos Write-before-full Write-through read() Throughput (MB/s) 12 write() Félix García Carballeira (1999) Ventajas de las escrituras diferidas • Proceso de usuario Disco Bloque solicitado Motivación de write-before-full read() read() write() Disco Bloque solicitado Servidor Servidor Cache 10 8 6 4 2 write() read() 0 Disco 1 2 4 8 16 32 64 Access size (KB) Sistemas Distribuidos 44 Félix García Carballeira (1999) Problema de la coherencia de cache • El uso de cache en los clientes de un sistema de ficheros introduce el problema de la coherencia de cache: – Múltiples copias. • El problema surge cuando se coutiliza un fichero en escritura: – Coutilización en escritura secuencial Sistemas Distribuidos 45 Félix García Carballeira (1999) Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B • Típico en entornos y aplicaciones distribuidas. – Coutilización en escritura concurrente • Típico en aplicaciones paralelas. Fichero Sistemas Distribuidos 46 Félix García Carballeira (1999) Sistemas Distribuidos 47 Félix García Carballeira (1999) Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A open Cache en el cliente B write Fichero Fichero Sistemas Distribuidos 48 Félix García Carballeira (1999) Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B Sistemas Distribuidos 49 Félix García Carballeira (1999) Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B close Fichero Sistemas Distribuidos Fichero 50 Félix García Carballeira (1999) Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B Sistemas Distribuidos 51 Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA open Fichero Sistemas Distribuidos Félix García Carballeira (1999) Fichero 52 Félix García Carballeira (1999) Sistemas Distribuidos 53 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Cache en el cliente A Cache en el cliente B open Fichero Fichero Sistemas Distribuidos 54 Félix García Carballeira (1999) Sistemas Distribuidos 55 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Cache en el cliente A read Cache en el cliente B write Fichero Fichero Sistemas Distribuidos 56 Félix García Carballeira (1999) Sistemas Distribuidos 57 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Cache en el cliente A Cache en el cliente B close Fichero Sistemas Distribuidos Fichero 58 Félix García Carballeira (1999) Sistemas Distribuidos 59 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA open Fichero Fichero Sistemas Distribuidos 60 Félix García Carballeira (1999) Sistemas Distribuidos 61 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia debido a la coutilización en escritura concurrente • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A Cache en el cliente B Cache en el cliente A Cache en el cliente B open open Fichero Fichero Sistemas Distribuidos 62 Félix García Carballeira (1999) Sistemas Distribuidos 63 Félix García Carballeira (1999) Problema de la coherencia de cache Problema de la coherencia de cache • Inconsistencia debido a la colutilización en escritura concurrente • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A Cache en el cliente B read read Cache en el cliente B write Fichero Sistemas Distribuidos Cache en el cliente A Fichero 64 Félix García Carballeira (1999) Sistemas Distribuidos 65 Félix García Carballeira (1999) Problema de la coherencia de cache Soluciones al problema de la coherencia • Inconsistencia debido a la colutilización en escritura concurrente • No emplear cache en los clientes. – Solución trivial que no permite explotar las ventajas del uso de cache en los clientes (reutilización, lectura adelantada y escritura diferida) • No utilizar cache en los clientes para datos compartidos en escritura (Sprite). – Accesos remotos sobre una única copia asegura semántica UNIX • Mecanismos de cache sin replicación de datos – Basado en esquemas cooperativos que definen un único espacio global formado por la unión de todas las cache del sistema. – Los datos fluyen a través de las caches sin replicación • Empleo de protocolos de coherencia de cache Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA Fichero Sistemas Distribuidos 66 Félix García Carballeira (1999) Protocolos de coherencia de cache • Objetivos: – Permitir el uso de cache en los clientes manteniendo coherente la información de acuerdo a la semántica de coutilización que define el sistema de ficheros • Aspectos de diseño a considerar – Granularidad del protocolo – Mecanismo de validación – Mecanismos de actualización – Localización de las copias en las caches de los clientes Sistemas Distribuidos 68 Félix García Carballeira (1999) Sistemas Distribuidos Félix García Carballeira (1999) Granularidad del protocolo • Tamaño de la unidad sobre la que se mantiene coherencia • Puede variar desde un único byte hasta el fichero completo • Ejemplos: – Sprite: fichero completo – Coda: conjunto de ficheros (volumen) – ParFiSys: regiones de tamaño y forma variable definidas por el usuario • Con semánticas UNIX, unidades grandes y acceso concurrentes: – Posible falsa coutilización Sistemas Distribuidos Falsa coutilización Proceso A 67 69 Félix García Carballeira (1999) Validación de la cache Proceso B • Determinar si un dato almacenado en la cache es consistente • Validación iniciada por el cliente. Contactar con el servidor para determinar el estado de la copia – Frecuencia de validación • En cada acceso • Al abrir el fichero • Periódicamente – Necesidad de almacenar información sobre la última actualización en caso de escritura diferida. – Crece el tráfico de la red, consume CPU en el servidor y aumenta el tiempo de servicio de las peticiones Unidad de coherencia Sistemas Distribuidos 70 Félix García Carballeira (1999) Sistemas Distribuidos 71 Félix García Carballeira (1999) Validación de la cache Mecanismos de actualización • Validación iniciada por el servidor – El servidor almacena información sobre los datos accedidos por cada cliente y el modo de acceso – Servidores con estado (implicaciones sobre la tolerancia a fallos) – Si un dato es accedido por dos o más clientes, al menos uno en modo escritura, se notifica a los clientes para que invaliden o actualicen las caches – Rompe el modelo cliente/servidor • Cuando hay una modificación sobre una copia y es necesario mantener una visión coherente hay que actualizar el resto de copias. • Métodos: – Actualización de las copias – Invalidación de las copias Sistemas Distribuidos Sistemas Distribuidos 72 Félix García Carballeira (1999) Mecanismos de actualización • Actualización de todas las copias • Excesivo tráfico en la red • Inviable en sistemas de ficheros • Invalidación de las copias. Se invalidan las copias y los futuros accesos se realizan sobre una copia consistente. • Mensajes más cortos, menos tráfico en la red • Mayor capacidad de crecimiento Sistemas Distribuidos 74 Félix García Carballeira (1999) 73 Félix García Carballeira (1999) Localización de las copias • Es necesario conocer qué clientes almacenan copias de datos para realizar las acciones del protocolo • Se utilizan esquemas basados en directorios. Cada entrada almacena la lista de clientes con copias en su cache. – Directorio de mapa completo – Directorio limitado – Lista encadenada • Directorios centralizados: un único gestor se encarga de la coherencia de todos los ficheros del sistema – Posible cuello de botella • Directorios distribuidos: existen varios gestores – Mejor capacidad de crecimiento Sistemas Distribuidos 75 Félix García Carballeira (1999) Cache en los clientes contra acceso remoto Aspectos de tolerancia a fallos • Rendimiento cercano al de un sistema centralizado • Menor carga en el servidor y en la red. Se permiten transferencias más grandes por la red • Facilita el crecimiento proporcional del rendimiento del sistema • Dificultades relacionadas con el mantenimiento de la coherencia • Servidores con estado – Cuando se abre un fichero, el servidor almacena información y da al cliente un identificador único a utilizar en las posteriores llamadas – Cuando se cierra un fichero se libera la información • Servidores sin estado – Cada petición es autocontenida (fichero y posición) Sistemas Distribuidos Sistemas Distribuidos 76 Félix García Carballeira (1999) 77 Félix García Carballeira (1999) Aspectos de tolerancia a fallos ¿Cómo mejorar el rendimiento? • Ventajas de los servidores con estado – Mensajes de petición más cortos – Mejor rendimiento (se mantiene información en memoria) – Facilita la lectura adelantada. El servidor puede analizar el patrón de accesos que realiza cada cliente – Es necesario en invalidaciones iniciadas por el servidor • Ventajas de los servidores sin estado – Más tolerante a fallos – No son necesarios open y close. Se reduce el nº de mensajes – No se gasta memoria en el servidor para almacenar el estado • Otros aspectos: replicación de ficheros • Empleo de cache – Cuidado con los protocolos de coherencia de cache • Uso de paralelismo – Múltiples discos y nodos de E/S – Distribución de los datos entre los discos y los nodos de E/S – Sistemas de ficheros paralelos • Uso de interfaces paralelas – MPI-IO Sistemas Distribuidos 78 Félix García Carballeira (1999) Empleo de paralelismo ...................... Cliente Sistemas Distribuidos 79 Félix García Carballeira (1999) Motivación de las interfaces paralelas Cliente R ED D E INTER C O N EXIÓ N S ervidor CTR ..... ........ S ervidor ...................... CTR CTR ..... ..... Sistemas Distribuidos 80 Proceso que accede a dos columnas de una matriz almacenada en el disco por filas ........ CTR ..... Félix García Carballeira (1999) Sistemas Distribuidos 81 Félix García Carballeira (1999) Motivación de las interfaces paralelas Motivación de las interfaces paralelas Con servicios POSIX Con servicios POSIX read(); read(); lseek(); Sistemas Distribuidos 82 Félix García Carballeira (1999) Sistemas Distribuidos 83 Félix García Carballeira (1999) Motivación de las interfaces paralelas Motivación de las interfaces paralelas Con servicios POSIX Con servicios POSIX read(); lseek(); read(); read(); lseek(); read(); lseek(); Sistemas Distribuidos 84 Félix García Carballeira (1999) Sistemas Distribuidos 85 Félix García Carballeira (1999) Motivación de las interfaces paralelas Motivación de las interfaces paralelas Con servicios POSIX Con servicios POSIX read(); lseek(); read(); lseek(); read(); read(); lseek(); read(); lseek(); read(); . . Se necesitan 23 llamadas . Sistemas Distribuidos 86 Félix García Carballeira (1999) Sistemas Distribuidos Motivación de las interfaces paralelas Félix García Carballeira (1999) Ejemplos • • • • size 87 NFS AFS Coda ParFiSys (sistema de ficheros paralelo) Con interfaces paralelas se define una vista Create_view(fd, size, off); Read_view(fd, buf, size*12); Se leen las dos columnas con una única llamada off Sistemas Distribuidos 88 Félix García Carballeira (1999) Sistemas Distribuidos 89 Félix García Carballeira (1999) NFS Montado en NFS • Implementación y especificación de un software de sistema para acceso a ficheros remotos • Diseñado para trabajar en entornos heterogéneos (diferentes máquinas, sistemas operativos, ...) • La independencia se consigue mediante el uso de las RPC construidas sobre el protocolo XDR (external data representation) • Las diferentes máquinas montan un directorio remoto en el sistema de ficheros local – El espacio de nombres es diferente en cada máquina – El montado no es transparente, debe proporcionarse el nombre de la máquina remota • No es un verdadero sistema de ficheros distribuido Sistemas Distribuidos 90 Félix García Carballeira (1999) • Establece una conexión lógica entre el servidor y el cliente • La máquina A exporta /usr y /bin • En la máquina B: – mount máquinaA:/usr /usr M á quina A / u sr includ e bin C liente B Servidor (ro ot) (ro ot) usr vm u nix usr ... local loca l bin Sistemas Distribuidos x usr lib lib . . . 92 u sr h om e lib Sistemas Distribuidos 91 Félix García Carballeira (1999) Félix García Carballeira (1999) • Ofrece un conjunto de RPC para realizar operaciones sobre ficheros remotos – Búsqueda de un fichero en un directorio – Lectura de entradas de directorio – Manipulación de enlaces y directorios – Acceso a los atributos de un fichero – Lectura y escritura de ficheros • Los servidores de NFS no almacenan estado – Operaciones autocontenidas • El protocolo no ofrece mecanismos de control de concurrencia para asegurar una semántica UNIX Sistemas Distribuidos Arquitectura de NFS 93 Félix García Carballeira (1999) Traducción de nombres SERVIDOR CLIENTE CAPA DE LLAM AD A AL SISTEM A CAPA DEL SISTEM A DE FIC HERO S VIRT. CAPA DEL SISTEM A DE FIC HERO S VIRT. S.O. LOC AL CLIENTE NFS S.O. LOC AL SERVID OR NFS RPC /XD R DISCO LOC AL RPC /XD R DISCO LOC AL b in Protocolo NFS • Imagen diferente del sistema de ficheros (ro ot) / b in Montado en NFS C liente A M á quina B • VFS almacena una entrada por cada archivo abierto (vnode) • Cada vnode apunta a un inodo local o a un inodo remoto • El cliente realiza la traducción de un nombre (path) componente a componente. Cuando un vnode apunta a inodo remoto la búsqueda se realiza en el servidor (un componente cada vez) • El cliente almacena una cache de nombres para acelerar las traducciones (cache de atributos) – Las entradas se validan si llevan más de 30s RED Sistemas Distribuidos 94 Félix García Carballeira (1999) Sistemas Distribuidos 95 Félix García Carballeira (1999) Acceso a los ficheros AFS Las transferencias se realizan en bloques de 8 KB Los bloques se almacenan en la cache de los clientes Los clientes realizan lecturas adelantadas de un bloque Las escrituras se realizan localmente. Los bloques se envían al servidor cuando se llena un bloque de 8 KB o cuando se cierra el fichero • Problemas de coherencia de cache (no se asegura la semántica UNIX) • ¿Cómo intenta conseguir una semántica UNIX? – Cuando un fichero se abre en un cliente se comprueba en el servidor si la información se ha modificado – Cuando se accede a un bloque que lleva más de 3s en la cache del cliente se valida • Andrew es un sistema distribuido desarrollado en la Universidad de Carnegie-Mellon a medidados de los 80. • AFS es el sistema de ficheros distribuido para este entorno. • AFS está pensado para sistemas distribuidos a gran escala (5000 y 10000 estaciones de trabajo). • Ofrece acceso transparente a los ficheros compartidos. – Los clientes pueden acceder a ficheros locales y compartidos. • Utiliza los servicios UNIX para el acceso a ficheros locales y distribuidos. • Compatible con NFS. • Mismo árbol de directorios para los ficheros compartidos. Sistemas Distribuidos Sistemas Distribuidos • • • • 96 Félix García Carballeira (1999) 97 Características de diseño • Semática de sesión • Los servidores transfieren el fichero completo a los clientes (en bloques de 64 KB) en la llamada open – Actualmente transfieren bloques de 64 KB Estructura de AFS Estaciones de trabajo Servidores Venus Program a de usuario Vice K ernel U NIX K ernel U NIX • Menor latencia del open • El fichero se almacena en la cache local de los clientes. – Se utiliza el disco local (la cache es permanente a las caídas) – Política LRU. • Las lecturas y escrituras se realizan localmente en los clientes. • Cuando un proceso cierra un fichero (close) – Si el fichero se ha modificado se envía al servidor – El fichero se mantiene en la cache local para futuras sesiones en los clientes. Sistemas Distribuidos 98 Félix García Carballeira (1999) Venus Program a de usuario • AFS utiliza dos componentes SW que ejecutan como procesos de usuario (vice y venus). • Los ficheros se agrupan en volúmenes (pequeñas unidades asociadas con los ficheros de un cliente). • Cada fichero en el espacio de ficheros compartido se identifica con identificador único (UFID) – Número de volumen – Número de vnodo: indice en un vector que contiene los inodos de un volumen – Número único: permite reutilizar números de vnodos • Los UFID son transparentes de la posición: los ficheros pueden cambiar de un servidor a otro. • Venus traduce los nombres de fichero a UFID. 100 Félix García Carballeira (1999) R ED K ernel U NIX Vice Venus Program a de usuario K ernel U NIX K ernel U NIX Sistemas Distribuidos Espacio de nombres compartido de AFS Sistemas Distribuidos Félix García Carballeira (1999) 99 Félix García Carballeira (1999) Implementación de AFS • Venus traduce los nombres componente a componente. • Venus gestiona dos cache independientes: – Cache de atributos – Cache de datos • Se utiliza LRU para cada una de ellas. • La cache de atributos almacena los atributos de los ficheros. • La cache de datos se almacena en el disco local. Sistemas Distribuidos 101 Félix García Carballeira (1999) Coherencia de cache Coherencia de cache • Venus contacta con los servidores sólo cuando se abre o se cierra un fichero. • Lecturas y escrituras sobre la copia local (semántica de sesión). • Los clientes de AFS asumen que los datos en su cache son válidos mientras no se notifique lo contrario: • Cuando un cliente almacena un fichero en su cache, el servidor lo registra: – El cliente tiene un callback para ese fichero: un compromiso de que el servidor lo notificará si cambia el contenido del fichero. • El servidor almacena una lista de todas las copias de ficheros en las cache de los clientes. • Cuando un cliente cierra un fichero que ha modificado – Lo notifica y lo vuelca al servidor – El servidor notifica a todos los clientes con callbacks (revoca los callbacks). – Los clientes descartarán y leerán los nuevos datos del fichero la próxima vez que abran el fichero. • El protocolo de coherencia de AFS es válido para semánticas de sesión y entornos con pocas coutilización de ficheros en escritura. Sistemas Distribuidos 102 Félix García Carballeira (1999) CODA Sistemas Distribuidos 103 Félix García Carballeira (1999) Protocolo de actualización de CODA • Sistema de ficheros descendiente de AFS. • Objetivos fundamentales: – Alta disponibilidad de datos. • Replicación. – Operación desconectada: • Los clientes pueden seguir trabajando en modo desconectado • Fallos en los servidores, equipos portátiles. • Cuando un fichero se cierra se transfiere a todos los clientes. • Esquema de replicación optimista – Los conflictos se resuelve en los servidores – Sobre los ficheros la última copia es la buena – Sobre directorios se resuelven los posibles problemas (pe: dos clientes crean una misma entrada de directorio con el mismo nombre). Puede requerir la asistencia del usuario • Coda utiliza replicación para conseguir alta disponibilidad y tolerancia a fallos. • El funcionamiento de Coda es similar a AFS – Cuando se cierra un fichero que se ha modificado se distribuye a todos los servidores donde se encuentran las replicas. Félix García Carballeira (1999) Sistemas Distribuidos ParFiSys 105 Félix García Carballeira (1999) Estructura de ParFiSys PN • Sistema de ficheros paralelo desarrollado en la UPM (1996) • Características: – Distribución de datos y acceso paralelo a los ficheros – Visión única del sistema de ficheros – Semántica de coutilización UNIX. – Servicios POSIX – Capacidad de crecimiento – Coherencia de cache – Extensiones a POSIX: 106 Félix García Carballeira (1999) ... P a rC lie nt Lib. User A pp lic a tio n P a rC lie nt Lib. ParClient Cache ParClient File M a na g em e n t P a rS e rv e r Libra ry File M a na g em e n t P a rS e rv e r Libra ry 1(7:25. Multificheros Operaciones de preasignación de espacio Operaciones de control de la cache (desactivación, coherencia) Ficheros grandes Sistemas Distribuidos PN User A pp lic a tio n ION ION ParServer ParServer B lo c k S e rv ic e s Sistemas Distribuidos C ache • • • • ... Cache 104 B lo c k S e rv ic e s 107 C ache Sistemas Distribuidos Félix García Carballeira (1999) Acceso paralelo en ParFiSys Petición de usuario Mecanismos de incremento de prestaciones B uffer de usuario • Agrupación de operaciones – Acceso a la caches por grupos de bloques – Petición de bloques a los ParServers en grupos B loques solicitados por el usuario • Reduce el tráfico entre clientes y servidores. C ache de ParC lient thread thread ..... ParServer ParServer Sistemas Distribuidos ..... ......................... 108 Félix García Carballeira (1999) Protocolo de coherencia • El principal problema del uso de cache en los clientes y semántica UNIX en aplicaciones paralelas es la escritura concurrente. • ParFiSys utiliza un esquema de coherencia de cache dinámico basado en dos protocolos: – Protocolo de coherencia secuencia (PCS): • Coherencia para coutilización en escritura secuencial. • Detecta situaciones de coutilización en escritura concurrente. – Protocolo de coherencia concurrente (PCC): • Coherencia para coutilización en escritura concurrente. • Sólo ejecuta en estas situaciones. Sistemas Distribuidos 110 Félix García Carballeira (1999) • Preasignación masiva de recursos (bloques, inodos). – Se preasignan cuando se monta un sistema de ficheros – De forma transparente cuando el nivel baja de un umbral en lo ParClient. • Cache de datos (bloques, inodos y cache de nombres) – En ParServers y ParClients. • Lecturas adelantadas masivas. • Escritura diferida y volcados masivos (write-before-full). Sistemas Distribuidos 109 Félix García Carballeira (1999) Protocolo de coherencia secuencial • Granularidad: fichero • Protocolo distribuido: directorios en todos los servidores. • Mecanismo de validación mixto: – Iniciado por los clientes en la apertura de un fichero. – Iniciado por los servidores: • Activan el PCC para un fichero en los clientes cuando se coutiliza en escritura concurrente. • Se desactiva el PCC para un fichero en los clientes cuando desaparece dicha situación. • Números de versión – Permite determinar la validez de la copias en las cache locales • Último escritor – Cliente con los bloques en su cache más actualizados. Sistemas Distribuidos 111 Félix García Carballeira (1999) Protocolo de coherencia concurrente Regiones de coherencia óptimas • Sólo ejecuta cuando se accede a un fichero de forma conflictiva. • Objetivo: reducir el problema de la falsa coutilización en la ejecución de aplicaciones paralelas. • Granularidad variable: regiones de coherencia definidas por el usuario en tamaño y forma. • Tipos de regiones: – Regiones de coherencia secuencial. – Regiones de coherencia entrelazadas. • Sobre una región: – Múltiples lectores – Un único escritor – Cuando se escribe sobre una región se invalidan todas las copias • Nº de regiones = nº de procesos • Cada proceso accede a una única región • Intentan reducir el problema de la falsa coutilización y el coste de la coherencia adaptándose a los patrones de E/S de las aplicaciones. Sistemas Distribuidos 112 Félix García Carballeira (1999) Sistemas Distribuidos 113 Félix García Carballeira (1999) Tipos de regiones de coherencia R egiones secu enciales Rendimiento del protocolo de coherencia • Fichero com pleto 0 Escritura concurrente de un fichero de 100 MB con tamaños de acceso de 8 KB (cliente con 4 MB de cache, 4 NES (SP2). Accesos a segmentos contiguos disjuntos) 40 1 0 2 3 WHOLE FILE Segm en tos 35 NO CACHE BLOCK 0 1 2 3 Por bloques R egiones entrelazadas 0 2 1 3 0 2 1 Entrelazado 3 Throughput (MB/s) 30 OPTIMAL 25 20 15 10 Entrelazado y segm entado 0 1 2 0 1 2 3 4 5 3 4 5 0 1 2 5 0 1 2 4 8 Number of clients Sistemas Distribuidos 114 Félix García Carballeira (1999) Rendimiento del protocolo de coherencia • Escritura concurrente de un fichero de 100 MB con tamaños de acceso de 8 KB (cliente con 4 MB de cache, 4 NES (SP2). Accesos a entrelazados al ficheros) Sistemas Distribuidos 115 Félix García Carballeira (1999) Más información sobre E/S paralela • http://www.cs.dartmouth/pario 30 WHOLE FILE NO CACHE 25 Throughput (MB/s) BLOCK OPTIMAL 20 15 10 5 0 1 2 4 8 Number of clients Sistemas Distribuidos 116 Félix García Carballeira (1999) Sistemas Distribuidos 117 Félix García Carballeira (1999)