Sistemas de ficheros distribuidos Objetivos del tema

Anuncio
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)
Descargar