Sistema de Archivos

59
Sistemas de Archivos Cecilia Hernández 2007-1

description

Sistemas de Archivos

Transcript of Sistema de Archivos

Page 1: Sistema de Archivos

Sistemas de Archivos

Cecilia Hernández

2007-1

Page 2: Sistema de Archivos

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

Page 3: Sistema de Archivos

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

Page 4: Sistema de Archivos

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)

Page 5: Sistema de Archivos

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)

Page 6: Sistema de Archivos

Implementación directorios

Normalmente un directorio es sólo un archivo con metadatacon 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

Page 7: Sistema de Archivos

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

Page 8: Sistema de Archivos

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

Page 9: Sistema de Archivos

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

Page 10: Sistema de Archivos

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)

MBR T particiones Partición Partición Partición

Boot Superblock Espacio libre Inodes Dir. Root Archivos y block directorios

Page 11: Sistema de Archivos

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)

Page 12: Sistema de Archivos

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

Page 13: Sistema de Archivos

Para que usar particiones?

Dividir el disco para diversos propósitosTener diversos SOs cargados uno en

cada particiónSOs y sistemas de archivos pueden

ser usados en forma independiente• Respaldos o cualquier uso que quiera

darle el usuario

Page 14: Sistema de Archivos

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

Page 15: Sistema de Archivos

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)

Page 16: Sistema de Archivos

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

Page 17: Sistema de Archivos

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

Page 18: Sistema de Archivos

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

Page 19: Sistema de Archivos

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

Page 20: Sistema de Archivos

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

Page 21: Sistema de Archivos

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)

Page 22: Sistema de Archivos

Ejemplo FAT

Entrada directorio

test.txt ........... 88

20

25

35

88

95

103

35

103

25

20

0

EOF

Page 23: Sistema de Archivos

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

Page 24: Sistema de Archivos

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?

Page 25: Sistema de Archivos

Ejemplo con i-nodos y búsqueda en directorios

Page 26: Sistema de Archivos

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

Page 27: Sistema de Archivos

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

Page 28: Sistema de Archivos

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

Page 29: Sistema de Archivos

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

Page 30: Sistema de Archivos

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

/etc/passwd /home/juan /home/otro

root rw rw rw

juan r rw r

otro r

principales

objetos

ACL

capacidad

Page 31: Sistema de Archivos

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

Page 32: Sistema de Archivos

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

Page 33: Sistema de Archivos

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

Page 34: Sistema de Archivos

Consistencia de directorios (d-cache)

Verificar que directorios formen un árbolVerificar que el contador de links de

un archivo sea igual al número de directorios que apuntan a archivo

Page 35: Sistema de Archivos

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

Page 36: Sistema de Archivos

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

Page 37: Sistema de Archivos

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)

Page 38: Sistema de Archivos

Usuario 1 Usuario 2 Usuario 3

channel table channel table channel table

open file table

file offset file offset

memory-resident i-node table

Page 39: Sistema de Archivos

Algunos SAs populares

NTFS (Windows) Minix (No se usa tanto, pero disponible) UFS Ext2fs: Ext2 (linux) estandar, basado en inodos Ext3fs: Ext3 (linux). Journaling. Basado en otro VeritasFS (VxFS). Journaling o logging ReinserFS (linux) Journaling con logging. Completamente

nuevo. Incluido en linux estandar JFS (de IBM). Journaling o logging. Basado en otro FFS XFS (de SGI). Journaling o logging. Basado en otro http://www.tldp.org/HOWTO/Filesystems-HOWTO.html

Larga lista de sistemas de archivos

Page 40: Sistema de Archivos

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

Page 41: Sistema de Archivos

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

Page 42: Sistema de Archivos

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

Page 43: Sistema de Archivos

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

Page 44: Sistema de Archivos

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

Page 45: Sistema de Archivos

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)

Page 46: Sistema de Archivos

Sistemas de Archivos Journaling

Se hicieron populares en 2002 Varias opciones

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

Page 47: Sistema de Archivos

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 cronologicamente y liberar espacio de archivo journal

Page 48: Sistema de Archivos

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

Page 49: Sistema de Archivos

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

Page 50: Sistema de Archivos

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

Page 51: Sistema de Archivos

Detalles sobre buffer cache

Compartido por todos los procesos Utiliza algoritmo de reemplazamiento

