Está en la página 1de 74

Tema 5 Sistemas de Ficheros

Sistemas Operativos

Tema 5 Sistemas de Ficheros p.

ndice
1. Introduccin (Tanenbaum [C6.Introduccin]) 2. Ficheros (Tanenbaum [C6.1]) 3. Directorios (Tanenbaum [C6.2]) 4. Implementacin del sistema de cheros (Tanenbaum [C6.3]) 5. Sistemas de cheros en Linux (Tanenbaum [C10.6]) 6. Sistemas de cheros en Windows 2000 (Tanenbaum [C11.7])

Tema 5 Sistemas de Ficheros p.

1. Introduccin
El almacenamiento secundario es necesario para: Almacenar gran cantidad de datos Almacenar datos persistentes (vlidos entre sesiones) Compartir datos (si la proteccin de la memoria no lo permite) Los dispositivos de almacenamiento secundario pueden ser muy distintos El S.O. debe proporcionar una interfaz sencilla para acceder a dichos dispositivos Solucin: sistema de cheros, basado en cheros y directorios Primero veremos el sistema de cheros desde el del usuario y, despus, desde el del S.O. (implemen.)
Tema 5 Sistemas de Ficheros p.

ndice
2. Ficheros (Tanenbaum [C6.1]) 2.1. Concepto de chero 2.2. Estructura de un chero. Tipos de cheros 2.3. Acceso a un chero 2.4. Atributos de un chero 2.5. Operaciones con cheros 2.6. Ficheros proyectados en memoria 2.7. Semnticas de comparticin Carretero[C8.2.5]

Tema 5 Sistemas de Ficheros p.

2. Ficheros: concepto y estructura


Un chero es la unidad lgica de almacenamiento y se identica mediante un nombre (estructurado o no) Son posibles varias estructuras: secuencia de bytes (la ms genrica) secuencia de registros rbol
1 Byte 1 Registro Buho Gallina Pony

Cabra Cerdo Cordero

Gato Len Perro

Rata Vaca Zorro

Gusano Hormiga Ibis (a) (b) (c)


Tema 5 Sistemas de Ficheros p.

2. Tipos de cheros y accesos


Tipos de cheros Ficheros normales o regulares (ASCII o binarios) Directorios Ficheros especiales de caracteres Ficheros especiales de bloques
16 Bits Nmero mgico Tamao del cdigo Tamao del BSS

Cabecera

Nombre del mdulo

Cabecera

Tamao de los datos

Fecha

Tamao tabla smbolos

Punto de entrada

Mdulo objeto

Propietario Proteccin Tamao

Acceso: Secuencial Aleatorio

Banderas Cdigo

Cabecera Mdulo objeto Cabecera

Datos Bits de reasignacin Tabla de smbolos (a)

Mdulo objeto

(b)

(a) Fichero ejecutable (b) Biblioteca


Tema 5 Sistemas de Ficheros p.

2.4 Atributos de un chero


Signicado Proteccin Quin debe tener acceso y de qu forma Contrasea Contrasea necesaria para tener acceso al chero Creador Identicador de la persona que cre el chero Propietario Propietario actual Bandera slo lectura 0 Lectura/escritura, 1 para lectura exclusivamente Bandera de ocultacin 0 normal, 1 para no exhibirse en listas Bandera de sistema 0 chero normal, 1 chero del sistema Bandera de biblioteca 0 ya se ha respaldado, 1 necesita respaldo Bandera ASCII/binario 0 chero en ASCII, 1 chero en binario Bandera de acceso aleatorio 0 slo acceso secuencial, 1 acceso aleatorio Bandera temporal 0 normal, 1 eliminar al terminar el proceso Bandera de cerradura 0 no bloqueado, = 0 bloqueado Longitud de registro Nmero de bytes en un registro Posicin de la clave Ajuste de la clave dentro de cada registro Longitud de la clave Nmero de bytes en el campo clave Tiempo de creacin Fecha y hora de creacin del chero Tiempo del ltimo acceso Fecha y hora del ltimo acceso al chero Tiempo de la ltima modicacin Fecha y hora de la ltima modicacin del chero Tamao actual Nmero de bytes en el chero Tamao mximo Tamao mximo al que puede crecer el chero
Tema 5 Sistemas de Ficheros p.

Campo

2.5 Operaciones con cheros


Create: crea un chero vaco Delete: elimina un chero Open: abre un chero para operar con l Close: cierra un chero abierto Read/Write: lee/escribe datos de/en un chero Append: escribe datos al nal del chero Seek: especica el punto de lectura/escritura de datos en un chero de acceso aleatorio Get/Set attributes: obtiene/establece los atributos asociados a un chero Rename: cambia el nombre de un chero en un directorio Truncate: elimina el contenido de un chero a partir de una posicin dada
Tema 5 Sistemas de Ficheros p.

2.6 Ficheros proyectados en memoria


Es otra forma de acceder a un chero (sin operaciones read, write, etc.) Consiste en hacer corresponder una zona del espacio de direcciones de un proceso con un chero Dos nuevas funciones: mmap (crea la correspondencia) y munmap (la elimina) Se accede al chero como se accede a la mem. principal
,5,/020247,
O/4

%,-,/05E3,8
 5E 7.;4

,948.43;,473., ,94883;,473.,

7.;4
46:0 46:0

# #

92, 5E 7.;4

 46:0  ,7. 

46:0 ,7.

  7.;4!740.9,/4

46:0 46:0

!,

Tema 5 Sistemas de Ficheros p.

2.6 Ficheros proyectados en memoria (II)


