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 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/USB 2 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/USB 3 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/USB 4 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/USB 5 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/USB 6 Arquitectura de NFS Carlos Figueira/USB 7 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/USB 8 Carga/Descarga vs Acceso Remoto Sistemas de Archivos Distribuidos: (a) el archivo puede quedarse en servidor o (b) copiarse al cliente Carlos Figueira/USB 9 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/USB 10 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/USB 11 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/USB 12 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/USB 13 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/USB 14 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/USB 15 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/USB 16 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/USB 17 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/USB 18 Uso de archivos ● Resultados: ● ● ● La mayoría de los archivos está por debajo de 10K. Esto hace suponer que es mejor transferir entre clienteservidor 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/USB 19 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/USB 20 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/USB 21 Servidores de directorios y archivos separados Servidor de directorio Nombre simbólico Cliente Nombre binario Servidor de archivos Carlos Figueira/USB 22 Servidores de directorios y archivos separados: búsqueda interactiva Cliente sabe a quien preguntar. Requiere más mensajes, Carlos Figueira/USB 23 Servidores de directorios y archivos separados: búsqueda recursiva Más eficiente y transparente. No se puede administrar con RPC normal. Carlos Figueira/USB 24 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/USB 25 Comparación Ventajas servidores SIN estado Tolerante a fallas Desventajas servidores CON estado Recuperación a cargo del cliente Ahorro espacio en servidor Se pueden desbordar tablas (no se pueden abrir archivos) No hay límite para num. de Si cliente falla después de archivos abiertos abrir archivo, debe eliminar info de archivos inactivos No hay problema si falla cliente Carlos Figueira/USB 26 Comparación Ventajas servidores CON estado Mensajes más cortos Desventajas servidores SIN estado Mensajes más largos Mejor desempeño (tablas en Desempeño pobre memoria o en cache) Es posible realizar lecturas adelantadas No son posibles lecturas adelantadas Fácil reconocer operaciones Difícil reconocer idempotentes operaciones idempotentes Puede manejar bloqueo de Requiere servidor de archivos bloqueos especial Carlos Figueira/USB 27 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/USB 28 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/USB 29 Consistencia de cache ● ● Escritura al cierre: semántica de sesión Algoritmo de escritura a través del cache (writethrough 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/USB 30 Consistencia de cache: writethrough P2 P1 2 P3 4 f f 1 P1 lee f 3 P3 actualiza f Archivo f será obsoleto para P2 f f Servidor Carlos Figueira/USB 31 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/USB 32 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/USB 33 Réplicas ● ● ● Aumentan confiabilidad al disponer respaldos independientes de cada archivo. de Mejoran disponibilidad: permiten accesos aunque falle uno de los servidores. Mejoran desempeño: la carga se reparte entre servidores. Carlos Figueira/USB 34 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. S1 C Carlos Figueira/USB S2 S3 35 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. S1 C S3 El sistema es el encargado de la recuperación. Otra forma: comunicación en grupo S2 S1 C S2 S3 Carlos Figueira/USB 36 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? Carlos Figueira/USB 37