1 / 59

Sistemas de Archivos

Sistemas de Archivos. Cecilia Hernández 2007-1. Sistemas de Archivos. Concepto simple Implementa abstracción para accesar almacenamiento secundario Abstracción : archivos Proporciona organización lógica para accesar archivos en directorios Normalmente directorio implementado como árboles

zanna
Download Presentation

Sistemas de Archivos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemas de Archivos Cecilia Hernández 2007-1

  2. Sistemas de Archivos • Concepto simple • Implementa abstracción para accesar almacenamiento secundario • Abstracción : archivos • Proporciona organización lógica para accesar archivos en directorios • Normalmente directorio implementado como árboles • Proporciona a usuarios mecanismos de protección y compartición de archivos • Debe proporcionar semántica de consistencia para permitir acceso compartido

  3. Archivos • Archivo es una colección de datos con algunas propiedades • Contenido, tamaño, dueño, última fecha de modificación, protección, etc • Archivos pueden tener tipos entendibles • Sistema de archivos: archivo simple, directorio, enlace • Otras partes del SO, aplicaciones o bibliotecas • Ejecutable, biblioteca, código fuente, etc • Típicamente, tipos pueden incluidos en nombre • En Windows, tipo incluido en nombre • En unix, tipo especificado en los dos primeros bytes del archivo (magic numbers) o caracteres iniciales

  4. Operaciones sobre archivos • create(name) • open(name, mode) • read(fd, buf, len) • write(fd, buf, len) • sync(fd) • seek(fd,pos) • close(fd) • unlink(name) • rename(old, new)

  5. Directorios • Organizar archivos en sistema • Útil para usuarios • Útil para sistema de archivos y usuarios para buscar y accesar archivos • Mayoría de sistemas de archivos soportan múltiples niveles de directorios • Con jerarquía de nombres • Mayoria soport directorio actual y anterior • Rutas absolutas y relativas • $cd /home/alumnos/pedro (absoluto) • $cd tareas (relativo a dir actual)

  6. Implementación directorios • Normalmente un directorio es sólo un archivo con metadata • con lista de archivos y atributos contenidos en actual directorio • Lista (nombre archivo, atributos archivo) • Atributos pueden ser • Tamaño, protección, dueño, tiempo de creación, tiempo de última modificación, ubicación en disco, etc

  7. Implementación de Sistemas de Archivos • Componentes de SA • Administración de disco • Como organizar colección de bloques de discos en archivos • Nombres • Usuarios identifican sus archivos mediante nombres, abstrayéndose de como se almacenan internamente (#cilindro, pista y sectores). Uso de nombres para archivos y directorios • Protección • Como se protege la información de archivos en el sistema entre distintos usuarios y sistema • Confiabilidad/durabilidad/Rendimiento • Cuando sistema se cae, se pierde información en Memoria (caches), pero se desea que información de archivos no se pierda

  8. Implementación de Sistemas de Archivo • Estructuras en Disco y Memoria para implementar SA • En disco • Bloque Control de Buteo (Boot Control Block) • Información para butear SO de partición (si existe en partición). Unix : Boot block, NTFS : Partition Block Sector • Bloque de Control de Partición (Partition Control Block) • Detalles de partición: Tamaño bloque, contador y punteros de bloques libres, contador y punteros de FCBs. Unix Superblock, NTFS : Tabla de Archivo Maestra (Master File Table). En Unix/linux llamado superblock • Estructura de Directorios a usar • FCB (File Control Block) • Contiene información de archivo: dueño, tamaño, permisos, punteros a bloques de disco, etc • Unix Inodo, NTFS, info guardada en Tabla de Archivo Maestra

  9. Implementación de Sistemas de Archivos cont. • Estructuras en Memoria • Tabla de Particiones • Tabla con información acerca de cada partición • Estructura de directorios • Tabla de directorios accesados recientemente con su información • Tabla de Archivos Abiertos a nivel de Sistema (TAAS) • Contiene copia de los FCBs de cada archivo, y otra informacion como número de Procesos que tiene archivo abierto • Tabla de Archivos Abiertos a nivel de Proceso (TAAP) • Contiene puntero a entrada a tabla de archivos abiertos de sistema

  10. MBR T particiones Partición Partición Partición Boot Superblock Espacio libre Inodes Dir. Root Archivos y block directorios Particiones de disco Caso Unix/linux • Cada partición • boot block, puede subir sistema cargando programa residente aqui • Superblock. Especifica los límites de las áreas siguientes, contiene punteros a listas de inodos libres y bloques de archivos libres • Area de inodos. Contiene descriptores (inodos) para cada archivo en el disco. Todos los inodes son del mismo tamaño • Dir root. Inodo y directorio root • Archivos y directorios. Bloques de se usan para • Una partición puede usarse para un sistema de archivos o como area de swapping ( en este caso es sólo bloques para respaldo)

  11. Proceso de buteoCaso Unix/linux • CPU ejecuta código residente en ROM BIOS (Read Only Memory Basic Input Output System) • Código verifica y prepara HW de sistema • Carga programa (master boot program o boot loader) ubicado en sector 0 (Master Boot Record) de disco • En linux puede ser lilo o grub, los que permiten elegir una partición a subir • Contiene programa ejecuta SO en partición • Estos boot loaders están en MBR o en primer sector de parcición activa • Con programas Lilo o Grub es posible definir varias particiones con diferentes SOs • Aunque tambien sirven para usar el mismo sistema de archivos pero identificar diferentes SO (asociados a diferentes linux kernels)

  12. Sistema de Archivos Unix (UFS) • Sistema de Archivos original en Unix (1970) • Disco dividido en particiones • Una partición: grupo de cilindros adyacentes • Un sistema de archivos puede residir en una partición • BIOS define sector de buteo (boot sector) para estar en cabeza 0, cilindro 0, sector 1 • Master Boot Record (MBR) usado para butear computador • Sabe de boot loader y tabla de particiones • Tabla de partición • Define direcciones de inicio y fin de cada partición • Una partición es marcada como activa • Cuando sistema sube • BIOS ejecuta MBR • MBR localiza partición activa y ejecuta bloque de buteo

  13. Para que usar particiones? • Dividir el disco para diversos propósitos • Tener diversos SOs cargados uno en cada partición • SOs y sistemas de archivos pueden ser usados en forma independiente • Respaldos o cualquier uso que quiera darle el usuario

  14. Crear, Abrir y Usar un Archivo • Crear • SO busca en bloque de control de partición por un puntero de un FCB no usado • SO suma puntero de FCB en la estructura del directorio. • Abrir • Buscar si archivo esta abierto en TAAS, si no esta Buscar en directorios por nombre de archivo • Copiar información de FCB a la TAAS • Sumar una entrada para el archivo en la TAAP, que contiene puntero a TAAS • SA retorna descriptor de archivo o handle a proceso que lo abre • Usar • Escribir, buscar el bloque de control de partición por punteros a bloques de disco vacíos • Leer. buscar en FCB bloques a leer

  15. Usando Disco para Almacenar Archivos • SA almacena archivos en bloques • Define tamaño de bloque, en general entre 1KB y 4KB • Existe un “Bloque Maestro” que define la ubicación del directorio root • Siempre una ubicación bien conocida • En general replicada para proporcionar mayor disponibilidad • Posee una lista con bloques libres y bloques ocupados • En general, bitmap, define un bit por bloque de disco • 1 si esta ocupado, 0 si esta libre • Almacenada en disco y en memoria (para aumentar rendimiento) • SO usa Caching • SO mantiene cache con bloques de disco usados mas recientemente (disminuir latencia de acceso a disco)

  16. Registro de Bloques Asignado a Archivos • Estructura de datos común • Encabezado de archivo: cada archivo posee uno • Que bloques de disco estan siendo ocupados por archivo • Distintas implementaciones: Como se sabe que bloques pertenecen a que archivos • Asignación contigua • Archivos enlazados • Archivos indexados • Archivos indexados en múltiples niveles

  17. Asignación Contigua • Usuario dice por adelantado tamaño de archivo • SO busca en bitmap (usando criterio) bloques de disco que satisfacen requerimiento de usuario • El encabezado de archivo posee • Primer sector de bloque en disco • Tamaño de archivo en términos de número de sectores • Ventajas/Desventajas • + Acceso secuencial rápido • + Acceso aleatorio fácil • - Fragmentación externa • - Difícil cuando archivo crece más de lo definido originalmente

  18. Archivos Enlazados • Cada bloque de disco incluye puntero al siguiente bloque de disco • Encabezado de archivo posee dirección del primer bloque de disco • Ventajas/Desventajas • + Archivos pueden crecer dinámicamente • - Acceso secuencial no es tan bueno, pero mejor que aleatorio • Requiere tiempo de búsqueda de próximo bloque • - Acceso aleatorio muy lento • - No es confiable, que pasa si se pierde o se estropea un bloque? • MS-DOS FAT (File Allocation Table) usa esta filosofía, pero implementación mediante una tabla • Mejor rendimiento, sobretodo si tabla esta en memria

  19. Archivos Indexados • Usuario especifica tamaño máximo de archivo • SA define un arreglo de punteros a bloques acorde al tamaño máximo • Encabezado de archivo posee arreglo de punteros de bloques (index block: contiene punteros a los bloques de disco del archivo) • Ventajas/Desventajas • + Tamaño de archivo puede crecer fácilmente hasta máximo • + Acceso aleatorio es rápido • - Costoso si archivo crece sobre máximo • - Acceso secuencial lento, ya que bloques pueden estar distantes unos de otros en disco

  20. Archivos Indexados con Múltiples Niveles • Objetivo • Rápido para archivos pequenos y permitir archivos grandes • Encabezado de archivo posee 13 punteros • Tabla de punteros de tamaño fijo, aunque no son todos equivalentes • Primeros 10 (ahora 12) punteros direcccionan bloques de datos • Puntero décimo primero (11) (ahora 13): Puntero indirecto • Apunta a bloque de punteros de bloques de datos • Puntero décimo segundo (12) (ahora 14): Puntero doblemente indirecto • Apunta a bloque de punteros, los que a su vez contienen punteros a bloques de datos • Puntero décimo tercero (13) (ahora 15): Puntero triplemente indirecto • Apunta a bloque de punteros, los que a su vez contienen punteros a bloques de punteros, los que contienen punteros a bloques de datos

  21. Archivos Indexados con Múltiples Niveles • Unix implementa este mecanismo • Ventajas/Desventajas • + Simple • + Archivos pueden crecer fácilmente (tamaño max relativamente grande) • + Archivos pequeños rápidos • - Archivos grandes penalizados en tiempo de búsqueda, por el uso de indirección de múltiples niveles • - Mucho tiempo usado en búsqueda de bloques (cuando archivos son grandes)

  22. test.txt ........... 88 20 25 35 88 95 103 Ejemplo FAT • Entrada directorio 35 103 25 20 0 EOF

  23. Ejemplo Inodos Unix (también en FFS) • Inodo estructura de datos que contiene dueño archivo, modo, tamaño, protección, contadores de enlaces y tabla de asignación de bloques de disco

  24. Ejemplo Inodos • En el SA Unix, con archivos indexados con multiples niveles, con encabezado de archivo de 13 entradas, 10 entradas para direccionar bloques directamente, 1 entrada indirecta, 1 entrada doblemente indirecta y 1 triplemente indirecta. Si el tamaño de bloque es de 1KB. Calcule: • Máximo tamaño de archivo posible • Número de accesos a disco son necesarios para alcanzar bloque 23, cuales son?

  25. Ejemplo con i-nodos y búsqueda en directorios

  26. Ejemplo Traducción Rutas con Inodos • Archivos directorios: archivos en que cada entrada contiene archivo o directorio y además Inodo donde esta ubicado • Archivo /home/juan/tarea.txt. • Archivo directorio “/” contiene lista archivos/directorio con sus Inodos • Directorio “home” tiene Inodo 100 • Inodo 100 contiene puntero a bloques donde esta “home”: bloque 200 • Bloque 200 : archivo directorio “home” posee inodo para “juan”: inodo 110 • Inodo 110 contiene puntero a bloques donde esta “juan”: bloque 300 • Bloque 300 : archivo diretorio “juan” posee inodo para “tarea.txt”: inodo 120 • Inodo 120 contiene punteros a bloques donde esta “tarea.txt”: bloques 400, 401 y 402

  27. Ubicación de inodos • Unix original tenía dos problemas de desempeño importantes • Bloques de datos en cualquier parte del disco • Cuando archivo es nuevo se buscan bloques de archivos • Cuando SA envejece y se llena necesita ubicar nuevos archivos mientras otros han sido borrados • Archivos de diferentes tamaños • Bloques para archivos nuevos empiezan a estar dispersos en el disco • Inodos están ubicados lejos de los bloques de disco • Todos los inodos al inicio del disco y luego los bloques de disco • Búsqueda de archivos en directorios requiere referencias a inodos y bloques de disco, como estan lejos unos de otros más tiempo es requerido para su acceso

  28. Mejorando desempeño • Uso de Buffer cache • Explotar localidad usando memoria como cache para archivos • Cache es compartida por todos los procesos • Muchos sistemas de archivos leen por adelantado (antes que se necesite) a buffer cache • Caching escrituras • Necesario manejar consistencia en algunos casos se requiere write-through • Algunos problemas con el buffer cache • Competencia de páginas con la administración de memoria • También requiere algoritmos de reemplazo • Usualmente LRU

  29. Protección de archivos • Protección usada para… • Controlar quien tiene acceso a qué archivo • Controlar el tipo de acceso que un usuario puede realizar sobre archivo • En forma general • Generalizar archivos a objetos • Generalizar usuarios a principales • Generalizar lectura/escritura a acciones • Un sistema de protección dice si una determinada acción realizada por un determinado principal en un deteminado objeto debería ser permitida • Usuario dueño puede leer/escribir sobre archivo, pero no otros • Usuario puede leer algún archivo de sistema, pero no escribirlo

  30. Modela para representar protección • Dos maneras de verlo • Listas de control de acceso (ACLs) • Para cada objeto, guardar una lista de los principales y las acciones permitidas para principales • Capacidades • Para cada principal, guardar una lista de los objetos y acciones permitidas para principales • Representación en siguiente matriz objetos principales capacidad ACL

  31. ACLs y Capacidades • Capacidades son más fácil de transferir • Como llaves (caso casa) • Facilitan compartición • ACLs son más fáciles de manejar • Basado en objetos, fácil de entregar y quitar • Quitar capacidades es más difícil, hay que mantener historia de principales que han tenido capacidad • Difícil de seguir, pues principales se pueden pasar capacidades • ACLs se hacen grandes cuando objetos son muy compartidos • Esquema puede simplificarse agrupando • Poner usuarios en grupos, poner grupos en ACLs • Cambiando acciones sobre grupos afecta al grupo completo

  32. Consistencia del SA • Los i-nodos y los bloques de discos residen en buffer cache (memoria usada para cache de archivos) • El comando sync fuerza la escritura en disco de la información de disco residente en memoria • Sistema hace un sync cada unos pocos segundos • Una caída del sistema o corte de energía entre syncs puede dejar el disco inconsistente • Se podría mejorar consistencia usando menos caching pero esto perjudicaría el desempeño

  33. Manejando consistencia de archivos(i-cache) • Verificar que cada bloque este asociado sólo a un archivo • Un vector de bits, un bit por cada bloque en disco • Seguir la lista de bloques libres e inodos libres • Cuando un bloque es encontrado, ver el bit • Si bit == 0, ponerlo en 1 • Si bit == 1, • Si bloque esta asociado a archivo y en lista de bloques libres • Eliminarlo de la lista de libres ( no garantia de lo que suceda) • Si bloque está asociado a dos archivos… error

  34. Consistencia de directorios (d-cache) • Verificar que directorios formen un árbol • Verificar que el contador de links de un archivo sea igual al número de directorios que apuntan a archivo

  35. Compartiendo archivos 1Enlaces duros • Un archivo en Unix puede tener múltiples nombres • Nombre en entrada en el directorio es llamado enlace duro. Múltiples entrada en directorio apuntan a mismo inodo • Cada inodo tiene un campo “count” que indica el número de enlaces duros • Llamada a sistema relacionadas “link” y “unlink” • link(nombre existente, nuevo nombre) crea nueva entrada en directorio con nombre dado e incrementa el count de inodo • Unlink(nombre), destruye entrada en directorio, decrementa count, si count == 0 libera bloques de disco e inodo ocupado por archivo

  36. Compartiendo archivosEnlace simbólico • Enlace simbólico entrada en directorio que contiene pathname a otro archivo en el SA • Llamada a sistema • Symlink(nombre existente, nuevo nombre) • Asigna nuevo inodo a nuevo archivo, nuevo archivo contienen path de archivo existente, • Si antiguo archivo es eliminado, accesar nuevo archivo no será posible

  37. Compartición de archivos 2 • Cada usuario tiene una tabla de canal o tabla de archivos abiertos por usuario • Cada entrada en la tabla de archivos abiertos es un puntero a una entrada a la tabla de archivos abiertos del sistema • Cada entrada en la tabla de archivos abiertos contiene un file offset y un puntero a una entrada en la tabla de inodos residentes en memoria • Si un proceso abre un archivo ya abierto se crea una nueva entrada en la tabla de archivos abiertos con un nuevo file offset apuntando a la misma entrada en la tabla de inodos residentes en memoria • Si un proceso hace un fork, el hijo obtiene una copia de la channel table ( y luego el mismo file offset)

  38. file offset file offset Usuario 1 Usuario 2 Usuario 3 channel table channel table channel table open file table memory-resident i-node table

  39. Algunos SAs populares • NTFS (Windows) • Minix (No se usa tanto, pero disponible) • UFS • Ext2fs: Ext2 (linux) estandar, basado en inodos, incluye ideas de FFS • Ext3fs: Ext3 (linux). Journaling. Basado en ext2fs • VeritasFS (VxFS) HP-UN. Journaling • ReinserFS (linux) Journaling con logging. Completamente nuevo. Incluido en linux estandar • JFS (de IBM). Journaling. Basado en otro • FFS • XFS (de SGI). Journaling. Basado en otro • http://www.tldp.org/HOWTO/Filesystems-HOWTO.html • Larga lista de sistemas de archivos

  40. UFS (Sistema de Archivos Unix original) • Layout en disco de UFS • Metadata al principio en disco • Bloques de disco son asignados aleatoriamente a archivos sistema usado por largo tiempo • Cuando sistema nuevo, bloques asignados secuencialmente a archivos • Inodos lejos de bloques

  41. Ubicación de inodos y bloques de disco por archivo en UFS • Inodo contiene metadata de archivo incluyendo direcciones a bloques de disco • Tiempo de búsqueda malo, cabeza debe moverse entre cilindros distantes

  42. FFS (Fast File System) • Proyecto en Berkeley BSD FFS (1970) • Idea es mejorar productividad y disminuir tiempo de respuestas de Unix Original (UFS) • Idea se basa en conocimiento de layout en disco

  43. Layout en disco en FFS • Grupos de cilindros • Tamaños de bloque de disco incrementado de 512 bytes a 4KB • Mejor soporte para archivos grandes • Puede producir fragmentación interna • Uso de fragmentos para solucionarla

  44. FFS • FFS (File Fast System) usa idea de grupos de cilindros • Disco particionado en grupos de cilindros • Bloques de datos de un mismo archivo ubicado en el mismo grupo de cilindros • Inodo de archivo ubicado en el mismo grupo de cilindros • Introduce un requerimiento de espacio libre • Para poder hacer lo explicado arriba se necesita tener espacio libre disperso en todo el disco • En FFS se reserva el 10 % del disco para estar disponible

  45. Sistemas de Archivos Journaling • UFS y FFS usan memoria como cache para disco (buffer cache) • UFS y FFS tienen problemas cuando sistema se cae • Ejemplo caída de sistema en la creación de archivo • 1 Asignación de inodo • Apuntar en entrada de directorio inodo de archivo • Problema de consistencia en estructuras de datos en memoria y disco • UFS y FFS proporcionan utilitarios para reconstruir consistencia (fsck), pero muy lento • Debe verificar cada bloque • No escalable (más lento a medida que aumenta disco)

  46. Sistemas de Archivos Journaling • Se hicieron populares en 2002 • Varias opciones • VeritasFS, Ext3, ReinserFS, XFS, ntfs • Idea básica • Actualizar metadatos y datos transaccionalmente • Los dos o ninguno • En caso de falla, puede perderse un proco de trabajo, pero disco queda consistente • En forma precisa, consistencia mediante uso de log o journal transaccional, en lugar de barrer cada bloque de disco para verificar estado

  47. Almacenamiento de datos • Datos • En buffer cache • En disco • Idea básica de solución • Siempre dejar copia de datos en estado consistente • Actualizar datos persistentemente escribiendo secuencialmente (tiempo) en archivo journal • En tiempo libre de sistema, hacer actualizaciones escritas en journal cronológicamente y liberar espacio de archivo journal

  48. Redo log • Log • Archivo que se escribe sólo al final conteniendo registros de logs • Start t • Transacción t ha empezado • T, x, v • Transacción T ha actualizado bloque x y su nuevo valor en v • Puede loggear diferencia de bloques en lugar de bloques • Commit t • Transacción T ha committed – actualización sobrevive caida • Acción de Commit incluye escribir registro redo

  49. Si ocurre caida de sistema • Recupera Log • Redo transacciones committed • Barre el log en orden y reejecuta actualizaciones de las transacciones committed • Escrituras son idempotent (sólo ocurre una vez independiente del número de veces que se ejecute) • Transacciones no committed • Ignorarlas • Como si caida ocurriera antes de commit

  50. Desempeño • Log es una escritura continua • Escritura eficiente • En lugar de varias escrituras asincrónicas • Costosas en términos de desempeño • Journaling • Bueno, eficiente • Manejo de consistencia y recuperación eficiente

More Related