La tcnica se adapta bien a la memoria virtual: En paginacin: las pginas de una zona de memoria se corresponden con el chero Fallo de pgina leer pgina del chero Reemplazo de pgina escribir modicaciones en chero En segmentacin: un segmento se corresponde con el chero Problemas de la proyeccin de cheros en memoria: Se conoce el tamao exacto de un chero proyectado en memoria o su tamao es mltiplo del tamao de pgina? Qu pasa si el chero a proyectar es mayor que el tamao mximo de segmento o mayor que el tamao mximo de la memoria virtual? Qu pasa si un proceso proyecta un chero y otro proceso accede a l mediante operaciones ordinarias (read, write,. . . )?

Tema 5 Sistemas de Ficheros p. 1

2.7 Semnticas de comparticin


Puede ocurrir que dos o ms procesos usen el mismo chero y uno de ellos escriba en l. Cundo vern los cambios el resto de procesos?: Semntica Unix: inmediatamente Problema: si varios procesos escriben sobre la misma porcin del chero, el resultado nal se desconoce Solucin: Unix ofrece mecanismos para que un proceso pueda bloquear todo el chero o parte de l, y as poder hacer cambios de forma exclusiva

Tema 5 Sistemas de Ficheros p. 1

2.7 Semnticas de comparticin (II)


Semntica de sesin: cuando el proceso que modica el chero lo cierre o explcitamente indique que se debe actualizar Las modicaciones slo son visibles para sesiones posteriores del chero (siendo una sesin el conjunto de operaciones que se realizan entre una operacin open y la correspondiente operacin close) El proceso que modica el chero tiene su propia copia del chero, llamada versin Problema: cuando varios procesos modican un mismo chero, cada uno tiene su propia versin (posiblemente obsoleta) del chero. Al nal, qu copia es la vlida? Solucin: mecanismos de sincronizacin entre procesos proporcionados por el S.O. (por ejemplo, para impedir que 2 o ms procesos modiquen a la vez el chero o para mezclar el contenido de los mismos)

Tema 5 Sistemas de Ficheros p. 1

2.7 Semnticas de comparticin (III)


Semntica de cheros inmutables: nunca Para escribir algo en un chero es necesario crear uno nuevo y escribir en l los datos El nuevo chero tendr un nuevo nombre (salvo que se borre el anterior) Se puede utilizar una tcnica de copia en escritura para optimizar la implementacin

Tema 5 Sistemas de Ficheros p. 1

ndice
3. Directorios (Tanenbaum [C6.2]) 3.1. Sistemas jerrquicos de directorios 3.2. Nombre de la ruta de acceso 3.3. Operaciones con directorios

Tema 5 Sistemas de Ficheros p. 1

3.1 Directorios
Suelen ser cheros que almacenan informacin sobre otros cheros (nombre, atributos, etc.) Son posibles distintas organizaciones: Directorio nico Sistema jerrquico de directorios

Un directorio por usuario

Tema 5 Sistemas de Ficheros p. 1

3.2 Nombre de la ruta de acceso


Los SS.OO. con un sistema jerrquico de directorios suelen tener dos formas bsicas para indicar la ruta de acceso o nombre de un chero: Ruta absoluta: Especica el camino desde el directorio raz hasta el chero El primer carcter de la ruta es el separador (/ en Unix, \ en Windows). Ejemplo: /usr/bin/mozilla Ruta relativa: Asociada al concepto de directorio actual o de trabajo No empieza por el carcter separador y dependen del directorio actual. Ejemplo: bin/mozilla si el directorio actual es /usr Dos directorios especiales: Directorio .: directorio actual Directorio ..: directorio padre

Tema 5 Sistemas de Ficheros p. 1

3.3 Operaciones con directorios


Operaciones posibles: Create: crea un directorio vaco Delete: borra un directorio vaco Opendir: abre un directorio para operar con l Closedir: cierra un directorio abierto Readdir: lee una entrada del directorio Rename: cambia de nombre a un directorio Link: crea un enlace fsico para un chero existente Unlink: elimina un enlace fsico (o el chero asociado si se elimina el ltimo enlace) Preguntas: por qu se usa readdir, y no read, si el directorio es un chero?, por qu no existe writedir?

Tema 5 Sistemas de Ficheros p. 1

ndice
4. Implementacin del sistema de cheros (Tanenbaum [C6.3]) 4.1. Implementacin de cheros 4.2. Implementacin de directorios 4.3. Ficheros compartidos 4.4. Administracin del espacio en disco 4.5. Conabilidad del sistema de cheros 4.6. Cach de disco. Jerarqua de almacenamiento 4.7. Sistemas de cheros modernos

Tema 5 Sistemas de Ficheros p. 1

4. Implementacin del sistema de cheros


En lo que sigue vamos a representar al dispositivo de almacenamiento como un array lineal de bloques: Supondremos bloques con un tamao potencia de 2 (512, 1024, 4096, etc. bytes) Los bloques se numerarn desde 0 hasta N 1, siendo N el tamao del disp. de almacenamiento, en bloques Primero veremos la implementacin de los elementos individuales (cheros, directorios, etc.) Al nal del tema veremos cmo se combina todo para construir un sistema de cheros completo (en Linux y en Windows 2000)

Tema 5 Sistemas de Ficheros p. 1

4.1 Implementacin de cheros


Vamos a ver distintas tcnicas para llevar un registro de qu bloques pertenecen a un chero Asignacin contigua
Todos los bloques de un mismo chero estn contiguos Pros y contras  Fcil implementacin Registro: bloque inicial  Buen rendimiento  Irreal (salvo que se sepa de antemano el tamao del chero)  Mucha fragmentacin externa til para CD-ROMs y DVDs

Tema 5 Sistemas de Ficheros p. 2

4.1 Implementacin de cheros (II)


Asignacin con lista ligada
Fichero A 0
Bloque 0 del fichero Bloque 1 del fichero Bloque 2 del fichero Bloque 3 del fichero Bloque 4 del fichero Bloque 0 del fichero Bloque 1 del fichero Bloque 2 del fichero

Fichero B 0
Bloque 3 del fichero

Bloque fsico

10

12

11

14

