Sistemas de Operación II Sistemas de Archivos Distribuidos Prof. Carlos Figueira Basado en material de Yudith Cardinale (USB) Andrew Tanembaum y Marteen van Steen
Carlos Figueira/USB2 Contenido ● Introducción ● Requisitos ● Aspectos de Diseño ● Servicios de archivos ● Servicios de directorios ● Módulo cliente ● Semántica de archivos compartidos ● Aspectos de Implementación ● Uso de Archivos ● Estructura del Sistema ● Caching ● Réplicas
Carlos Figueira/USB3 Introducción ● Un sistema de archivos distribuidos (SAD) permite a los procesos el acceso transparente y eficiente a archivos en servidores remotos. ● Útiles en Intranets, redes locales y sistemas distribuidos ● Responsables de organización, almacenamiento, recuperación, denominación, acceso compartido y protección de los archivos. ● Proporcionan interfaz de programación que abstrae a los programadores de los detalles de localización y asignación del almacenamiento
Carlos Figueira/USB4 Introducción ● Servicios de Archivos ● Especificación de servicios que servidor de archivos (SA) ofrece a sus clientes ● Especificación de la interfaz del SA con los clientes ● Describe las primitivas disponibles con sus parámetros y acciones ● Servidor de archivos ● Proceso que se ejecuta en alguna máquina y ayuda a implantar el servicio de archivos. ● Se ejecuta en espacio de usuario; el sistema puede contener varios SA con servicios de archivos diferentes. ● Puede haber 1 o más SA; debe ser transparente a los clientes.
Carlos Figueira/USB5 Requisitos ● Transparencia ● De acceso (distribución de los archivos) ● De localización ● De movilidad ● De prestaciones: continúa funcionando mientras la carga del servicio varíe (en un rango) ● De escalabilidad ● Actualizaciones concurrentes ● soporta varios clientes modificando los mismos datos de manera concurrente
Carlos Figueira/USB6 Requisitos ● Replicación de archivos: implementada por redundancia o desempeño (caching) ● Soporte de heterogeneidad de hardware y sistema de operación ● Tolerancia a fallas ● Consistencia: define la semántica de actualización de una copia ● Seguridad: mecanismos de control de acceso y autenticación ● Eficiencia: desempeño debe ser similar a sistemas de archivos locales.
Carlos Figueira/USB7 Arquitectura de NFS
Carlos Figueira/USB8 Servicio de Archivos ● Tres componentes: servicio de archivos planos, servicio de directorios y módulo cliente ● Servicio de archivos planos: operaciones sobre archivos individuales. p.e., leer, escribir, agregar, etc. ● Aspectos importantes: ● Administración de atributos de archivos ● Protección contra accesos no permitidos a través de capacidades o listas de control de acceso. ● Responsable del modelo de acceso: por carga/descarga o por acceso remoto.
Carlos Figueira/USB9 Carga/Descarga vs Acceso Remoto Sistemas de Archivos Distribuidos: (a) el archivo puede quedarse en servidor o (b) copiarse al cliente
Carlos Figueira/USB10 Servicio de Directorios ● Ofrece operaciones sobre directorios: crear y borrar directorios, copiar y mover archivos entre directorios. ● Responsable de interpretar nombre de archivos. ● transparencia de nombres respecto a localización. ● dos niveles de nombres: simbólicos y binarios ● Administra organización de los archivos, p.e., sistema jerárquico de archivos. ● Maneja enlaces lógicos y físicos
Carlos Figueira/USB11 Aspectos de Diseño: Módulo cliente ● Integra y extiende operaciones de servicios de archivos y directorios a través de interfaz sencilla ● Se ejecuta a nivel de usuario ● Mantiene información sobre las ubicaciones de los servidores de archivos y de directorios. ● Maneja el caching (copias temporales) y buffering (copias de pedazos de archivos) en el cliente
Carlos Figueira/USB12 Semántica de archivos compartidos ● Se refiere a cómo secuencializar las lecturas/escrituras de archivos compartidos, para no leer valores obsoletos o perder actualizaciones. ● Semántica Unix (POSIX): ● Impone orden absoluto en todas las operaciones en función del tiempo; en lectura retorna valor más reciente del dato. ● Cada operación en un archivo es visible a todos los procesos en forma instantánea. ● El desempeño de este método es pobre.
Carlos Figueira/USB13 Semántica de archivos compartidos (POSIX) ● Se logra fácilmente si sólo existe un servidor de archivos y los clientes no hacen copias locales (caching) de sus archivos. ● Todas las operaciones “read” y “write” pasan directamente por el servidor de archivos, el cual las procesa en forma secuencial.
Carlos Figueira/USB14 Semántica de archivos compartidos (POSIX) ● Para mejorar el desempeño se puede permitir a los clientes tener copias locales de los archivos de uso frecuente en sus caches ● Problema: lecturas obsoletas. ● Para evitar problema de lecturas obsoletas ● Propagar inmediatamente las modificaciones al servidor ● Relajar la semántica de compartir
Carlos Figueira/USB15 Semántica de archivos compartidos ● Semántica de sesión: Ningún cambio es visible a otros procesos hasta que el archivo se cierre. ● No todas las lecturas retornan el valor más reciente del dato. ● Si dos procesos tienen copias locales del mismo archivo y lo modifican al mismo tiempo, el resultado final depende de quién lo cierre más rápido (¿o más tarde?)
Carlos Figueira/USB16 Semántica de archivos compartidos ● Archivos inmutables: ● No existen actualizaciones, es más fácil compartir y replicar. Las únicas operaciones permitidas son “create” y “read”. ● Se pueden actualizar los directorios y reemplazar los archivos en forma atómica. ● ¿Qué sucede si dos procesos intentan reemplazar el mismo archivo a la vez? ● ¿Qué sucede si un proceso reemplaza un archivo mientras otro lo está leyendo? ● Transacciones atómicas
Carlos Figueira/USB17 Aspectos de Implementación: Uso de archivos ● Satyanarayanan (1981) realizó algunas mediciones para estudiar los patrones de uso de los archivos: ● Mediciones estáticas: foto instantánea del sistema en ciertos momentos pueden revelar: ● Distribución de tamaños de archivos ● Distribución de tipos de archivos ● Cantidad de espacio que ocupan los archivos
Carlos Figueira/USB18 Uso de archivos ● Mediciones dinámicas: El mismo servidor de archivos registra en una bitácora (“log”) todas las operaciones que realiza, para ser analizadas posteriormente. Esto revela: ● Frecuencia de las operaciones ● Número de archivos abiertos ● Cantidad de archivos compartidos. ● Las mediciones fueron llevadas a cabo en una universidad. ¿Es la misma situación en un laboratorio de investigación, oficinas, sistemas bancarios? ● Las mediciones fueron realizadas en sistemas Unix tradicionales. ¿Se pueden extrapolar a sistemas distribuidos?
Carlos Figueira/USB19 Uso de archivos ● Resultados: ● La mayoría de los archivos está por debajo de 10K. Esto hace suponer que es mejor transferir entre cliente-servidor archivos completos en lugar de bloques de disco. ● La mayoría de los archivos tienen vida corta. Esto supone que es mejor crear el archivo en el cliente y mantenerlo ahí hasta su eliminación, disminuyendo tráfico entre cliente-servidor. ● Es poco usual compartir archivos. Es mejor usar semántica de sesión y hacer “caching” de los archivos en el cliente.
Carlos Figueira/USB20 Uso de archivos ● Resultados (cont.): ● Existen distintas clases de archivos con propiedades diferentes. Esto hace suponer que deben existir diferentes mecanismos para manejar diferentes clases de archivos: ● La lectura es más común que la escritura. Favorece la semántica de sesión. ● La lectura y escritura son secuenciales, no es común el acceso aleatorio.
Carlos Figueira/USB21 Aspectos de Implementación: Estructura del sistema ● ¿Cómo estructurar el servicio de archivos y directorios? ● Combinados en un mismo servidor: Las operaciones son directas. ● Separarlos: – Abrir un archivo implica ir al Servidor de directorios, localizar el archivo y luego ir al Servidor de Archivos para llevar a cabo la lectura o escritura. – Requiere mayor comunicación. Pero es más flexible y el software es más sencillo.
Carlos Figueira/USB22 Servidores de directorios y archivos separados Nombre simbólico Client e Servidor de directorio Nombre binario Servidor de archivos
Carlos Figueira/USB23 Servidores de directorios y archivos separados: búsqueda interactiva Cliente sabe a quien preguntar. Requiere más mensajes,
Carlos Figueira/USB24 Servidores de directorios y archivos separados: búsqueda recursiva Más eficiente y transparente. No se puede administrar con RPC normal.
Carlos Figueira/USB25 Servidores con y sin estado ● Sin estado ● Cuando cliente envía una solicitud, el servidor la lleva a cabo, envía respuesta y elimina de sus tablas internas toda la info. sobre solicitud ● No guarda info del cliente entre sus solicitudes ● Cada solicitud es auto-contenida. P.e.: nombre archivo y desplazamiento ● Con estado ● Servidores guardan info del estado de clientes entre solicitudes en tabla de descriptores de archivo
Carlos Figueira/USB26 Comparación
Carlos Figueira/USB27 Comparación
Carlos Figueira/USB28 Copias de trabajo (caching) ● Cache en disco del servidor ● Beneficios: Capacidad, una sola copia por archivo, accesibles a todos los clientes, no hay problemas de consistencia ● Problemas: Bajo desempeño ● Cache en memoria principal del servidor ● Beneficios: las anteriores pero mejor desempeño ● Problemas: determinar tamaño de unidad de cache (bloque o archivo)
Carlos Figueira/USB29 Copias de trabajo (caching) ● Cache en disco del cliente ● Disco suele ser más lento, favorable cuando son muchos datos ● Cache en memoria principal del cliente ● En espacio de usuario: librerías con llamadas al sistema. Cuando el proceso termina, los archivos modificados se actualizan en servidor. ● En el núcleo. La ventaja es que el cache sobrevive al proceso. La desventaja es que siempre hay que llamar al núcleo. ● En administrador de cache en espacio de usuario. Libera al núcleo del sistema, fácil de programar, más flexible.
Carlos Figueira/USB30 Consistencia de cache ● Escritura al cierre: semántica de sesión ● Algoritmo de escritura a través del cache (write- through cache) ● Administrador de caches debe verificar en servidor antes de dar copia de archivo a cliente ● Se puede hacer a través de comparación de fechas de última actualización, versión o suma de verificación ● Genera alto tráfico en la red
Carlos Figueira/USB31 Consistencia de cache: write- through f f P1P1 P2P2 1 P1 lee f 2 f P3P3 f 4 Servido r 3 P3 actualiza f Archivo f será obsoleto para P2
Carlos Figueira/USB32 Consistencia del cache ● Escrituras retardadas ● Enviar actualizaciones cada cierto tiempo ● Mejora desempeño, semántica puede ser ambigua ● Control centralizado ● Servidor de archivos da permisos de acceso a archivos dependiendo de si está abierto por otros procesos para lectura y escritura ● Soporta semántica Unix, pero no es robusto, es poco escalable
Carlos Figueira/USB33 Consistencia de cache ● Las copias de trabajo en servidor no tienen efecto en semántica del sistema de archivos ● Las copias de trabajo en cliente ofrecen mejor desempeño a costa de mayor complejidad y posible semántica difusa
Carlos Figueira/USB34 Réplicas ● Aumentan confiabilidad al disponer de respaldos independientes de cada archivo. ● Mejoran disponibilidad: permiten accesos aunque falle uno de los servidores. ● Mejoran desempeño: la carga se reparte entre servidores.
Carlos Figueira/USB35 Creación de réplicas explícita ● Cliente controla el proceso. ● Cuando se crea un archivo, lo hace en un servidor específico y adicionalmente puede crear copias en otros servidores. ● Se registran en el cliente las copias. Para abrir de nuevo un archivo, busca primera disponible. C S3S3 S2S2 S1S1
Carlos Figueira/USB36 Réplicas retrasadas ● El cliente crea el archivo en un servidor ● Luego en forma automática el servidor crea las copias sin conocimiento del cliente. ● El sistema es el encargado de la recuperación. ● Otra forma: comunicación en grupo C S3S3 S2S2 S1S1 C S3S3 S2S2 S1S1
Carlos Figueira/USB37 Protocolos de actualización: replicación con copia primaria ● Un servidor es primario, el resto son secundarios. ● La actualización llega al servidor primario, ● éste realiza los cambios en forma local y después envía órdenes a los servidores secundarios para que realicen las mismas modificaciones. ● Las lecturas se ejecutan desde cualquier servidor. ● ¿Qué sucede si falla el primario antes de la actualización de los secundarios? ● Si falla el primario, ¿quién hace las actualizaciones?