Diseño de Sistemas Distribuidos Sistemas de ficheros distribuidos y

Transcripción

Diseño de Sistemas Distribuidos Sistemas de ficheros distribuidos y
Diseño de Sistemas Distribuidos
Máster en Ciencia y Tecnología Informática
Curso 2013-2014
Sistemas de ficheros distribuidos
y paralelos
Félix García Carballeira
Grupo de Arquitectura de Computadores
[email protected]
Gestión de datos en entornos distribuidos
!  Arquitecturas de almacenamiento
!  Sistemas de ficheros en red y distribuidos
!  Sistemas de ficheros de discos compartidos
" 
NAS file systems, clustered file system
!  Sistemas de ficheros paralelos
" 
PVFS, GPFS, Expand,…
!  Sistema de ficheros distribuido de gran escala: Hadoop file system
!  Almacenamiento en grid
Diseño de Sistemas distribuidos
Félix García Carballeira
2
Arquitectura típica de un sistema de
almacenamiento
Clientes
Red de comunicación
Servidor de E/S
Diseño de Sistemas distribuidos
Félix García Carballeira
3
Arquitectura típica de un sistema de
almacenamiento
Clientes
Red de comunicación
Servidor de E/S
Red de almacenamiento
Diseño de Sistemas distribuidos
Félix García Carballeira
4
Arquitectura típica de un sistema de
almacenamiento
Clientes
Red de comunicación
Servidor de E/S
Red de almacenamiento
Diseño de Sistemas distribuidos
Félix García Carballeira
5
Arquitectura de almacenamiento de
un cluster
Almacenamiento local
Clientes / nodos de
cómputo
• Red de interconexión
Servidores / nodos de
E/S
• Red de almacenamiento
Almacenamiento
Diseño de Sistemas distribuidos
Félix García Carballeira
6
Arquitectura de E/S de un
supercomputador (Blue gene)
Diseño de Sistemas distribuidos
Félix García Carballeira
7
Sistema de ficheros
Un sistema de ficheros establece una
correspondencia lógica entre los ficheros
y directorios y los dispositivos
!  Funciones:
Organización, almacenamiento,
recuperación, gestión de nombres,
coutilización y protección de los
ficheros (metadatos)
Ofrece un mecanismo de abstracción
que oculta todos los detalles
relacionados con el almacenamiento y
distribución de la información en los
dispositivos, así como el
funcionamiento de los mismos.
! 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
8
Sistema de fichero en red
!  Sistema de ficheros que
permite el acceso a los
ficheros de un servidor
utilizando un determinado
protocolo
Extensión de un sistema
de ficheros local
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
9
Sistema de ficheros en red
Clientes
Red de comunicación
Servidor de E/S
!  Ejemplos: NFS, CIFS,
FTP, HTTP
Diseño de Sistemas distribuidos
Félix García Carballeira
10
Ejemplo: NFS
/home
/a
/b
NFS server
/home
/a
/b
LAN
/home
/a
/b
/home
/a
/b
Export the file system
Clients mount the remote file system
Diseño de Sistemas distribuidos
Félix García Carballeira
11
Arquitectura de NFS
Application
Local host
Remote host
File system API interface
File system API interface
Vnode layer
Vnode layer
NFS client
NFS server
NFS stub
NFS stub
Local file system
Remote file system
Communication network
• © Cloud Computing: Theory and Practice
• Dan C. Marinescu
Diseño de Sistemas distribuidos
Félix García Carballeira
12
Sistemas de ficheros distribuidos
!  Sistema de ficheros en red que permite el acceso a ficheros
distribuidos por varios servidores (no es un sistema de ficheros
paralelo)
!  Ejemplos: AFS, DFS,
Coda, Sprite
SNIA
Diseño de Sistemas distribuidos
Félix García Carballeira
13
Sistemas de ficheros distribuidos
clientes
servidores
/lib
/b in
/bin
/usr
LAN
/
/lib
/
/usr
/
/usr/d 1
/d1
/usr/d 3
/d2
/d3/f1
/usr/d 3 /f1
Diseño de Sistemas distribuidos
/d3
/d3/f2
/usr/d 3 /f2
Félix García Carballeira
14
Componentes de un SFD
Programa
de usuairo
Programa
de usuairo
Programa
de usuairo
Interfaz del SFD
Red
Servicio de directorios
Servicio de ficheros
Diseño de Sistemas distribuidos
Félix García Carballeira
15
Resolución de nombres
!  Resolución iterativa
!  Resolución transitiva
!  Resolución recursiva
Diseño de Sistemas distribuidos
Félix García Carballeira
16
Ejemplo
C
/1/2/3/4/5/6 ?
/
SD1
/1/2
1
2
3
SD2
3/4
SD3
5/6
4
5
6
Diseño de Sistemas distribuidos
Félix García Carballeira
17
Resolución iterativa
!  El cliente envía el nombre al
1/2/3/4/5/6 C
/3/4/5/6 /5/6 Diseño de Sistemas distribuidos
SD1
/1/2
SD2
3/4
SD3
5/6
SD
!  El SD realiza la traducción
hasta que termina en un
componente que pertenece a
otro SD
!  El SD envía el resultado al
cliente, el cual si no ha
terminado la traducción
continúa con el SD
correspondiente
Félix García Carballeira
18
Resolución transitiva
!  Los SD implicados contactan
/1/2/3/4/5/6
C
SD1
/1/2
• /3/4/5/6
SD2
6
• /5/6
SD3
Diseño de Sistemas distribuidos
3/4
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)
5/6
Félix García Carballeira
19
Resolución recursiva
!  El último SD implicado
SD1
/1/2/3/4/5/6 /3/4/5/6 6
6
C
SD2
3/4
6
/5/6
SD3
Diseño de Sistemas distribuidos
/1/2
devuelve el resultado al
anterior y así
sucesivamente hasta que el
primero responde al cliente
5/6
Félix García Carballeira
20
Métodos de acceso remotos
!  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.
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
21
Caché de bloques
!  El empleo de caché de bloques permite mejorar el rendimiento
" 
Explota el principio de proximidad de referencias
!  Proximidad temporal
!  Proximidad espacial
" 
Lecturas adelantadas
!  Mejora el rendimiento de las operaciones de lectura, sobre
todo si son secuenciales
" 
Escrituras diferidas
!  Mejora el rendimiento de las escrituras
!  Otros tipos de caché
" 
" 
Cache de nombres
Cache de metadatos del sistema de ficheros
Diseño de Sistemas distribuidos
Félix García Carballeira
22
Ventajas de la lectura adelantada
!  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 caché, 4
servidores (SP2)
14
0 KB
32 KB
12
64 KB
128 KB
Throughput (MB/s)
10
256 KB
8
6
4
2
0
1
2
4
8
16
32
64
Access size (KB)
Diseño de Sistemas distribuidos
Félix García Carballeira
23
Localización de la caché en un SFD
!  Caché en los servidores
Reducen los accesos a disco
!  Caché en los clientes
Reducen el tráfico por la red
Reducen la carga en los servidores
Mejora la capacidad de crecimiento
Dos posibles localizaciones
!  En discos locales
" 
" 
" 
" 
" 
" 
" 
" 
Más capacidad,
Más lento
No volátil, facilita la recuperación
!  En memoria principal
Menor capacidad
Más rápido
Memoria volátil
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
24
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
• Cache
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
25
Funcionamiento de una cache de bloques
• Proceso de usuario
read()
• Cliente
• Cache
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
26
Funcionamiento de una cache de bloques
• Proceso de usuario
read()
• Cliente
• Cache
Buscar bloque.
• Si no está,
• reservar uno
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
27
Funcionamiento de una cache de bloques
• Proceso de usuario
read()
• Cliente
• Cache
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
28
Funcionamiento de una cache de bloques
Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
29
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
Buscar bloque.
• Si no está,
• reservar uno
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
30
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
31
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
• read()
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
32
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
• read()
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
33
Funcionamiento de una cache de bloques
• Proceso de usuario
• Cliente
read()
• Cache
read()
• Servidor
• Cache
• read()
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
34
Funcionamiento de una cache de bloques
• Proceso de usuario
datos
read()
• Cliente
• Cache
read()
• Servidor
• Cache
• read()
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
35
Funcionamiento de una cache de bloques
• Proceso de usuario
read()
• Cliente
• Cache
Futuro acceso
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
36
Funcionamiento de una cache de bloques
• Proceso de usuario
read()
datos
• Cliente
• Cache
• Servidor
• Cache
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
37
Tamaño de la unidad de cache
!  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
!  En memorias pequeñas
El uso de bloques grandes es menos adecuado
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
38
Políticas de actualización
!  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)
" 
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
39
Motivación de write-before-full
• Proceso de usuario
• Cliente
• Servidor
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
40
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Servidor
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
41
Motivación de write-before-full
• Proceso de usuario
read()
• Cliente
• Cache
• Servidor
• Bloque sucio
Diseño de Sistemas distribuidos
• Disco
Félix García Carballeira
42
Motivación de write-before-full
• Proceso de usuario
read()
• Cliente
• Cache
• Algoritmo
de reemplazo
• Servidor
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
43
Motivación de write-before-full
• Proceso de usuario
read()
• Cliente
• Cache
• Servidor
• Bloque a expulsar
Diseño de Sistemas distribuidos
• Disco
Félix García Carballeira
44
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Bloque limpio
Diseño de Sistemas distribuidos
• Servidor
• Disco
Félix García Carballeira
45
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Servidor
• Cache
• Bloque sucio
Diseño de Sistemas distribuidos
• Disco
Félix García Carballeira
46
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Servidor
• Cache
• Algoritmo
de reemplazo
• Disco
Diseño de Sistemas distribuidos
Félix García Carballeira
47
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Servidor
• Cache
• Bloque a expulsar
Diseño de Sistemas distribuidos
• Disco
Félix García Carballeira
48
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Servidor
• Cache
• Bloque limpio
Diseño de Sistemas distribuidos
• write()
Félix García Carballeira
• Disco
49
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• Servidor
• Cache
• Bloque solicitado
Diseño de Sistemas distribuidos
• write()
• read()
• Disco
Félix García Carballeira
50
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• write()
• read()
• Servidor
• Cache
• Bloque solicitado
Diseño de Sistemas distribuidos
• write()
• read()
• Disco
Félix García Carballeira
51
Motivación de write-before-full
• Proceso de usuario
• Cliente
read()
• Cache
• datos
• write()
• read()
• Servidor
• Cache
• write()
Diseño de Sistemas distribuidos
• read()
• Disco
Félix García Carballeira
52
Problema de coherencia
!  El uso de caché 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
" 
" 
!  Típico en entornos y aplicaciones distribuidas.
" 
Coutilización en escritura concurrente
!  Típico en aplicaciones paralelas.
Diseño de Sistemas distribuidos
Félix García Carballeira
53
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
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
54
• 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
open
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
55
• 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
write
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
56
• 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
Diseño de Sistemas distribuidos
Félix García Carballeira
57
• 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
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
58
• 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
open
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
59
• 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
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
60
• Problema de la coherencia de cache
•  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
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
61
• Problema de la coherencia de cache
•  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
open
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
62
• Problema de la coherencia de cache
•  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
read
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
63
• Problema de la coherencia de cache
•  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
•  write
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
64
• Problema de la coherencia de cache
•  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
close
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
65
• Problema de la coherencia de cache
•  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
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
66
• Problema de la coherencia de cache
•  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
open
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
67
• Problema de la coherencia de cache
•  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
read ⇒ INCONSISTENCIA
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
68
• Problema de la coherencia de cache
•  Inconsistencia debido a la coutilización en escritura concurrente
Cache en el cliente A
Cache en el cliente B
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
69
• Problema de la coherencia de cache
•  Inconsistencia debido a la colutilización en escritura concurrente
Cache en el cliente A
open
Cache en el cliente B
open
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
70
• Problema de la coherencia de cache
•  Inconsistencia debido a la colutilización en escritura concurrente
Cache en el cliente A
read
Cache en el cliente B
read
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
71
• Problema de la coherencia de cache
•  Inconsistencia debido a la colutilización en escritura concurrente
Cache en el cliente A
Cache en el cliente B
write
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
72
• Problema de la coherencia de cache
•  Inconsistencia debido a la colutilización en escritura concurrente
Cache en el cliente A
Cache en el cliente B
read ⇒ INCONSISTENCIA
Fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
73
Soluciones al problema de la
coherencia
!  No emplear caché 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 caché en los clientes para datos compartidos en escritura
(Sprite).
Accesos remotos sobre una única copia asegura semántica UNIX
!  Mecanismos de caché 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 caché
tokens
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
74
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
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
75
Granularidad
!  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
GPFS: byte
!  Con semánticas UNIX, unidades grandes y acceso
concurrentes:
Posible falsa coutilización
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
76
Falsa coutilización
Proceso A
Proceso B
Unidad de coherencia
Diseño de Sistemas distribuidos
Félix García Carballeira
77
Validación de la caché
!  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
Diseño de Sistemas distribuidos
Félix García Carballeira
78
Validación de la caché
!  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
Diseño de Sistemas distribuidos
Félix García Carballeira
79
Mecanismos de actualización
!  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
!  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
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
80
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
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
81
Ejemplo
!  En cliente operaciones:
!  Open, read, write, close,
" 
red
" 
" 
" 
…
Caché en clientes y
servidores
Semántica UNIX
Cliente con caché writeback
¿Protocolo?
/home1
/a
/b
Diseño de Sistemas distribuidos
Félix García Carballeira
82
Ejemplo de protocolo de coherencia
Sprite
!  Si acceso concurrente conflictivo (1escritor + otro(s) cliente(s))
Se anula cache y se usa acceso remoto en nodos implicados
!  En open el cliente siempre contacta con servidor especificando:
Modo de acceso (R, W)
Número de versión de la copia en cache del fichero (si la hay)
!  En close no se vuelca el fichero
!  Tratamiento del open en el servidor
Si la copia del fichero en el servidor no está actualizada
" 
" 
" 
" 
!  Solicita al último cliente que vuelque datos del fichero
" 
Si no hay conflicto de acceso:
!  Si la versión del cliente es más antigua, se le indica en mensaje
de respuesta que la invalide
Diseño de Sistemas distribuidos
Félix García Carballeira
83
Ejemplo de protocolo de coherencia
Sprite (cont.)
!  Tratamiento del open en el servidor (cont.)
" 
Si la petición produce un conflicto de acceso:
!  Se le envía a los clientes con el fichero abierto una orden de
invalidación y desactivación de la cache para ese fichero
" 
Si era un escritor se le pide un volcado previo
!  Se le envía en la respuesta al cliente una petición para
invalidar y desactivar la cache para ese fichero
" 
Si la petición se encuentra que ya hay conflicto
!  Se le envía en la respuesta una petición de invalidar y
desactivar la cache para ese fichero
Diseño de Sistemas distribuidos
Félix García Carballeira
84
Sistemas de ficheros de discos
compartidos
!  Sistema de almacenamiento compartido por múltiples clientes
!  Separación entre la localización física y lógica
!  Servidores de metadatos (MDS)
!  Los clientes acceden directamente al almacenamiento sin pasar
por servidores
MDS
clientes
Red de almacenamiento
Diseño de Sistemas distribuidos
Félix García Carballeira
85
Mecanismo de acceso
SNIA
Diseño de Sistemas distribuidos
Félix García Carballeira
86
Paralelismo en el acceso a los datos
Diseño de Sistemas distribuidos
Félix García Carballeira
87
Paralelismo en el acceso a los datos
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
88
Paralelismo en el acceso a los datos
Sistemas de ficheros paralelos
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
89
Paralelismo en el acceso a los datos
Computadores paralelos
Sistemas de ficheros paralelos
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
90
Paralelismo en el acceso a los datos
Aplicaciones paralelas
Computadores paralelos
Sistemas de ficheros paralelos
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
91
Paralelismo en el acceso a los datos
Aplicaciones paralelas
!  Explotar el paralelismo
en múltiples niveles
Computadores paralelos
Sistemas de ficheros paralelos
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
92
Paralelismo en el acceso a los datos
Aplicaciones paralelas
!  Explotar el paralelismo
en múltiples niveles
Computadores paralelos
Sistemas de ficheros paralelos (SFP)
Dispositivos en paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
93
Parallel devices: disk striping
!  The data is broken down into blocks and each block is written to a separate
disk drive
!  RAID 0
!  Increase the performance
" 
By spreading the I/O load across many channels and drives
Diseño de Sistemas distribuidos
0
1
2
3
4
5
Félix García Carballeira
94
Parallel File Systems (PFS)
!  Multiple I/O nodes
Increase the bandwidth
!  A file is distributed across the I/O
nodes
Parallel access
!  To different files
!  To the same file
!  Parallel I/O interfaces
MPI-IO
!  Optimizations
Collective I/O
Access to non contiguous data
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
95
Acceso paralelo
Acceso
paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
96
Acceso paralelo
Acceso
paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
97
Acceso paralelo
Aplicación
paralela
Acceso
paralelo
Diseño de Sistemas distribuidos
Félix García Carballeira
98
Advantages of a PFS
!  Usage of standard APIs (POSIX) and special APIs (MPI-IO)
!  Parallel access to files (for reading and writing) from several client nodes.
!  Increase the bandwidth by striping the files across multiples disks and I/O
nodes.
!  Load balancing between disks and I/O nodes. Maximize the bandwidth.
!  Allows to store huge data sets.
Diseño de Sistemas distribuidos
Félix García Carballeira
99
Examples of PFS
!  PVFS
!  GPFS
!  Expand
Diseño de Sistemas distribuidos
Félix García Carballeira
100
PVFS (Parallel Virtual File System)
!  Parallel file system for Linux
clusters
Global name space
Distributed File data
Uses TCP on local file
systems
!  Mountable like NFS systems
!  MPI-IO and optimizations for
non-contiguous data access.
!  www.pvfs.org
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
101
PVFS Components
!  Client (libpvfs)
!  Servers:
" 
" 
1 x mgr: file manager,
handles metadata for files
n x iod: I/O servers,
store and retrieve file data
!  Kernel VFS module
Diseño de Sistemas distribuidos
Félix García Carballeira
102
PVFS 2 components
PVFS2 Server
CN0
Compute
nodes
CN1
…
CNn
N
e
t
w
o
r
k
…
Metadata
Nodes
PVFS2 Server
…
PVFS2 Server
I/O Nodes
…
Diseño de Sistemas distribuidos
Félix García Carballeira
103
Performance
30
NFS
Bandwidth (MB/s)
25
PVFS
20
15
10
5
0
1
2
4
8
Num ber of clients
Diseño de Sistemas distribuidos
Félix García Carballeira
104
GPFS
!  IBM’s shared disk, parallel file system
for AIX, Linux clusters
!  Used in many powerful supercomputers
in the world
!  Shared disk: all data and metadata on disk
accessible from any node through disk I/
O interface (i.e., "any to any"
connectivity)
Parallel: data and metadata flows from all
of the nodes to all of the disks in parallel
Diseño de Sistemas distribuidos
Félix García Carballeira
105
GPFS Characteristics
!  Concurrent reads and writes, parallel data access - within a file
and across files
Byte-range locking
Support fully parallel access both to file data and metadata
Client caching enabled by distributed locking
Large data blocks
Prefetch, write-behind
Access pattern optimizations
" 
! 
! 
! 
! 
! 
Diseño de Sistemas distribuidos
Félix García Carballeira
106
GPFS Characteristics (Cont.)
!  Scalability – in many respects
Computing nodes
File system nodes
Disks
Adapters
High Availability
Fault-tolerance via logging, replication, RAID support
Survives node and disk failures
Uniform access via shared disks - Single image file system
High capacity multiple TB per file system, 100s of GB per file
Standards compliant (POSIX) with minor exceptions and extensions
" 
" 
" 
" 
! 
" 
" 
! 
! 
! 
Diseño de Sistemas distribuidos
Félix García Carballeira
107
GPFS Architecture
! 
File system nodes
Run user programs, read/write data to/from storage
nodes
Implement virtual file system interface
Cooperate with manager nodes to perform metadata
operations
Manager nodes
Global lock manager
File system configuration: recovery, adding disks, …
Disk space allocation manager
Quota manager
File metadata manager - maintains file metadata
integrity
Storage nodes
Implement block I/O interface
Shared access to file system and manager nodes
Interact with manager nodes for recovery (e.g. fencing)
Data and metadata striped across multiple disks multiple storage nodes
" 
" 
" 
! 
" 
" 
" 
" 
" 
! 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
108
Large File Block Size
!  Conventional file systems store data in small blocks to pack data more
densely
!  GPFS uses large blocks (256KB default) to optimize disk transfer speed
7
Throughput (MB/sec)
6
5
4
3
2
1
0
0
128
256
384
512
640
768
896
1024
I/O Transfer Size (Kbytes)
Diseño de Sistemas distribuidos
Félix García Carballeira
109
Parallel File Access From Multiple Nodes
! 
! 
! 
! 
! 
! 
GPFS allows parallel applications on multiple nodes to access non-overlapping ranges of a
single file with no conflict
Global locking serializes access to overlapping ranges of a file
Global locking based on "tokens" which convey access rights to an object (e.g. a file) or
subset of an object (e.g. a byte range)
Tokens can be held across file system operations, enabling coherent data caching in clients
Cached data discarded or written to disk when token is revoked
Performance optimizations: required/desired ranges, metanode, data shipping, special token
modes for file size operations
Diseño de Sistemas distribuidos
Félix García Carballeira
110
Concurrency Control
! 
Token based distributed lock
manager
First lock request for an object
requires a message to the token
manager to obtain a token
Subsequent lock requests can be
granted locally
Data can be cached as long as a
token is held
When a conflicting lock request
is issued from another node the
token is revoked ("token steal")
Force on steal policy: modified
data are written to disk when the
token is revoked
Whole file locking for less
frequent operations (e.g., create,
trunc, ...). Finer grain locking for
read/write
" 
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
111
I/O in Parallel Programs
!  Sequential I/O
" 
All processes send data to rank 0, and 0 writes it to the file
• lack of parallelism limits scalability, performance (single node bottleneck)
Diseño de Sistemas distribuidos
Félix García Carballeira
112
I/O in Parallel Programs
! 
Each process writes to a separate file
Pros:
parallelism, high performance
!  Cons:
lots of small files to manage
difficult to read back data from different number of processes
! 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
113
I/O in Parallel Programs
! 
Parallel I/O
" 
Multiple processes of a parallel program accessing data
(reading or writing) from a common file
FILE
P0
Diseño de Sistemas distribuidos
P1
P(n-1)
P2
Félix García Carballeira
114
Why Parallel I/O?
!  Non-parallel I/O is simple but
Poor performance (single process writes to one file) or
Not interoperable with other tools (each process writes a
separate file)
!  Parallel I/O
Provides high performance
Can provide a single file that can be used with other tools
(such as visualization programs)
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
115
I/O system layers
Diseño de Sistemas distribuidos
Félix García Carballeira
116
I/O system layers
POSIX
Diseño de Sistemas distribuidos
Félix García Carballeira
117
Access patterns
Diseño de Sistemas distribuidos
Félix García Carballeira
118
Problems with traditional I/O interfaces
With POSIX services:
read();
lseek();
read();
lseek();
read();
.
.
It needs 23 calls
non-contiguous data access
.
Diseño de Sistemas distribuidos
Félix García Carballeira
119
I/O parallel interface: goals
size
With parallel interface we can
define a view
Create_view(fd, size, off);
Read_view(fd, buf, size*12);
It readed the two columns
with only one call
off
Diseño de Sistemas distribuidos
Félix García Carballeira
120
MPI-IO
!  Parallel read/write
!  non-contiguous data read/write
!  non-blocking read/write
!  collective read write
!  portable data representation across platforms
!  Derived data types
Diseño de Sistemas distribuidos
Félix García Carballeira
121
File view
etype = MPI_INT
filetype = two MPI_INTs followed by
a gap of four MPI_INTs
head of file
displacement
Diseño de Sistemas distribuidos
FILE
filetype
filetype
Félix García Carballeira
and so on...
122
Example: writing a shared file
#include<stdio.h>
#include "mpi.h"
int main(int argc, char **argv){
int i, rank, size, offset, nints, N=16;
MPI_File fhw;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
int buf[N];
for ( i=0;i<N;i++){
buf[i] = i ;
}
Diseño de Sistemas distribuidos
Félix García Carballeira
123
Example: writing a shared file (cont)
offset = rank*(N/size)*sizeof(int);
MPI_File_open(MPI_COMM_WORLD, "datafile3",
MPI_MODE_CREATE|MPI_MODE_WRONLY, MPI_INFO_NULL, &fhw);
printf("\nRank: %d, Offset: %d\n", rank, offset);
MPI_File_set_view(fhw, offset, MPI_INT, MPI_INT,
"native", MPI_INFO_NULL);
MPI_File_write(fhw, buf, (N/size), MPI_INT, &status);
MPI_File_close(&fhw);
MPI_Finalize();
return 0;
}
Diseño de Sistemas distribuidos
Félix García Carballeira
124
Distintos tipos de paralelismo
Nodos
De cómputo
Paralelismo lógico
Fichero lógico
Diseño de Sistemas distribuidos
Félix García Carballeira
125
Distintos tipos de paralelismo
Nodos
De cómputo
Paralelismo lógico
Fichero lógico
Fichero físico
Paralelismo físico
discos
Diseño de Sistemas distribuidos
Félix García Carballeira
126
Problema:
Muchos accesos a datos no contiguos
Un único
acceso
Fichero lógico
Fichero físico
discos
Diseño de Sistemas distribuidos
Félix García Carballeira
127
Optimizaciones
!  List I/O
!  Data sieving
!  Two-phase I/O
!  Agregation
Diseño de Sistemas distribuidos
Félix García Carballeira
128
List I/O
Node make a list
List of (file offset, length):
(0,2),(4,2),(8,2),(12,2),
(16,2),(20,2),(24,2),(28,2)
• I/O Node: serves the request
Diseño de Sistemas distribuidos
Félix García Carballeira
129
Data Sieving
Data sieving is used to combine lots of small accesses into a single larger one
Remote file systems (parallel or not) tend to have high latencies
Reducing # of operations important
!  Generally very effective, but not as good as having a PFS that supports
noncontiguous access
! 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
130
Data Sieving Writes
Using data sieving for writes is more complicated
Must read the entire region first
Then make our changes
Then write the block back
!  Requires locking in the file system
Can result in false sharing (interleaved access)
PFS supporting noncontiguous writes is preferred
! 
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
131
Two-Phase Collective I/O
Problems with independent, noncontiguous access
Lots of small accesses
Independent data sieving reads lots of extra data
!  Idea: Reorganize access to match layout on disks
Single processes use data sieving to get data for many
Often reduces total I/O through sharing of common blocks
!  Second ``phase'' moves data to final destinations
! 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
132
Agregation
!  Aggregation refers to the more general application of this
concept of moving data through intermediate nodes
" 
" 
Different #s of nodes performing I/O
Could also be applied to independent I/O
!  Can also be used for remote I/O, where aggregator
processes are on an entirely different system
Diseño de Sistemas distribuidos
Félix García Carballeira
133
Problems of traditional file systems
Client
Server
Server
!  Traditional PFS does not use standard servers
!  Very difficult to use these systems in heterogeneous environments and
clusters
Diseño de Sistemas distribuidos
Félix García Carballeira
134
Motivación de Expand
!  Proporcionar un sistema de almacenamiento de altas
prestaciones con servidores y protocolos estándar
Fácil integración de sistemas heterogéneos
Reutilización y agregación de recursos existentes
Acceso paralelo a los datos
" 
" 
" 
!  ¿Por qué?
" 
" 
" 
Porque un servidor de datos estándar ya incluye
prácticamente toda la funcionalidad necesaria
Están disponible universalmente
Independencia de la infraestructura de almacenamiento
subyacente
Diseño de Sistemas distribuidos
Félix García Carballeira
135
Objetivo de Expand
! 
Ofrecer un nuevo enfoque a la construcción de SFP para Clusters y Grid, mediante
el empleo de servidores de datos estándar
! 
Ventajas:
" 
" 
" 
" 
" 
No requiere cambios en los servidores. Operaciones implementadas en
los clientes
Expand es independiente del sistema operativo utilizado en los clientes
y servidores. Operaciones basadas en el protocolo del servidor
Se simplifica la construcción del SFP. Se aprovechan los mecanismos
de incremento de prestaciones de los servidores
Permite utilizar servidores con diferentes arquitecturas y sistemas
operativos
Facilita la instalación y configuración
Diseño de Sistemas distribuidos
Félix García Carballeira
136
Arquitectura
Nodo de cómputo
Apps.
POSIX
MPI-IO
....
Expand
NFS
GridFTP RNS-WS Local
Acceso paralelo
Nodo de cómputo
....
Expand
Protocolo del servidor
Servidor
Servidor
Servidor
estándar
Servidor
estándar
Partición distribuida
Diseño de Sistemas distribuidos
Félix García Carballeira
137
Arquitectura
Nodo de cómputo
Apps.
POSIX
MPI-IO
....
Expand
NFS
GridFTP RNS-WS Local
Acceso paralelo
Nodo de cómputo
....
Expand
Protocolo del servidor
Servidor
Servidor
Servidor
estándar
Servidor
estándar
Partición distribuida
Fichero 1
Fichero 2
Diseño de Sistemas distribuidos
Félix García Carballeira
138
Estructura de los ficheros
!  Fichero Expand:
Subfichero de metadatos
Varios subficheros de datos
!  Datos distribuidos en diferentes
servidores
!  Proyección de los ficheros a los
servidores con política flexible
Fichero en Expand
" 
" 
Diseño de Sistemas distribuidos
Servidor
Félix García Carballeira
Servidor
Servidor
139
Estructura de los ficheros
!  Fichero Expand:
Subfichero de metadatos
Varios subficheros de datos
!  Datos distribuidos en diferentes
servidores
!  Proyección de los ficheros a los
servidores con política flexible
Fichero en Expand
" 
" 
Diseño de Sistemas distribuidos
Servidor
Félix García Carballeira
Servidor
Servidor
140
Estructura de los ficheros
!  Fichero Expand:
Fichero en Expand
Subfichero de metadatos
Varios subficheros de datos
!  Datos distribuidos en diferentes
servidores
!  Proyección de los ficheros a los
servidores con política flexible
" 
" 
Servidor
Servidor
Servidor
subficheros
Diseño de Sistemas distribuidos
Félix García Carballeira
141
Estructura de los ficheros
!  Fichero Expand:
Fichero en Expand
Subfichero de metadatos
Varios subficheros de datos
!  Datos distribuidos en diferentes
servidores
!  Proyección de los ficheros a los
servidores con política flexible
0
" 
1
2
3
4
5
6
7
8
" 
subficheros
Diseño de Sistemas distribuidos
Servidor
Servidor
Servidor
0
1
2
3
4
5
6
7
8
Félix García Carballeira
142
Estructura de los ficheros
!  Fichero Expand:
Fichero en Expand
Subfichero de metadatos
Varios subficheros de datos
!  Datos distribuidos en diferentes
servidores
!  Proyección de los ficheros a los
servidores con política flexible
0
" 
1
2
3
4
5
6
7
8
" 
subficheros
Diseño de Sistemas distribuidos
Servidor
Servidor
Servidor
0
1
2
3
4
5
6
7
8
Félix García Carballeira
143
Estructura de los directorios
Visión lógica
Visión física
/Expand
Dir1
Dir2
Servidor
1
Servidor
2
/export1
/export2
/export3
Dir3
Dir1 Dir2 Dir3
Dir4
Servidor
3
Proyección
fichero A
Diseño de Sistemas distribuidos
Dir1 Dir2 Dir3
Dir4
Dir4
fichero A
fichero A
Félix García Carballeira
Dir1 Dir2 Dir3
Dir4
fichero A
144
Gestión de metadatos
!  Gestión distribuida de metadatos
" 
" 
" 
Dos niveles
Sin cerrojos
Sin gestor de metadatos
Fichero
0
2
3
5
6
7
8
bloque
Servidor
Servidor
!  Metadatos distribuidos entre los
servidores
Nodo master
Función hash(nombre)
Equilibrio de carga
4
Servidor
" 
metadatos
" 
" 
2
5
8
0
3
6
1
4
7
subficheros
Diseño de Sistemas distribuidos
Félix García Carballeira
145
Gestión de metadatos
!  Gestión distribuida de metadatos
" 
" 
" 
Dos niveles
Sin cerrojos
Sin gestor de metadatos
Servidor
Servidor
Servidor
!  Metadatos distribuidos entre los
servidores
Nodo master
Función hash(nombre)
Equilibrio de carga
" 
metadatos
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
146
Acceso paralelo
Bloques
de datos
Diseño de Sistemas distribuidos
0
1
2
3
4
5
6
7
8
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
147
Acceso paralelo
read(fd, buffer, count)
buffer
Bloques
de datos
Diseño de Sistemas distribuidos
0
1
2
3
4
5
6
7
8
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
148
Acceso paralelo
read(fd, buffer, count)
buffer
Bloques
de datos
0
1
2
3
4
Expand
5
6
7
8
Threads
Threads
Diseño de Sistemas distribuidos
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
149
Acceso paralelo
read(fd, buffer, count)
buffer
Bloques
de datos
0
1
2
3
4
Expand
5
6
7
8
Threads
Threads
Acceso paralelo
Diseño de Sistemas distribuidos
filehandle2
filehandle1
filehandle3
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
150
Acceso paralelo
read(fd, buffer, count)
buffer
Bloques
de datos
0
1
2
3
4
Expand
5
6
7
8
Threads
Threads
Acceso paralelo
Diseño de Sistemas distribuidos
filehandle2
filehandle1
filehandle3
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
151
Acceso paralelo
read(fd, buffer, count)
buffer
Bloques
de datos
0
1
2
3
4
Expand
5
6
7
8
Threads
Threads
Diseño de Sistemas distribuidos
filehandle2
filehandle1
Acceso paralelo
filehandle3
Servidor
Servidor
Servidor
2
5
8
0
3
6
1
4
7
Félix García Carballeira
subfichero
152
Interfaz MPI-IO utilizando ROMIO
MPI-IO
ADIO
UNIX
NFS
PVFS
Servidor
Expand
IBM
PIOFS
SGI
XFS
Servidor
Partición distribuida
Diseño de Sistemas distribuidos
Félix García Carballeira
153
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Metadatos
2
5
8
0
3
6
1
4
7
Hash (fichero) = servidor 2
Diseño de Sistemas distribuidos
Félix García Carballeira
154
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Servidor
4
Metadatos
2
5
8
Diseño de Sistemas distribuidos
0
3
6
1
4
7
Félix García Carballeira
155
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Metadatos
2
5
8
0
3
6
1
4
7
Servidor
4
?
Hash (fichero) = servidor 3
Diseño de Sistemas distribuidos
Félix García Carballeira
156
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Servidor
4
Metadatos
2
5
8
0
3
6
1
4
7
Hash (fichero) = servidor 3
Diseño de Sistemas distribuidos
Félix García Carballeira
157
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Servidor
4
Metadatos
2
5
8
0
3
6
1
4
7
Instantánea
!  Diferida
! 
Hash (fichero) = servidor 3
Diseño de Sistemas distribuidos
Félix García Carballeira
158
Reconfiguración dinámica de particiones
Servidor
1
Servidor
2
Servidor
3
Servidor
4
Metadatos
2
5
8
12
16
Diseño de Sistemas distribuidos
0
3
6
9
13
1
4
7
10
14
Félix García Carballeira
11
15
159
Versiones para Clusters
Versión para Linux con NFS
Versión en Java con NFS
C App
C App
Java App.
Java App.
Expand
Expand
jExpand
jExpand
RPC
RPC
Java RPC
Java RPC
JVM
JVM
Acceso paralelo
Acceso paralelo
Protocolo NFS
Servidor
NFS
Servidor
NFS
Protocolo NFS
Partición distribuida
Diseño de Sistemas distribuidos
Servidor
NFS
Servidor
NFS
Partición distribuida
Félix García Carballeira
160
Evaluación
!  Objetivo:
" 
Analizar el comportamiento de Expand frente a sistemas
reales
!  PVFS
!  GPFS
!  Servicios Globus para Grid
!  Entornos:
" 
" 
Cluster
Grid
Diseño de Sistemas distribuidos
Félix García Carballeira
161
Entorno de pruebas Cluster
Gigabit Ethernet
!  8 biprocesadores Pentium IV, 3.2 GHz
!  2 GB memoria por nodo
!  Sistemas de ficheros evaluados:
" 
" 
" 
Expand
PVFS
GPFS
Diseño de Sistemas distribuidos
Félix García Carballeira
162
Alto rendimiento
Acceso paralelo a un fichero
!  Programa paralelo (IOR) que escribe y lee un fichero de forma entrelazada (500
MB) con diferentes tamaños de acceso
!  Interfaz MPI-IO
Proceso
0
fichero
0
1
Proceso
1
2
3
4
Proceso
2
5
6
7
8
tamaño de acceso
Diseño de Sistemas distribuidos
Félix García Carballeira
163
Alto rendimiento
Acceso paralelo a un fichero. Resultados
8 procesos (escritura)
ancho de banda [MB/s]
120
100
80
60
40
XPN
PVFS
GPFS
20
1M
B
51
2K
B
25
6K
B
12
8K
B
64
KB
32
KB
16
KB
8K
B
4K
B
2K
B
1K
B
51
2
25
6
0
tamaño de acceso
Diseño de Sistemas distribuidos
Félix García Carballeira
164
Alto rendimiento
Acceso paralelo a un fichero. Resultados
8 procesos (lectura)
ancho de banda [MB/s]
140
120
100
80
60
XPN
PVFS
GPFS
40
20
1M
B
51
2K
B
25
6K
B
12
8K
B
64
KB
32
KB
16
KB
8K
B
4K
B
2K
B
1K
B
51
2
25
6
0
tamaño de acceso
Diseño de Sistemas distribuidos
Félix García Carballeira
165
Alta productividad
Aplicación de procesamiento de imágenes
!  Aplicación paralela que procesa un conjunto de 256 imágenes
Cada proceso de la aplicación procesa un subconjunto de
imágenes de forma independiente
No hay acceso paralelo a un fichero
!  Cada imagen tiene un tamaño de 5MB
Volumen de datos: 2,5 GB
!  Sobre cada imagen, la aplicación devuelve una nueva imagen
aplicando una máscara fija de pixels
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
166
Alta productividad
Aplicación de procesamiento de imágenes
procesamiento de imágenes(C)
100
XPN
PVFS
GPFS
90
80
tiempo [s]
70
60
50
40
30
20
10
0
1
2
4
8
16
número de procesos
Diseño de Sistemas distribuidos
Félix García Carballeira
167
Alta productividad
Aplicación de procesamiento de imágenes
procesamiento de imágenes (Java)
450
XPN
PVFS
GPFS
400
350
tiempo [s]
300
250
200
150
100
50
0
1
2
4
8
16
número de procesos
Diseño de Sistemas distribuidos
Félix García Carballeira
168
Hadoop file system
!  Sistema de ficheros distribuido diseñado por Apache
Foundation Inc.
!  http://hadoop.apache.org/hdfs/
Diseño de Sistemas distribuidos
Félix García Carballeira
169
Características básicas
!  Adecuado para ejecutar sobre HW de propósito general
! 
! 
(clusters)
Tolerancia a fallos
Gran ancho de banda
El objetivo es gran ancho de banda, no baja latencia
No está pensado para uso interactivo (procesamiento batch)
Adecuado para aplicaciones que procesan grandes cantidades
de datos
Grandes ficheros y conjuntos de datos: GB hasta TB
Decenas de millones de ficheros
Streaming data access
Modelo de coherencia: write-once-read-many
" 
" 
! 
" 
" 
! 
! 
Diseño de Sistemas distribuidos
Félix García Carballeira
170
Arquitectura
!  Arquitectura maestro/esclavo
!  Nodo Namenode (único)
Gestiona el espacio de nombres (único para todo el cluster)
y regula el acceso a los ficheros
!  DataNodes (normalmente uno por nodo en el cluster)
Servidor de bloques en el sistema de ficheros local (ej: ext3)
Gestiona el almacenamiento del nodo
Los ficheros se dividen en bloques de 128 MB
Cada bloque se replica en varios DataNodes
Los clientes acceden a los DataNodes directamente
" 
" 
" 
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
171
Arquitectura
Diseño de Sistemas distribuidos
Félix García Carballeira
172
Plataforma HW típica
!  Clusters de PC organizados en racks
Diseño de Sistemas distribuidos
Félix García Carballeira
173
Espacio de nombres
!  Espacio de nombres jerarquico
!  Operaciones: crear, eliminar, renombar, etc.
!  El espacio de nombres y los metadatos se almacenan en el
Namenode
!  Las aplicaciones pueden especificar el número de réplicas para
un fichero: factor de replicación (se almacena como parte de
los metadatos)
Diseño de Sistemas distribuidos
Félix García Carballeira
174
Replicación de datos
!  HDFS está diseñado para almacenar grandes ficheros
!  Cada fichero consta de una secuencia de bloques (64, 128 MB)
!  Todos los bloques son del mismo tamaño, excepto el último
!  Los bloques se replican en diversos DataNodes
!  El NameNode monitoriza el estado de los DataNodes. Recibe
periodicamente un Heartbeat.
Diseño de Sistemas distribuidos
Félix García Carballeira
175
Metadatos
!  Todos los metadatos se almacenan en el NameNode
!  El sistema de ficheros entero se almacena en un fichero
denominado FsImage que se almacena en el sistema de
ficheros local del NameNode
!  Mantiene una imagen del sistema de ficheros en memoria
!  El NameNode es un punto único de fallo en el sistema
!  NameNode secundario
Diseño de Sistemas distribuidos
Félix García Carballeira
176
DataNodes
!  Servidor de bloques
!  No tienen conocimiento de la estructura de HDFS
!  Cada bloque se almacena en un fichero diferente utilizando el
sistema de ficheros local
!  No almacena todos los ficheros en el mismo directorio
!  Utiliza heurísticas para determinar el número óptimo de
ficheros por directorio
Diseño de Sistemas distribuidos
Félix García Carballeira
177
Réplicas
!  Localización
Una réplica se almacena en un nodo del rack local, otra en
otro nodo del mismo rack y otra en un nodo de otro rack.
Replicas adicionales se almacenan aleatoriamente
!  Selección
Los clientes leen de la réplica más cercana
Si hay una réplica en el mismo rack del lector se utiliza ésta
" 
" 
" 
Diseño de Sistemas distribuidos
Félix García Carballeira
178
Creación de un fichero
!  Cuando un cliente crea un fichero no contacta con el
! 
! 
! 
! 
! 
NameNode inmediatamente
El cliente HDFS almacena los datos en una cache local.
Cuando los datos alcanzan el tamaño del bloque se contacta
con el NameNode
El NameNode inserta el nombre del fichero y asigna bloques
El NameNode responde al cliente con el destino de las replicas
para el bloque
El cliente vuelca los datos
Diseño de Sistemas distribuidos
Félix García Carballeira
179
Pipeline de replicación
!  Cuando un cliente vuelca los datos de un bloque lo hace en
trozos de 4 KB
!  Cuando el primer trozo de 4 KB llega al primer DataNode
escribe su porción en disco y transfiere el bloque al siguiente
DataNode y así sucesivamente
Diseño de Sistemas distribuidos
Félix García Carballeira
180

Documentos relacionados