Cada bloque contiene un puntero (no de bloque) al bloque siguiente Pros y contras  Fcil implementacin Registro: bloque inicial  Se aprovechan todos los bloques del disco  El acceso aleatorio es lento (hay que recorrer una lista)  El espacio de almacenamiento de un bloque deja de ser potencia de 2

Tema 5 Sistemas de Ficheros p. 2

4.1 Implementacin de cheros (III)


Asignacin con lista ligada e ndice
Entrada de directorio prueba Nombre

......

217 Bloque inicial 0

Misma idea que antes, pero los punteros se almacenan en una estructura aparte (ndice) que se almacena en disco, se lee cuando se usa el sistema de cheros y se escribe de nuevo en disco si se modica Desaparecen desventajas anteriores Posible problema: tamao de la tabla Ejemplo: FAT de MS-DOS

217

618

339 Fin de fichero

618

339

N de bloques de disco - 1 FAT

Tema 5 Sistemas de Ficheros p. 2

4.1 Implementacin de cheros (IV)


Asignacin con nodos-i A cada chero se le asigna una estructura de datos, llamada nodoi, en donde se almacenan sus atributos y las direcciones de sus bloques Dicha estructura se guarda en disco y se lee cuando se abre el chero

Tema 5 Sistemas de Ficheros p. 2

4.1 Implementacin de cheros (V)


Asignacin con nodos-i (continuacin...) Para cheros grandes hay bloques (bloques indirectos) que no almacenan datos, sino ms direcciones de bloques
Nodo-i Direcciones de disco Atributos Bloque simplemente indirecto Bloque doblemente indirecto

Direcciones de bloques de datos

Bloque triplemente indirecto

Tema 5 Sistemas de Ficheros p. 2

4.2 Implementacin de directorios


Principal funcin de los directorios: asociar un nombre de chero con la informacin del propio chero Un aspecto estrechamente relacionado con el anterior es dnde se guardan los atributos del chero. Dos posibilidades: En la propia entrada del directorio (caso (a)) En una estructura aparte apuntada por la entrada del directorio (caso (b))
juegos correo trabajo atributos atributos atributos (a) juegos correo noticias trabajo (b) La estructura de datos contiene los atributos

noticias atributos

Tema 5 Sistemas de Ficheros p. 2

4.2 Implementacin de directorios (II)


Directorios en MS-DOS Los directorios son cheros que almacenan una lista desordenada de entradas (o registros) de 32 bytes
Bytes

8
Nombre del fichero

3 1

10

2 2 2

4
Tamao

Extensin Atributos

Un bit de los atributos de la entrada distingue a un directorio de un chero normal un directorio puede tener subdirectorios rbol de directorios El directorio raz es una excepcin, ya que ocupa unos bloques jos de disco y tiene un tamao mximo establecido

Reservado Hora Fecha Nmero del primer bloque

Tema 5 Sistemas de Ficheros p. 2

4.2 Implementacin de directorios (III)


Directorios en Linux (Ext2/Ext3) Tambin es posible crear un rbol de directorios Todos los directorios (incluido el raz) son cheros que almacenan una lista desordenada de entradas de longitud variable
Bytes 4 Nodo-i Longitud del Longitud del Tipo registro nombre 2 1 1 1-255 Nombre

Las entradas no almacenan atributos de cheros sino nombres y no s de nodos-i asociados. El tipo de chero es una excepcin y se utiliza para acelerar los listados de directorios

Tema 5 Sistemas de Ficheros p. 2

4.2 Implementacin de directorios (IV)


Directorios en Windows 2000 (NTFS) Al igual que antes, tambin permite crear un rbol de directorios Los directorios pequeos son una lista desordenada de entradas con un formato similar al siguiente:
N entrada Longitud del Atributos de la MFT nombre Nombre en Unicode

Algunos atributos (como el instante de modicacin o el tamao) tienen una copia en la entrada de directorio para optimizar el listado del directorio Los directorios grandes se implementan como rboles B+ El nmero de entrada en la MFT desempea un papel similar al de los nodos-i, como ya veremos

Tema 5 Sistemas de Ficheros p. 2

4.2 Implementacin de directorios (V)


Ejemplo de resolucin de ruta Se basa en la implementacin de directorios de Unix El mecanismo es similar para otros casos
Directorio raz 1 1 4 7 14 9 6 8 bin dev lib etc usr tmp El nodo-i 6 indica que /usr est en el bloque 132 El nodo-i 6 corresponde a /usr Modo tamao tiempos 132 El bloque 132 es el directorio /usr 6 1 19 30 51 26 45 dick erik jim ast bal El nodo-i 26 indica que /usr/ast est en el bloque 406 El nodo-i 26 corresponde a /usr/ast Modo tamaos tiempos 406 El bloque 406 es el directorio /usr/ast 26 6 64 92 60 81 17 grants books mbox minix src

La bsqueda de usr da por resultado el nodo-i 6

/usr/ast corresponde al nodo-i 26

/usr/ast/mbox corresponde al nodo-i 60

Se puede usar una cach para guardar el resultado de la resolucin y as acelerar el proceso

Tema 5 Sistemas de Ficheros p. 2

4.3 Ficheros compartidos


Son cheros con ms de un nombre, dentro de un mismo directorio o en directorios distintos 2 implementaciones bsicas
Enlaces fsicos (hard links) Necesitan estructura tipo nodo-i Tambin necesitan un contador de enlaces lista Enlaces simblicos (soft links) Ficheros especiales de tipo link Pueden tener un alto coste (temporal y espacial) pero son ms exibles
Directorio raz dicc textos

todos

contar

contar

Palabras

lista

lista

rade

w7

Problema: peligro de duplicidad de datos

Tema 5 Sistemas de Ficheros p. 3

4.4 Administracin del espacio en disco


Tamao de bloque lgico
El tamao del bloque lgico (usado por el S.F.) suele ser mltiplo del tamao del bloque fsico (usado por el disp. de almacenamiento)

