Sistemas Operativos Distribuidos
Sistemas de
ficheros
distribuidos
Sistemas de
ficheros
distribuidos
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 2
22
2 José María Peña SánchezFernando Pérez Costoya
Contenidos del Tema
• Introducción
• Estructura de un SFD
• Servicio de directorio
• Servicio de ficheros
• Caching
• Servidor con estado o sin estado
• Estudio de ejemplos:
– NFS – AFS
– Caching en Sprite – Caching en DFS
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 3
33
3 José María Peña SánchezFernando Pérez Costoya
Conceptos básicos
• Sistema de ficheros distribuido (SFD)
– Sistema de ficheros para sistema distribuido
– Gestiona distintos dispositivos en diferentes nodos ofreciendo a usuarios la misma visión que un SF centralizado
– Permite que usuarios compartan información de forma transparente – Misma visión desde cualquier máquina (espacio de nombres único)
• Numerosos aspectos similares a SF centralizados
• Algunos aspectos específicos como por ejemplo:
– Traducción de nombres afecta a varios nodos – Caching afecta a múltiples nodos
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 4
44
4 José María Peña SánchezFernando Pérez Costoya
Estructura del SFD
• Generalmente arquitectura cliente-servidor.
• Dos componentes:
– Servicio de directorio (SD)
• Traduce nombres de fichero a identificador interno – Servicio de ficheros (SF)
• Proporciona acceso a ficheros a partir de su identificador • Gestiona un “sistema de ficheros plano”
• Dos alternativas:
– Único módulo que ofrece ambos servicios (a lo UNIX) • servidor de ficheros incluye ambas funciones
– directorio es sólo un fichero especial
– Módulos independientes (p. ej. Amoeba) • Servidor de directorios y servidor de ficheros
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 5
55
5 José María Peña SánchezFernando Pérez Costoya
Estructura del SFD
Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000
Client computer Server computer
Application program
Application program
Client module
Flat file service Directory service
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 6
66
6 José María Peña SánchezFernando Pérez Costoya
Servicio de directorio
• Esquema de nombres generalmente con dos niveles:
– Nombres de usuario y Nombres internos
• Directorio:
– Relaciona nombres de usuario con nombres internos
• Dos niveles de traducción posibles:
– De nombre de usuario a interno → Servicio de directorio – De nombre interno a localización del fichero
• SD puede estar integrado en servicio de nombres genérico
– No sólo ficheros sino todos los objetos del sistema
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 7
77
7 José María Peña SánchezFernando Pérez Costoya
Nombres de usuario
• Generalmente el espacio de nombres es jerárquico
– Nombres son pathnames
• Debe proporcionar transparencia de la posición
– Nombre de fichero no permite saber donde está almacenado – Nombre no debe incluir identificación del nodo donde está
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 8
88
8 José María Peña SánchezFernando Pérez Costoya
Nombres internos
• Identificador único de fichero (UFID) utilizado por el sistema
• Conveniente independencia de la posición
– Nombre de fichero no cambia cuando éste migra
– Nombre interno sin información de máquina que lo almacena – Requiere esquema de localización
• Generalmente nombres estructurados
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 9
99
9 José María Peña SánchezFernando Pérez Costoya
Dominios de nombres
• Espacio de nombres dividido en dominios
– UFID = [ UID Dominio + UID dentro del dominio ]
• Cada dominio gestionado por un servidor de directorios
– Generación y resolución de nombres distribuida
• ¿Cómo generar IDs de dominio únicos?
• Ejemplo: UID de Dominio = [ Dir. IP nodo creador + fecha ]
• Dir. IP sólo para asegurar nombre único (el dominio puede migrar)
• Composición de dominios (“montaje”). Alternativas:
– Montar sistema de ficheros remoto sobre la jerarquía local (NFS) • Espacio de nombres diferente en cada máquina
• “Montaje en el cliente”
– Único espacio de nombres en todas las máquinas (AFS) • “Montaje en el servidor”
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 10
10 10
10 José María Peña SánchezFernando Pérez Costoya
Resolución de nombres
• De nombre de usuario a interno (servicio de directorio)
– Traducción de un pathname
– Puede implicar a varios servidores de directorio
• Alternativas en la resolución:
– Resolución iterativa
• Cliente contacta con sucesivos SDs – Resolución transitiva
• Cliente contacta con primer SD, éste con 2º, último SD responde • Rompe el modelo cliente/servidor (no adecuado para RPC)
– Resolución recursiva
• Cliente contacta con primer SD, éste con 2º, etc. • Primer SD responde al cliente
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 11
11 11
11 José María Peña SánchezFernando Pérez Costoya
Resolución iterativa
C 3/4 1/2 5/6 SD1 SD2 SD3Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 12
12 12
12 José María Peña SánchezFernando Pérez Costoya
Resolución transitiva
C 2 1 3 SD1 SD2 SD3 4Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 13
13 13
13 José María Peña SánchezFernando Pérez Costoya
Resolución recursiva
C 2 1/6 3 SD1 SD2 SD3 4 5Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 14
14 14
14 José María Peña SánchezFernando Pérez Costoya
Uso de cache en la resolución
• Mantiene últimas traducciones realizadas en el nodo
• Reduce la necesidad de contactar con SD
• Mejora eficiencia y capacidad de crecimiento del sistema
• La información en la cache se trata como una “pista”
– mecanismo para detectar que traducción en cache no es válida
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 15
15 15
15 José María Peña SánchezFernando Pérez Costoya
Localización de ficheros
• ¿Cómo localizar un fichero a partir de su UFID?
– De ID de dominio a nodo donde está almacenado
• Sólo necesario si ID de dominio no contiene dir. de nodo
• Posibles esquemas de localización:
– Tablas que mantengan la relación dominio-nodo
– Uso de broadcast para localizar nodo que contiene dominio
• Uso de “cache de localizaciones” en clientes:
– La información en la cache se trata como una “pista”
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 16
16 16
16 José María Peña SánchezFernando Pérez Costoya
Servicio de ficheros
• Se encarga de la gestión de ficheros y del acceso a los datos
• Se analizan los siguientes aspectos:
– Uso de los ficheros
– Semántica de utilización concurrente – Modelo de acceso
– Caching
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 17
17 17
17 José María Peña SánchezFernando Pérez Costoya
Uso de ficheros
• La forma de usar los ficheros influye en el diseño de los SFD
• Estadíticas de uso en entornos UNIX de propósito general:
– Mayoría de los ficheros pequeños (<10K) – Mayor frecuencia de lecturas
– Generalmente acceso secuencial
– Bastantes ficheros tienen una “vida” corta – Compartición poco frecuente
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 18
18 18
18 José María Peña SánchezFernando Pérez Costoya
Semánticas de uso concurrente (1/3)
• Sesión: serie de accesos que realiza cliente entre open y close
• La semántica especifica el efecto de varios procesos
accediendo de forma simultánea al mismo fichero
• Semántica UNIX (Sprite y DFS)
– Una lectura ve los efectos de todas las escrituras previas – El efecto de dos escrituras sucesivas es el de la última – Difícil de implementar en sistemas distribuidos
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 19
19 19
19 José María Peña SánchezFernando Pérez Costoya
Semánticas de uso concurrente (2/3)
• Semántica de sesión (AFS)
– 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 simultáneas del fichero
– Dos sesiones sobre mismo fichero que terminan concurrentemente: • La última deja el resultado final
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 20
20 20
20 José María Peña SánchezFernando Pérez Costoya
Semánticas de uso concurrente (3/3)
• Semántica de ficheros inmutables (Amoeba)
– 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
– Conjunto de operaciones sobre fichero se encapsulan en transacción – Transacciones se estudian en capítulo posterior
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 21
21 21
21 José María Peña SánchezFernando Pérez Costoya
Modelo de acceso
• Modelo carga/descarga
– Transferencias completas del fichero
– Localmente se almacena en memoria o discos locales – Normalmente utiliza semántica de sesión
– Eficiencia en las transferencias
– Llamada open con mucha latencia
• Modelo de servicio remoto
– Servidor debe proporcionar todas las operaciones sobre el fichero – Acceso por bloques
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 22
22 22
22 José María Peña SánchezFernando Pérez Costoya
Caching
• El empleo de cache 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 cache
– Cache de nombres
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 23
23 23
23 José María Peña SánchezFernando Pérez Costoya
Posición de la cache en un SFD
• Cache en los servidores
– Reducen los accesos a disco
• Cache en los clientes
– Reduce el tráfico por la red
– Reduce la carga en los servidores – Mejora la capacidad de crecimiento – Introduce problemas de coherencia – Dos posibilidades no excluyentes
• En discos locales (no permite nodos sin disco)
– Más capacidad pero más lento – No volátil, facilita la recuperación
• En memoria principal
– Menor capacidad pero más rápido – Memoria volátil
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 24
24 24
24 José María Peña SánchezFernando Pérez Costoya
Política 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 (delayed-write)
– Escrituras más rápidas. Se reduce el tráfico en la red
– Los datos pueden borrarse antes de ser enviados al servidor – Menor fiabilidad
– Alternativas sobre el volcado de los datos: • Volcado periódico (a lo UNIX)
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 25
25 25
25 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache
• El uso de cache en clientes produce problema de coherencia
– ¿es coherente una copia en cache con el dato en el servidor?
• Estrategia de validación iniciada por el cliente
– cliente contacta con servidor para determinar validez • en cada acceso, al abrir el fichero o periódicamente
• Estrategia de validación iniciada por el servidor
– servidor avisa a cliente al detectar que su copia es inválida • generalmente se usa write-invalidate (no write-update)
– servidor almacena por cada cliente qué ficheros guarda • granularidad de la información:
– a nivel de fichero – a nivel de bloque
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 26
26 26
26 José María Peña SánchezFernando Pérez Costoya
Servidores con estado y sin estado
• Alternativa de diseño
• Aplicable a cualquier servicio
• Influye en tolerancia a fallos
• Servidores con estado
– Se mantiene información sobre los clientes
– Cuando se abre un fichero, el servidor almacena información y da al cliente un identificador único a utilizar en las posteriores llamadas
• Servidores sin estado
– No se mantiene información sobre los clientes
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 27
27 27
27 José María Peña SánchezFernando Pérez Costoya
Servicio con estado vs. sin estado
• 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 validación iniciada por el servidor • Uso de leases para paliar el problema (DFS)
– Permisos con plazo de expiración
• Ventajas de los servidores sin estado
– Más tolerantes 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
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 28
28 28
28 José María Peña SánchezFernando Pérez Costoya
Network File System (NFS) de Sun
• Especificación de un protocolo para acceso a ficheros remotos
• Estándar de facto diseñado para trabajar en entornos heterogéneos • Independencia gracias al uso de RPC/XDR
• Seguridad basada en RPC (autenticación basada en claves) • Compartición: máquina monta directorio remoto en SF local
– Espacio de nombres es diferente en cada máquina – Montado no transparente (nombre de máquina remota) – Una vez montado, acceso transparente a ficheros
• No es un verdadero sistema de ficheros distribuido • Comprende dos protocolos:
– Protocolo de montaje
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 29
29 29
29 José María Peña SánchezFernando Pérez Costoya
Protocolo de montaje
• Establece una conexión lógica entre el servidor y el cliente
• Cada máquina incluye una “lista de exportación”
– qué “árboles” exporta y quién puede montarlos
• Petición de montaje incluye máquina y directorio remotos
– Se convierte en RPC al servidor de montaje remoto
– Si permiso en lista, devuelve un identificador “opaco” (handle) • En UNIX identificador del SF y nodo-i del directorio montado
• La operación de montaje sólo afecta al cliente no al servidor
– se permiten montajes NFS anidados
– no se permiten montajes NFS “transitivos”
• Aspectos proporcionados por algunas implementaciones:
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 30
30 30
30 José María Peña SánchezFernando Pérez Costoya
Ejemplo de montado en NFS
• La máquina A exporta /usr y /bin • En la máquina B:
– mount máquinaA:/usr /usr
Máquina A include / bin usr lib Máquina B / home bin usr
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 31
31 31
31 José María Peña SánchezFernando Pérez Costoya
Ejemplo de montado en NFS
• Imagen diferente del sistema de ficheros
local usr vmunix Servidor Cliente A Cliente B . . . usr lib bin bin lib local usr (root) . . . x (root) (root)
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 32
32 32
32 José María Peña SánchezFernando Pérez Costoya
Protocolo NFS
• Ofrece RPCs para realizar operaciones sobre ficheros remotos
– Búsqueda de un fichero en un directorio (LOOKUP) – Lectura de entradas de directorio
– Manipulación de enlaces y directorios – Acceso a los atributos de un fichero – Lectura y escritura de ficheros
• Servidores NFS no almacenan estado
– Operaciones autocontenidas
• OPEN/CLOSE reemplazados por LOOKUP
– traducción iterativa componente a componente
• LOOKUP(handle de directorio, fichero) → handle de fichero
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 33
33 33
33 José María Peña SánchezFernando Pérez Costoya
Implementación Sun de NFS
• Arquitectura formada por tres niveles:
– Interfaz de llamadas al sistema de ficheros UNIX – Sistema de ficheros virtual (VFS)
• almacena una entrada por cada archivo abierto (vnode)
• cada vnode apunta a un nodo-i local o a uno remoto (rnode) • redirige petición a la capa inferior correspondiente
– Servicio NFS
• implementa el protocolo NFS
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 34
34 34
34 José María Peña SánchezFernando Pérez Costoya
Arquitectura de SUN/NFS
CLIENTE
SERVIDOR
CAPA DE LLAMADAAL SISTEMA
CAPA DEL SISTEMA DE FICHEROS VIRT. S.O. LOCAL CLIENTE NFS DISCO LOCAL RPC/XDR
CAPA DEL SISTEMA DE FICHEROS VIRT. S.O. LOCAL SERVIDOR NFS DISCO LOCAL RPC/XDR
RED
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 35
35 35
35 José María Peña SánchezFernando Pérez Costoya
Acceso a los ficheros
• 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 se cierra el fichero
• 3 tipos de cache en el cliente:
– cache de nombres para acelerar las traducciones – cache de atributos de ficheros y directorios
• información del nodo-i (fechas, dueño, ...) – cache de bloques de ficheros y directorios
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 36
36 36
36 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache
• No asegura ninguna semántica
• Validación dirigida por el cliente:
– Toda operación sobre un fichero devuelve sus atributos – Si los atributos indican que el fichero se ha modificado
• se invalidan los datos del fichero en cache de bloques
– Entradas de cache de bloques y atributos tienen un tiempo de vida – Si no se acceden es ese periodo se descartan
– Valores típicos:
• 3 segundos para ficheros • 30 para directorios
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 37
37 37
37 José María Peña SánchezFernando Pérez Costoya
Andrew File System (AFS)
• SFD desarrollado en Carnegie-Mellon (desde 1983)
• El DFS de DCE se basa en AFS
• Sistemas distribuidos a gran escala (5000 - 10000 nodos)
• Distingue entre nodos cliente y servidores dedicados
• Los nodos cliente tienen que tener disco
• Ofrece a clientes dos espacios de nombres:
– local y compartido (directorio /afs)
– espacio local sólo para ficheros temporales o de arranque
• Servidores gestionan el espacio compartido
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 38
38 38
38 José María Peña SánchezFernando Pérez Costoya
Estructura de AFS
• AFS utiliza dos componentes que ejecutan como procesos de usuario comunicándose mediante el protocolo Virtue
– Por debajo UNIX ligeramente modificado
• Venus:
– ejecuta en los clientes
– SO le redirecciona peticiones sobre ficheros compartidos – realiza las traducciones de nombres de fichero
• resolución dirigida por el cliente • Vice:
– ejecuta en los servidores
– procesa solicitudes remotas de clientes
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 39
39 39
39 José María Peña SánchezFernando Pérez Costoya
Estructura de AFS
Kernel UNIX
Estaciones de trabajo Servidores
Kernel UNIX RED Vice Venus Venus Venus Vice Kernel UNIX Kernel UNIX Kernel UNIX Programa de usuario Programa de usuario Programa de usuario
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 40
40 40
40 José María Peña SánchezFernando Pérez Costoya
Espacio de nombres compartido
• Los ficheros se agrupan en volúmenes
• Cada fichero tiene identificador único (UFID: 96 bits)
– Número de volumen
– Número de vnodo (dentro del volumen)
– Número único: permite reutilizar números de vnodo
• Los UFID son transparentes de la posición
– un volumen pueden cambiar de un servidor a otro.
• Estrategia de localización
– dominio → servidor que lo gestiona – tabla replicada en cada servidor
– cliente mantiene una cache de localización • si falla repite proceso de localización
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 41
41 41
41 José María Peña SánchezFernando Pérez Costoya
Acceso a ficheros
• Modelo de carga/descarga
– En open servidor transfiere fichero completo al cliente
– Versión actual: fragmentos de 64Kbytes
• Venus almacena el fichero en la cache local de los clientes
– Se utiliza el disco local (la cache es no volátil)
• Lecturas/escrituras localmente en clientes sin intervenir Venus • Cuando un proceso cierra un fichero (close)
– Si se ha modificado se envía al servidor (write-on-close) – Se mantiene en cache local para futuras sesiones
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 42
42 42
42 José María Peña SánchezFernando Pérez Costoya
Caching en AFS
• Venus gestiona dos caches independientes:
– Cache de atributos – Cache de datos
• Se utiliza LRU para cada una de ellas.
• La cache de atributos se almacena en memoria
– almacena los atributos de los ficheros
• La cache de datos se almacena en el disco local
– contiene ficheros, directorios y enlaces simbólicos
• La cache de bloques del SF de UNIX también opera aunque
de manera transparente a AFS
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 43
43 43
43 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache (1/2)
• Semántica de sesión
• Sigue un esquema de validación iniciado por el servidor • Usa un esquema basado en callbacks
• Cuando cliente abre un fichero del que no existe una copia local (o no es válida), contacta con el servidor que anota esta situación
– el fichero tiene un callback
• Siguientes aperturas del fichero no contactan con servidor • Cuando cliente cierra un fichero que ha modificado:
– Lo notifica y lo vuelca al servidor
– El servidor avisa a todos los nodos con una copia local para que la invaliden (revoca el callback)
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 44
44 44
44 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache (2/2)
• Cuando llega una revocación a un nodo:
– procesos con fichero abierto continúan accediendo a copia anterior – nueva apertura cargará el nuevo contenido desde el servidor
• Los clientes de AFS asumen que los datos en su cache son
válidos mientras no se notifique lo contrario
• El servidor almacena por cada fichero una lista de clientes
que tienen copia del fichero en su cache:
– la lista incluye a todos los clientes que tienen copia y no sólo a los que tienen abierto el fichero
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 45
45 45
45 José María Peña SánchezFernando Pérez Costoya
Caching en Sprite
• Sprite: SOD experimental desarrollado en Berkeley en los 80
– Arquitectura monolítica
• SFD con semántica UNIX siguiendo modelo de servicio remoto • Caches en la memoria de clientes y servidores (bloques de 4KB) • No usa lectura anticipada
• Usa delayed-write con volcado periódico (no write-on-close) • Estrategia de validación iniciada por el servidor
– granularidad a nivel de fichero
– hay un número de versión asociado a cada fichero
– servidor guarda información de qué clientes tienen abierto un fichero y de qué cliente fue último escritor ya que datos más recientes pueden estar en su cache
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 46
46 46
46 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache en Sprite (1/2)
• Si acceso concurrente conflictivo (1escritor + otro(s) cliente(s))
– se anula cache y se usa acceso remoto en nodos implicados
• En open cliente siempre contacta con servidor especificando:
– modo de acceso
– 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 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 versión del cliente es más antigua, se le indica en mensaje de respuesta que la invalide
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 47
47 47
47 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache en Sprite (2/2)
• Tratamiento del
open
en el servidor (continuación)
– 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 manda en la respuesta al cliente una petición de invalidar y desactivar la cache para ese fichero
– Si la petición se encuentra que ya hay conflicto
• Se le manda en la respuesta una petición de invalidar y desactivar la cache para ese fichero
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 48
48 48
48 José María Peña SánchezFernando Pérez Costoya
DFS
• Sistema de ficheros distribuido de DCE (Open Group)
• Derivado de AFS pero con bastantes diferencias:
– Un nodo puede ser cliente y servidor – No exige discos locales
– No usa semántica de sesión
– No hay transferencia completas de ficheros (bloques de 64K)
• Características:
– Semántica UNIX
– Independiente de la posición
• Ficheros pueden migrar transparentemente – Permite replicación
• Modelo de copia primaria
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 49
49 49
49 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache en DFS (1/2)
• Uso de tokens con plazo de expiración (leases)
– Servidor con estado pero con buena recuperación
• Para realizar operación se requiere token correspondiente
• Token (de lectura o escritura) asociado a un rango de bytes
• Si cliente solicita operación y no está presente token
requerido en su nodo, se solicita al servidor de ficheros
• Para una zona de un fichero, el servidor puede generar
Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos Sistemas Operativos Distribuidos 50
50 50
50 José María Peña SánchezFernando Pérez Costoya
Coherencia de cache en DFS (2/2)
• Si existen múltiples tokens de lectura y llega solicitud de
escritura, servidor reclama los tokens
– Cliente devuelve token e invalida bloques de cache afectados – Cuando todos devueltos, servidor manda token de escritura
• Si hay un token de escritura y llega solicitud de lectura o
escritura, servidor reclama el token:
– Cliente vuelca e invalida bloques de cache afectados
• Un token tiene un plazo de expiración (típico 2 minutos):
– Pasado el plazo cliente considera que token ya no es válido – Permite tener servidor con estado pero fácil recuperación:
• Si tiempo de recuperación de servidor > plazo de expiración
– todos los tokens están caducados