Típicamente LRU Incluso una cache pequeña puede ser

efectiva (4MB) Hoy tenemos memorias grandes por lo que

podemos tener caches mas grandes Muchos sistemas de archivos leen por

adelantado a la cache, aumentando su efectividad

Page 52: Sistema de Archivos

Escrituras y lecturas en buffer cache

Usuarios y aplicaciones asumen que datos están en disco después de una escritura En realidad, no necesariamente, para eso se usa cache

Sistema de archivos puede quedar inconsistente en caso de falla si datos y metadatos no están consistentes en disco Mantener consistencia es cara

Algunos enfoques “Write through” lo que se escribe en buffer cache se

escribe en disco (escritura sincrónica) “Write behind” mantener cola de bloques no escritos,

periodicamente escribir en disco (no es confiable) NVRAM: escribir en una RAM energizada y mas tarde en

disco (NVRAM es cara)

Page 53: Sistema de Archivos

Lecturas vs escrituras

Lecturas se ven beneficiadas con buffer cache grandes

Escrituras son un problema Cualquier estrategia debe incluir escritura a

disco en algún momento Luego tráfico a disco esta dominado por

escrituras Escribir inodos y bloques de datos incluye

movimiento de cabeza en disco (caro en tiempo) y transferencia de datos.

Page 54: Sistema de Archivos

Log-Structured File System(LFS)

Diseñado por avances en Discos grandes y creciendo cada año Disponibilidad de grandes memorias

• Buffer cache puede ser mas grande• Puede manejar mas bloques de disco en Memoria

Idea de LFS es tratar el disco como un log cuyas operaciones se agregan en el tiempo

• Coleccionar escrituras en el buffer cache y escribir un conjunto de escrituras al disco

• Toda la información escrita en disco se realiza en el log • Recuperación en base a checkpoints (tratar el disco como bases

de datos)

Page 55: Sistema de Archivos

Idea LFS

Usar disco como un log Si disco es manejado como log, no

habría costo de búsqueda Nuevos datos y metadatos (inodos y

directorios) son acumulados en buffer cache, luego escritos todos al mismo tiempo en bloques grandes (segmentos de 0.5 M – 1 MB)

Mejora utilización de disco

Page 56: Sistema de Archivos

Comparación entre FFS y LFS

archivo1 archivo2

dir1 dir2

FFS

archivo1 archivo2

dir1 dir2

LFS

Log

inode

directorio

datos

Map inode

2 archivos de 1 bloque:dir1/archivo1dir2/archivo2

Page 57: Sistema de Archivos

Desafíos y soluciones

Ubicando datos en el log FFS pone los datos y metadatos en lugares conocidos en

el disco LFS escribe datos y metadatos al final del log

• LFS usa una map de inodos• Mapea archivo con ubicación de inodo para archivo en un

lugar bien definido Manejando espacio libre en el log

Disco es finito, luego log tambien es finito No se puede seguir agregando en log infinitamente

• Se necesita recuperar bloques borrados en parte antigua de log

• Log organizado en segmentos grandes (0.5 – 1 MB)• Cuando segmento se llena se escribe en disco• Con el tiempo segmentos se fragmentan (nuevos y viejos

bloques)• Segmentos con pocos datos válidos se recuperan• Datos previamente copiados a final de log

Page 58: Sistema de Archivos

LFS

Problemas Su implementación no es tan simple Ubicando datos en log no es tan rápida Manejando espacio libre no es tan sencillo, no

siempre se puede agregar info, cuando se elimina información deben recuperarse bloques escritos previamente en log

• Manejo de fragmentación de segmentos y limpieza es complicado

• Uso de demonio de limpieza encargado de verificar fragmentación, compactación y recuperación

Page 59: Sistema de Archivos

Comparación entre FFS, JFS y LFS

LFS y FFS Carga de trabajo por metadatos es cara

• Incluye escritura pequeñas (inodos ocupados y entradas en directorios)

Problema de limpieza de segmentos en LFS es un problema

LFS y JFS JFS es robusto como LFS, pero metadata debe ser

escrita en disco más frecuentemente No confundir JFS con LFS

• JFS tiene log de transacciones a disco para manejar caidas y recuperación más rápido manejando consistencia en disco asincrónicamente

• LFS el disco es visto como log