A la hora de elegir un tamao de bloque lgico hay que buscar un equilibrio razonable entre: eciencia en el uso del espacio (desperdiciado, principalmente, por fragmentacin interna) y tasa de transferencia
Utilizacin del espacio en disco Utilizacin del espacio en disco (porcentaje) Tasa de datos (Kbytes/seg)

200 150 100 50 0

100 75 50

Tasa de datos 128 256 512 1K 2K Tamao de bloque 4K 8K

25 0

Tema 5 Sistemas de Ficheros p. 3

4.4 Administracin del espacio en disco (II)


Registro de bloques libres. Se pueden usar algunas tcnicas similares a las vistas para la memoria principal: lista ligada de bloques libres agrupados mapa de bits (FAT en MS-DOS, Ext2/Ext3 en Linux, NTFS en Windows 2000, etc.)
Bloques de disco libres: 16, 17, 18 42 136 210 97 41 63 21 48 262 230 162 612 342 214 160 664 216 320 86 234 897 422 140 223 223 160 126
1001101101101100 0110110111110111 1010110110110110 0110110110111011 1110111011101111 1101101010001111 0000111011010111 1011101101101111 1100100011101111

310 516

180 482

142 141

0111011101110111 1101111101110111

Un bloque de disco de 1K puede contener 256 nmeros de bloques de disco de 32 bits (a)

Un mapa de bits (b)

Tema 5 Sistemas de Ficheros p. 3

4.4 Administracin del espacio en disco (III)


Cuotas de disco. Evitan que un usuario se apodere de todo el espacio de disco. Permiten limitar: el no de cheros usados el no de bloques usados El administrador puede establecer cuotas de usuario y de grupo
Tabla de cuotas Tabla de ficheros abiertos Atributos Direcciones de disco Usuario = 8 Apuntador a cuota Lmite de bloques flexible Lmite de bloques estricto

La conguracin sobre cuotas se guarda en cheros especiales del propio sistema de cheros Se puede tener un nivel exible y otro estricto

Nm. actual de bloques Nm. de advertencias restantes de bloques Lmite de ficheros flexible Lmite de ficheros estricto Nm. actual de ficheros Nm. de advertencias restantes de fichero Registro de cuota del usuario 8

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros


La prdida de datos es un desastre importante El S.F. no puede ofrecer proteccin contra la destruccin fsica del equipo y los medios, pero s puede ayudar a proteger la informacin Para mejorar la conabilidad del sistema de cheros hay que: Evitar el uso de bloques defectuosos (los que contienen algn sector defectuoso) Evitar la prdida de datos cuando se estropean bloques sanos o un usuario comete un error Recuperar la consistencia del sistema de cheros cuando el sistema se cae

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (II)


Manejo de bloques defectuosos. Tenemos que evitar el uso de bloques defectuosos de disco: Solucin hardware: el propio disco tiene sectores de reserva y un mapa que asocia, transparentemente, bloques defectuosos a bloques sanos Solucin software: el S.F. identica a los bloques defectuosos y evita su uso En Ext2 y NTFS: chero inaccesible al que pertenecen todos los bloques defectuosos En MS-DOS: se marca el bloque en la FAT como defectuoso

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (III)


Copias de seguridad
Tratan de solucionar dos problemas potenciales: Recuperarse de un desastre: un bloque sano, un conjunto de bloques o todo un disco pueden estropearse y perder los datos que contienen Recuperarse de los errores de los usuarios: cuando uno de ellos borra accidentalmente uno o ms cheros

Las copias de seguridad pueden serlo bien de todo (total) o bien de lo ltimo que se ha modicado (incremental) La copia de seguridad total: tarda mucho para dispositivos muy grandes y requiere dispositivos de respaldo de gran capacidad puede enlentecer todo el sistema si la copia se hace durante el funcionamiento de ste (es posible?)

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (III)


Copias de seguridad (continuacin. . . )
La copia de seguridad incremental necesita apoyo del S.O.: En MS-DOS se activa el atributo A de cada chero que se modica. El atributo se desactiva cuando se respalda el chero En Unix se guarda la fecha de la ltima modicacin para cada chero que se puede comparar con la fecha de la ltima copia de seguridad (total o incremental) La restauracin se hace con la ltima copia de seguridad total y las copias incrementales posteriores Los sistemas RAID son otra alternativa que veremos en el siguiente tema

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (IV)


Consistencia del sistema de cheros Los SS.FF. leen bloques de disco, los modican en memoria y los escriben en disco despus. Qu pasa si el sistema falla cuando se estn escribiendo los bloques modicados y hay bloques que se escriben y bloques que no?: El SS.FF. puede quedar en un estado inconsistente El problema se agrava si los bloques que no se escriben son de metadatos (nodos-i, bloques indirectos, directorios, etc.) Una solucin: ejecutar un programa cuando se reinicie el sistema para comprobar, al menos, la consistencia de bloques y de cheros

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (V)


Consistencia de bloques
Se tienen 2 contadores inicializados a 0 para cada bloque: Uno cuenta cuntas veces aparece el bloque como ocupado El otro cuenta cuntas veces aparece como libre Se recorren todos los nodos-i (en el caso de Unix) para ver qu bloques hay ocupados y se actualiza el primer contador Se analiza la lista o mapa de bits de bloques libres y se actualiza el segundo contador Casos posibles para cada bloque: 1 en el primer contador o en el segundo Bien 0 en los dos contadores (bloque faltante) Anadir a libres 2 o ms veces como libres Reconstruir lista enlazada 2 o ms veces en un mismo chero o en cheros distintos Error grave! Hacer copias Ocupado y libre a la vez Error potencialmente grave! (podra degenerar al caso anterior) Quitar de libres

Tema 5 Sistemas de Ficheros p. 3

4.5 Conabilidad del sistema de cheros (VI)


Consistencia de bloques (continuacin. . . )

Nmero de bloque 0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Bloques en uso 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 Bloques libres (a)

Nmero de bloque 0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Bloques en uso 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 Bloques libres (b) 0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 2 1 1 1 0 0 1 1 1 0 0 Bloques en uso 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 Bloques libres (d)

0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Bloques en uso 0 0 1 0 2 0 0 0 0 1 1 0 0 0 1 1 Bloques libres (c)

Tema 5 Sistemas de Ficheros p. 4

4.5 Conabilidad del sistema de cheros (VII)


Consistencia de cheros
Se comprueba si la informacin de los directorios es correcta En el caso de Unix: Se tiene un contador de enlaces inicializado a 0 para cada nodo-i Se recorre todo el rbol de directorios y, para cada chero, se incrementa el contador del nodo-i al que apunta Casos posibles para cada nodo-i El no de enlaces calculado coincide con el del nodo-i Bien El no de enlaces calculado es menor que el del nodo-i
Reparar el contador de enlaces del nodo-i y liberar dicho nodo-i si el valor es 0

El no de enlaces calculado es mayor que el del nodo-i Error potencialmente grave! (el nodo-i se podra liberar antes de que desaparezcan todos sus enlaces) Solucion anterior

Tema 5 Sistemas de Ficheros p. 4

4.5 Conabilidad del sistema de cheros (VIII)


Otras comprobaciones. En general, es conveniente comprobar todo lo que se pueda como, por ejemplo: Ver si el no de nodo-i es vlido (no es mayor que el total de nodos-i) Comprobar que un nodo-i no almacena nmeros de bloques invlidos Comprobar si los permisos de los cheros tienen sentido

Tema 5 Sistemas de Ficheros p. 4

4.6 Cach de disco. Jerarqua de almacenamiento


Cachs de disco
Los dispositivos sobre los que se construyen los SS.FF. suelen ser lentos

Para mejorar su desempeo, la solucin ms comn es utilizar una porcin de la memoria principal para almacenar bloques de disco, conocida como cach de disco (o, tambin, cach de bloques o cach de buffers) Ahora podemos usar como algoritmo de reemplazo un LRU con listas ligadas pero hay bloques que necesitan un tratamiento especial LRU modicado que tiene en cuenta dos factores independientes: 1. Es probable que el bloque se vuelva a necesitar pronto? Si no es as, colocar directamente al nal de la lista LRU 2. Es esencial el bloque para la consistencia del SS.FF.? Si es as, escribir en disco lo antes posible

Tema 5 Sistemas de Ficheros p. 4

4.6 Cach de disco. Jerarqua de almacenamiento (II)


Cachs de disco (continuacin. . . )
En un LRU modicado los bloque se dividen en varias categoras: nodos-i, bloques indirectos, de directorio, parcialmente ocupados, totalmente ocupados, etc.

Los bloques de datos tampoco pueden permanecer indenidamente en memoria (los usuarios podran perder informacin importante). 2 soluciones son: Cach de escritura directa (write-through): cualquier modicacin se escribe inmediatamente en disco. Es til para dispositivos pequeos extrables (disquetes) Cach de escritura diferida (write-back ): los bloques modicados de cach se escriben peridicamente en disco (por ejemplo, en Linux se escriben cada 30 segundos)

Tema 5 Sistemas de Ficheros p. 4

4.6 Cach de disco. Jerarqua de almacenamiento (III)


Jerarqua de almacenamiento
Los discos son slo uno de los muchos sistemas de almacenamiento que hay, pero tambin existen: registros, memoria principal, cintas, etc.
Registros Memoria cach Memoria principal Unidades de disco Bibliotecas de cintas magnticas
Lentos Baratos Gran capacidad No voltiles Rpidos Costosos Pequea capacidad Voltiles

Una forma adecuada de organizar todos esos elementos es jerrquicamente, en funcin de la velocidad, coste, tamao y volatilidad de cada elemento

Tema 5 Sistemas de Ficheros p. 4

4.7 Sistemas de cheros modernos


Los sistemas de cheros modernos se enfrentan a dos grandes problemas: La gran capacidad de los dispositivos de almacenamiento Su lentitud La gran capacidad de almacenamiento obliga a dichos SS.FF. a utilizar estructuras de datos escalables (rboles B+, principalmente) y transacciones para poder recuperar rpidamente la consistencia tras una cada La lentitud determina, en gran medida, la estructura global del sistema de cheros y su funcionamiento interno se deben optimizar las lectura y escrituras que deben ser secuenciales y en grandes grupos si es posible Como ejemplo, veamos el mecanismo de transacciones

Tema 5 Sistemas de Ficheros p. 4

4.7 Sistemas de cheros modernos (II)


Recuperacin rpida de la consistencia
Para no perder la consistencia del S.F. las modicaciones tienen que ser atmicas: 1. Las modicaciones se guardan primero en un chero especial, llamado registro, bitcora o journal 2. Cuando dicho chero est a salvo en disco, se escriben en disco las modicaciones del propio sistema de cheros 3. Si el sistema cae en el primer punto se pierden modicaciones (pero ninguna queda a medio) 4. Si cae en el segundo, se rehacen las modicaciones del registro (que deben ser idempotentes) El tiempo de recuperacin depende del tamao del registro, que suele ser muy pequeo (32 MB, 64 MB, etc.) Ejemplos de sistemas de cheros transaccionales: Ext3, ReiserFS, XFS, JFS y NTFS

Tema 5 Sistemas de Ficheros p. 4

ndice
5. Sistemas de cheros en Linux (Tanenbaum [C10.6]) 5.1. Conceptos fundamentales 5.2. El sistema de cheros virtual (VFS) 5.3. Montaje de sistemas de cheros 5.4. Ext2

Tema 5 Sistemas de Ficheros p. 4

5.1 Conceptos fundamentales


Los cheros: son una sucesin de 0 o ms bytes que contienen informacin arbitraria cuyo signicado establece el creador Se identican mediante nombres arbitrarios compuestos de cualquier carcter (excepto \0) y en donde la extensin no tiene ningn signicado especial para el S.O. Existe un sistema de cheros jerrquico con estructura de grafo acclico: Los cheros y directorios se especican mediante rutas absolutas y relativas (stas ltimas, dependientes del directorio de trabajo actual) Es posible crear enlaces fsicos (para cualquier tipo de chero salvo directorios) y enlaces simblicos (para cualquier tipo de chero)

Tema 5 Sistemas de Ficheros p. 4

5.1 Conceptos fundamentales (II)


Cuando varios procesos usan un mismo chero: Se usa la semntica Unix de coutilizacin los cambios son inmediatos No obstante, es posible establecer bloqueos (mediante la funcin fcntl) para un rango de bytes de un chero. Los bloqueos pueden ser: compartidos: permiten establecer otro bloqueo compartido sobre el mismo rango de bytes o sobre un rango de bytes que se solape con otro que ya tenga un bloqueo compartido til para operaciones de lectura exclusivos: los bytes de un rango afectado por un bloqueo exclusivo no pueden pertenecer a ningn otro bloqueo, ni exclusivo ni compartido til para operaciones de escritura La propia operacin de bloqueo puede ser bloqueante o no, segn se desee

Tema 5 Sistemas de Ficheros p. 5

5.2 El sistema de cheros virtual


Linux nos permite acceder a varios sistemas de cheros a la vez de forma transparente Para ello implementa un sistema de cheros virtual (Virtual File System, VFS) que invoca a funciones especcas de los sistemas de cheros reales cuando lo necesita
Procesos de usuario VFS ext2 vfat nfs xfs ........... proc

Cach de bloques Manejadores de dispositivos

Tema 5 Sistemas de Ficheros p. 5

5.2 El sistema de cheros virtual (II)


El VFS contiene cdigo genrico que implementa la interfaz de llamadas al sistema relacionadas con los sistemas de cheros, mientras que los SS.FF. reales contienen cdigo especco de cada sistema de cheros soportado Los SS.FF. reales acceden a los dispositivos de almacenamiento a travs de la cach de buffers que es una capa de abstraccin que aisla a dichos SS.FF. de los detalles del HW En la interfaz de llamadas al sistema, las operaciones con cheros y directorios se realizan mediante descriptores de chero Estos descriptores son enteros que se utilizan como ndices en la tabla de descriptores de chero que posee cada proceso Cada entrada de esta tabla posee informacin suciente para acceder al nodo-i asociado al chero deseado

Tema 5 Sistemas de Ficheros p. 5

5.2 El sistema de cheros virtual (III)


El VFS mantiene una tabla de nodos-i virtuales (una especie de cach) en donde se coloca la informacin de los nodos-i reales de los distintos cheros abiertos En una llamada al sistema, el ncleo debe poder acceder a un chero a partir de un descriptor: Solucin: que las entradas de las tablas de descriptores de chero apunten a las entradas de la tabla de nodos-i virtuales Problema: dnde se coloca el puntero de lectura/escritura? En el nodo-i virtual MAL: dos procesos independientes con el mismo chero abierto comparten el puntero cuando no deben En la entrada de la tabla de descriptores de chero asociada al descriptor usado por el proceso MAL: un proceso padre y otro hijo deben poder compartir el puntero Solucin: una nueva estructura de datos, la tabla de descripcin de cheros abiertos, entre la tabla de descriptores de chero de cada proceso y la tabla de nodos-i del VFS

Tema 5 Sistemas de Ficheros p. 5

5.2 El sistema de cheros virtual (IV)


Open file description Parents file descriptor table Childs file descriptor table Unrelated process file descriptor table File position R/W Pointer to i-node File position R/W Pointer to i-node i-node Mode Link count Uid Gid File size Times Addresses of first 10 disk blocks Single indirect Double indirect Triple indirect Pointers to disk blocks

Triple indirect block

Double indirect block

Single indirect block

Tema 5 Sistemas de Ficheros p. 5

5.3 Montaje de sistemas de cheros


Linux puede utilizar varios dispositivos de almacenamiento a la vez Para utilizar un dispositivo lo habitual es crear en l un S.F. Algunos dispositivos de almacenamiento se pueden dividir en dispositivos lgicos ms pequeos. Por ejemplo, un disco duro puede dividirse en particiones:
DISCO Particin Sistema de ficheros MBR Particin Sistema de ficheros Particin Sistema de ficheros

Bloque de arranque

Tema 5 Sistemas de Ficheros p. 5

5.3 Montaje de sistemas de cheros (II)


Particiones (continuacin. . . ) La informacin sobre particiones se guarda en la tabla de particiones del primer sector del disco duro, conocido como MBR (Master Boot Record) El MBR suele contener tambin el cdigo inicial de arranque del ordenador Para usar una particin lo habitual es crear en ella un S.F., reservando el primer bloque como bloque de arranque, que puede contener el cdigo para cargar el S.O. de la particin Cuando un ordenador arranca desde el disco duro, el MBR determina la particin activa, carga en memoria el cdigo de su bloque de arranque y le cede el control

Tema 5 Sistemas de Ficheros p. 5

5.3 Montaje de sistemas de cheros (III)


Aunque Linux puede usar varios dispositivos de almacenamiento a la vez, slo existe una nica jerarqua de directorios o sistema lgico de cheros Para usar un dispositivo, Linux debe insertar su sistema de cheros en el sistema lgico de cheros. Dicha operacin se llama montaje Un S.F. se monta en un punto de montaje, un directorio bajo el cul se hace visible el S.F. montado, pasando as a formar parte de la jerarqua nica de directorios Cuando ya no se quiere utilizar un dispositivo de almacenamiento se desmonta, haciendo que su sistema de cheros deje de ser accesible El S.F. que se monta durante el arranque del S.O y sobre el que se montan todos los dems SS.FF. se conoce como sistema de cheros raz

Tema 5 Sistemas de Ficheros p. 5

5.3 Montaje de sistemas de cheros (IV)

Raz Intercambio

Sistema lgico de ficheros

CD-R

Sistemas de ficheros

Dispositivos lgicos

Dispositivos fsicos

Tema 5 Sistemas de Ficheros p. 5

5.3 Montaje de sistemas de cheros (V)


Funcionamiento del montaje: Cuando se resuelve una ruta (absoluta o relativa) se comprueba si sobre un directorio hay un S.F. montado, es decir, si es un punto de montaje o no (hay informacin en el nodo-i virtual que indica esto) Si es as se localiza, a travs de una tabla de montajes, el nodo-i raz del S.F. montado, y se resuelve el resto de la ruta dentro de ese S.F. Por el contrario, si el siguiente elemento de la ruta a resolver es el directorio .. y estamos en la raz de un S.F. montado, se usa la tabla de montajes para acceder al nodo-i del punto de montaje, el cul se usa para resolver el resto de la ruta Cuando se resuelve una ruta es posible atravesar varios puntos de montaje. El procedimiento que se sigue es el mismo que el descrito

Tema 5 Sistemas de Ficheros p. 5

5.4 Ext2
Ext2 es el sistema de cheros por defecto de Linux. Sus principales caractersticas son: Nombres largos (hasta 255 caracteres) Ficheros grandes (ms de 4 TBytes) Direcciones de bloque lgico de 4 bytes Buen rendimiento Ext2 divide el dispositivo de almacenamiento en grupos de bloques. Cada grupo contiene: Una copia del superbloque Una copia de los descriptores de grupo Un bloque para el mapa de bits de bloques Un bloque para el mapa de bits de nodos-i Varios bloques para nodos-i Bloques de datos hasta completar el grupo

Tema 5 Sistemas de Ficheros p. 6

5.4 Ext2 (II)


DISPOSITIVO DE ALMACENAMIENTO Bloque de arranque Grupo de bloques 0 Grupo de bloques 1 Grupo de bloques 2 Grupo de bloques 3 ................ Grupo de bloques N-1

Superbloque

Descriptores de Mapa de bits Mapa de bits grupo de bloques de nodos-i

Nodos-i

Bloques de datos

El superbloque contiene informacin sobre la estructura general del sistema de cheros: Tamao del bloque lgico (en logaritmo en base 2) Total de nodos-i y nmero de nodos-i libres Total de bloques de datos y nmero de bloques libres Tamao de grupo (en bloques) Nodos-i por grupo

Tema 5 Sistemas de Ficheros p. 6

5.4 Ext2 (III)


Cada grupo tiene un descriptor de grupo asociado que indica: Posicin de cada mapa de bits (de bloques y de nodos-i) Primer bloque de la tabla de nodos-i Contador de nodos-i libres y contador de bloques libres Contador de directorios asociados al grupo Ext2 utiliza el ltimo contador de los descriptores de grupo para repartir los directorios de manera uniforme por todo el disco Ext2 realiza una agrupacin de cheros basada en directorios: a cada nuevo directorio se le asigna un grupo en el que se intentan situar el nodo-i y los bloques de cualquier chero creado dentro de ese directorio Los nodos-i tienen un tamao de 128 bytes y almacenan 15 direcciones: 12 de bloques directos y 3 de bloques indirectos (1 BSI, 1 BDI y 1 BTI). El nodo-i 2 es el del directorio raz

Tema 5 Sistemas de Ficheros p. 6

5.4 Ext2 (IV)


Un sistema de cheros Ext2 se crea con mke2fs: es una aplicacin de usuario que recibe como parmetro el chero especial de bloques que representan al dispositivo de almacenamiento (p.e., /dev/hda1) Para recuperar la consistencia tras una cada se usa e2fsck que tambin es una aplicacin de usuario Ext3 es un sistema de cheros transaccional derivado de Ext2: Comparten la misma estructura un sistema de chero Ext2 se puede tratar como Ext3 y viceversa Ext3 aade un registro que permite recuperar rpidamente la consistencia tras una cada Tambin se crea con mke2fs y, si se desea, se puede comprobar totalmente con e2fsck

Tema 5 Sistemas de Ficheros p. 6

ndice
6. Sistemas de cheros en Windows 2000 (Tanenbaum [C11.7]) 6.1. Conceptos fundamentales 6.2. NTFS

Tema 5 Sistemas de Ficheros p. 6

6.1 Conceptos fundamentales


Muchos conceptos son similares a los vistos en Linux, como un sistema de cheros jerrquico, pero otros son especcos, como los ujos dentro de los cheros Windows 2000 tambin puede utilizar varios sistemas de cheros a la vez: FAT16, FAT32, NTFS y otros para el manejo de CD-ROMs y DVDs. El principal S.F. es NTFS Los nombres de los cheros estn limitados a 255 caracteres y las rutas completas a 32.767 caracteres El API Win32 para manejo de cheros no distingue entre maysculas y minsculas (aunque NTFS s lo hace) Los cheros se manejan a travs de handles. Para las aplicaciones de consola hay, por defecto, tres handles abiertos (entrada, salida y salida de error estndares). Esto no ocurre para las aplicaciones grcas

Tema 5 Sistemas de Ficheros p. 6

6.2 NTFS
NTFS es el principal S.F de Windows NT, 2000, XP y 2003. Sus principales caractersticas son: Nombres largos (hasta 255 caracteres) en formato Unicode Ficheros muy grandes (en teora, hasta 264 bytes) Ficheros multiujo (un cheros es uno o ms ujos de bytes a los que se puede acceder de manera individual) Direcciones de bloque lgico de 8 bytes y tamaos de bloque lgico entre 512 bytes y 64 Kbytes Compresin transparente de cheros Cifrado de cheros Rendimiento adecuado

Tema 5 Sistemas de Ficheros p. 6

6.2 NTFS (II)


Un chero en NTFS consiste en mltiples atributos, cada uno de los cuales se representa con un ujo de bytes cuyo tamao dependen del tipo de atributo (hasta un mximo de 264 bytes) Todos los cheros tienen, al menos, dos atributos: un nombre de chero y un ujo annimo que contiene los datos del chero Adems del ujo annimo, los cheros pueden tener otros ujos de datos, cada uno de los cuales se identica con chero:nombre del ujo Cada ujo tiene su propio tamao y puede bloquearse con independencia de los dems ujos

Tema 5 Sistemas de Ficheros p. 6

6.2 NTFS (III)


La principal estructura de datos de un sistema de cheros NTFS es la tabla maestra de cheros o MFT (Master File Table): Es una sucesin lineal de registros de tamao jo (1 KB) La MFT es en s un chero: puede colocarse en cualquier lugar y puede crecer cuando es necesario (hasta un mximo de 248 registros) La direccin del primer bloque de la MFT se guarda en el bloque de arranque. La informacin sobre el resto de bloques se guarda en el primer registro (0) de la propia MFT Un mapa de bits controla qu entradas de la MFT est ocupadas y qu entradas estn libres

Tema 5 Sistemas de Ficheros p. 6

6.2 NTFS (IV)


Cada registro de la MFT describe un chero o directorio: contiene sus atributos (nombre, marcas de tiempo, ujo annimo,. . . ) y la lista de direcciones de disco donde estn sus bloques Los primeros 16 registros MFT estn reservados para cheros de metadatos (tal como indican el signo $ al principio del nombre) El registro 1 es una copia de la primera parte de la MFT (para evitar su prdida total, lo que sera un desastre)
1 KB

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

First user file (Reserved for future use) (Reserved for future use) (Reserved for future use) (Reserved for future use) $Extend Extentions: quotas,etc $Upcase Case conversion table $Secure Security descriptors for all files $BadClus List of bad blocks $Boot Bootstrap loader $Bitmap Bitmap of blocks used $ Root directory $AttrDef Attribute definitions $Volume Volume file $LogFile Log file to recovery $MftMirr Mirror copy of MFT $Mft Master File Table

Metadata files

Tema 5 Sistemas de Ficheros p. 6

6.2 NTFS (V)


Algunos cheros de metadatos importantes, descritos por los primeros 16 registros, son: $LogFile: chero de registro para los cambios en los metadatos $AttrDef: deniciones de los atributos contenidos en los registros $: directorio raz $Bitmap: mapa de bits de bloques usados en el dispositivo de almacenamiento (o volumen) $BadClus: lista de bloques defectuosos del dispositivo de almacenamiento (o volumen) $Extend: a diferencia de los dems, este registro es un directorio que contiene cheros diversos (cuotas, puntos de reanlisis, etc.)

Tema 5 Sistemas de Ficheros p. 7

6.2 NTFS (VI)


Cada registro MFT consiste en: un encabezado de registro: entre otras cosas, contiene un contador de enlaces fsicos y el nmero real de bytes usados en el registro una secuencia de pares (encabezado de atributo, valor): el encabezado de atributo identica el atributo al que representa, y da la longitud y la ubicacin del campo valor juntos con diversos indicadores y otra informacin NTFS dene 13 atributos posibles, siendo dos de los ms importantes el nombre del chero y el atributo datos Por lo general, los valores de atributo vienen inmediatamente despus del encabezado correspondiente No obstante, si un valor es demasiado grande y no cabe en un registro se puede colocar en un bloque de disco aparte atributo no residente

Tema 5 Sistemas de Ficheros p. 7

6.2 NTFS (VII)


De los 13 atributos posibles, el que siempre aparece en ltimo lugar es el atributo datos. Este atributo se puede repetir varias veces, una por cada ujo que posea el chero: El nombre del ujo va en el encabezado de este atributo (salvo para el ujo por defecto, el ujo annimo) Tras el encabezado viene una lista de direcciones de los bloques de disco que contienen los datos del ujo (o bien, si el ujo es pequeo, el ujo mismo): La lista de direcciones se describe mediante una secuencia de registros, cada uno de los cuales describe una serie de bloques lgicamente contiguos Al igual que en Ext2, los cheros de NTFS pueden tener huecos (que, se supone, estn llenos de ceros). En este caso, habr varios registros para describir las direcciones de disco

Tema 5 Sistemas de Ficheros p. 7

6.2 NTFS (VIII)


Ejemplo de registro MFT para un chero de 9 bloques repartidos en 3 series:
Standard info header Record header MTF record Standard info File name File name header Data header Info about data blocks

Header Run #1 Run #2 Run #3


20

64

80

Unused

Disk blocks Blocks numbers 20-23 64-65 80-82

Si el chero es tan grande o est tan fragmentado que la informacin de bloques no cabe en su registro MFT (registro base), se usan otros registros MFT (registros de extensin) para guardar el resto de la informacin: En este caso, el registro base tiene un atributo con la lista de registros de extensin Si esta lista es muy grande, dicho atributo se puede hacer no residente

Tema 5 Sistemas de Ficheros p. 7

6.2 NTFS (IX)


En NTFS los directorios pequeos se implementan como cheros que contienen una lista desordenada de entradas (al igual que en Ext2):
Standard info header Record header

Index root header

A directory entry contains the MFT index for the file, the length of the file name, the file name itself, and various fields and flags

Standard info

Unused

Los directorios grandes, en cambio, se implementan como rboles B+ El nmero de registro MFT desempea un papel similar al de nmero de nodo-i en otros sistemas de cheros

Tema 5 Sistemas de Ficheros p. 7