PDF de programación - Evolución de los sistemas de archivos en Linux

Imágen de pdf Evolución de los sistemas de archivos en Linux

Evolución de los sistemas de archivos en Linuxgráfica de visualizaciones

Publicado el 14 de Enero del 2017
942 visualizaciones desde el 14 de Enero del 2017
778,2 KB
61 paginas
Creado hace 14a (24/10/2009)
Evolución de los

sistemas de archivos

en Linux
Mario Medina C.

Depto. Ing. Eléctrica, UdeC

[email protected]

24-Oct.-2009

2009 Encuentro Linux

Tópicos a tratar

• Sistemas de archivos tradicionales

 El sistema de archivos Ext2

• Sistemas de archivos basados en

bitácoras (journaling)
 El sistema de archivos Ext3

• Sistema de archivos actuales

 El sistema de archivos Ext4
 Otros

24-Oct.-2009

2009 Encuentro Linux

Sistemas de archivos

• Sistemas de archivos ven un medio de

almacenamiento masivo como un vector
de bloques
 Bloques típicamente son de 1, 2 ó 4 KiB
 Datos se almacenan en sectores de 512 bytes

Vector de bloques

0

n-1

24-Oct.-2009

2009 Encuentro Linux

Almacenando un archivo

• Almacenar los datos del archivo y

los metadatos
 Nodo índice contiene índices de los

bloques de datos

 Nombre se almacena en el directorio

Nodo índice

(Nodo-i)
Dueño
Tipo

Tamaño

13 14
20 5

Índice de
bloques

1 11
17 18
6
7

0

1

2

3

4

5

6

7

9 10 11 12 13 14 15 16 17 18 19 20 21

8
Bloques de disco

24-Oct.-2009

2009 Encuentro Linux

Breve historia

• Linus Torvalds
• MINIX
• Andy Tanenbaum

24-Oct.-2009

2009 Encuentro Linux

MINIX y Linux

• MINIX

 Plataforma, guía y fuente de inspiración para

desarrollar Linux

• Linux

 Primera versión del kernel en 1991
 Inicialmente, utilizaba el sistema de archivos

de MINIX
Basado en Berkeley FFS
Simplificado para la enseñanza

24-Oct.-2009

2009 Encuentro Linux

MINIX FS

• Sistema de archivos de tamaño máximo

64 MiB

• Archivos de tamaño máximo 64 MiB
• Directorios tienen tamaño fijo
• Nombres de archivos limitados a 14

caracteres

• Bloques de 1 KiB
• Punteros a bloques de 16 bits

24-Oct.-2009

2009 Encuentro Linux

Sistema de archivos Ext

• Sistema de archivos extendido (Extended

File System)
 Liberado en 1992 para reemplazar MINIX FS
 Sistema de archivos de tamaño máximo 4 TiB
 Archivos de tamaño máximo 2 GiB
 Nombres de archivos de 255 caracteres
 Ineficiente!

Maneja bloques libres y nodos-I como listas

encadenadas

24-Oct.-2009

2009 Encuentro Linux

Sistema de archivos Ext2

• Segundo sistema de archivos extendido

(Extended File System 2)
 Aparece en 1993
 Sistema de archivos de tamaño máximo 4 TiB
 Archivos de tamaño máximo 2 GiB
 Directorios de tamaño variable
 Nombres de archivos de 255 caracteres
 Eficiente y robusto

24-Oct.-2009

2009 Encuentro Linux

Sistema de archivos Ext2

• Divide el disco en n grupos de bloques

 m bloques de datos
 i nodos-i asociados a los archivos en el grupo

Grupo 0 Grupo 1

. . . . . Grupo n - 1

Super
bloque

Descriptores
de grupos

1

bloque

n

bloques

Bitmap
bloques
datos

1

bloque

Bitmap
nodos-i

Tabla de
nodos-i m Bloques de datos

1

bloque

i

bloques

m

bloques

24-Oct.-2009

2009 Encuentro Linux

Contenido de un grupo

• m bloques de datos
• i nodos-i
• Bitmap de bloques libres en el grupo
• Bitmap de nodos-i libres en el grupo
• Copia del superbloque
• Copia de los descriptores de todos los

grupos

24-Oct.-2009

2009 Encuentro Linux

Superbloque

• Contiene información de todo el sistema

 Número total de nodos-i
 Tamaño total en bloques
 Tamaño del bloque (1, 2 ó 4 KiB)
 Tamaño del nodo-i (128 bytes)
 Número total de bloques libres
 Número total de nodos-i libres
 Número de bloques y nodos-i por grupo
 Contador de operaciones de montaje

24-Oct.-2009

2009 Encuentro Linux

Descriptor de grupo

• Cada grupo tiene su propio descriptor
• Replicado en cada grupo (n copias)

 Número de bloque del bitmap de bloques de

datos

 Número de bloque del bitmap de nodos-i
 Número de bloque del primer bloque de datos
 Contador de bloques de datos libres
 Contador de nodos-i libres
 Número de directorios en el grupo

24-Oct.-2009

2009 Encuentro Linux

Nodo-i

• 128 bytes de longitud

 Tipo del archivo (archivo, directorio, socket,

enlace, etc.)

 Tamaño del archivo en bytes
 Tamano del archivo en bloques
 Dueño del archivo
 3 marcas de tiempo

Fecha y hora de creación
Fecha y hora de última modificación
Fecha y hora de último acceso

24-Oct.-2009

2009 Encuentro Linux

Punteros en nodo-i

• 12 punteros directos

 Contienen número del bloque de datos

• Puntero a tabla de primer nivel
 Tabla contiene punteros directos

• Puntero a tabla de segundo nivel

 Tabla de punteros a tablas de primer nivel

• Puntero a tabla de tercer nivel

 Tabla de punteros a tablas de segundo nivel

24-Oct.-2009

2009 Encuentro Linux

Direccionamiento de bloques

24-Oct.-2009

2009 Encuentro Linux

Direccionamiento de bloques

• Para bloques de 4 KiB y punteros de 32 bits
 12 punteros directos a bloques de datos: 48 KiB
 Puntero a tabla de primer nivel: 4 MiB

Ocupa un bloque de datos

 Puntero a tabla de segundo nivel: 4 GiB
 Puntero a tabla de tercer nivel: 4 TiB

• Máximo tamaño de un archivo
 4 TiB + 4 GiB + 4 MiB + 48 KiB

24-Oct.-2009

2009 Encuentro Linux

Directorios

• Archivo especial
• Estructura de datos contiene

 Número del nodo-I
 Tamaño de esta estructura de datos
 Longitud del nombre

Máximo 255 caracteres

 Tipo del archivo
 Nombre del archivo

24-Oct.-2009

2009 Encuentro Linux

Estructura de un directorio

• En el ejemplo, archivo oldfile está borrado

 Nodo-i es 0

24-Oct.-2009

2009 Encuentro Linux

Límites de Ext2

• Bloques por grupo
32 Ki
• Bytes por grupo
128 MiB
• Nodos-i por grupo
32 Ki
• Número máximo de grupos
128 Ki
• Tamaño máximo de un disco
16 TiB
• Bloques por archivo
2 Gi
• Tamaño máximo de un archivo 4 TiB

• Suponiendo bloques de 4 KiB

24-Oct.-2009

2009 Encuentro Linux

Problemas de Ext2

• Directorios son listas encadenadas

 Parche a Ext2 en 2002 implementa directorios
como árboles Htree (opción dir_index)
Similar a árboles B+

 Árboles de altura constante (1 ó 2 niveles)
 Factor de fanout alto
 Función de dispersión (hash) aplicada al

nombre del archivo

 Compatible con lista de Ext2 rev. 0

24-Oct.-2009

2009 Encuentro Linux

Árboles Htree

24-Oct.-2009

2009 Encuentro Linux

Superbloques ralos

• Copia del superbloque en todos los grupos
• Modificaciones deben actualizar todas las

copias
 Ineficiente!

• Ext2 revisión 1 agrega opción
sparse_super
 Copias del superbloque y los descriptores de
grupo se almacenan sólo en los grupos 0, 1, y
potencias de 3, 5, y 7

24-Oct.-2009

2009 Encuentro Linux

Soporte para archivos

grandes

• Ext2 rev. 0 limita tamaño máximo de un

archivo a 2 GiB
 Límite fue sobrepasado por evolución de los

discos magnéticos

• Ext2 rev.1 agrega opción large_file
 Permite utilizar archivos de tamaño hasta 4

TiB

 Este límite está siendo sobrepasado hoy en

día.

24-Oct.-2009

2009 Encuentro Linux

Tamaño máximo de un grupo

• Bitmap de bloques libres debe caber en un

bloque
 Si bloque es 4 KiB, bitmap describe a lo más

32 Ki bloques

 Cada grupo de bloques puede almacenar a lo

más 128 MiB de datos

24-Oct.-2009

2009 Encuentro Linux

Número fijo de nodos-i

• Número de nodos-i por grupo se define al
momento de crear el sistema de archivos
 Tamaño de nodo-i: 128 bytes
 32 nodos-i en un bloque de 4 KiB
 Debe haber un nodo-i por cada bloque de

datos
32 Ki bloques fi

32 Ki nodos-i

 Máximo 4 MiB dedicados a almacenar nodos-i

24-Oct.-2009

2009 Encuentro Linux

Metadatos en Ext2

• Ext2 mantiene 6 tipos de metadatos

 Superbloques
 Descriptores de grupo
 Nodos-i
 Tablas de punteros de primer, segundo y

tercer nivel

 Bitmaps de bloques libres
 Bitmaps de nodos-i libres

24-Oct.-2009

2009 Encuentro Linux

Actualizando metadatos

Si un archivo crece de 3 a 5 bloques, actualizar
• Superbloque y todas sus copias

 Actualizar contador de total de bloques libres

• Descriptor del grupo y todas sus copias

 Actualizar contador de bloques libres en el grupo

• Grupo

 Actualizar bitmap de bloques libres

• Nodo-i del archivo

 Actualizar tamaño, bloques usados, punteros a

bloques, tablas de punteros, etc.

24-Oct.-2009

2009 Encuentro Linux

Metadatos en memoria

• Información crítica del sistema de archivos
se lee a memoria al momento del montaje
• Memoria RAM no puede almacenar todas

las estructuras de datos

• Qué hacer?

 Guardar datos en cache!

24-Oct.-2009

2009 Encuentro Linux

Metadatos en memoria

• Superbloque y descriptores

 Siempre en memoria

• Nodos-i

 En buffer cache
• Bloques de datos
 En buffer cache

• Bitmaps de bloques y de nodos-i libres

 En cola FIFO en memoria

24-Oct.-2009

2009 Encuentro Linux

Consistencia de metadatos

• Metadatos se almacenan en memoria
 Mayor desempeño por acceso rápido a

metadatos frecuentemente usados
• Copias en disco son actualizadas
periódicamente por el proceso sync
 Escribe superbloques, nodos-i, bitmaps

modificados desde memoria al disco

• Qué pasa si hay un problema?
 Inconsistencia en los metadatos!

24-Oct.-2009

2009 Encuentro Linux

Reparación usando fsck

• fsck asegura consistencia del sistema de
archivos
 Corrige errores en metadatos
 Debe revisar todo el sistema de archivos
• Tiempo de ejecución proporcional al

tamaño del disco
 Puede demorar muchísimo para discos

grandes

• Solución: journaling

24-Oct.-2009

2009 Encuentro Linux

Tercer sistema de archivos

extendido (Ext3)

• Compatible con Ext2

 Partición Ext3 puede ser montada como

partición Ext2

 Conversión in situ entre Ext2 y Ext3 posible
 Bitácora almacenada como archivo
/.journal
 Bitácora se escribe al disco con mayor

frecuencia que sync de Ext2

 Volumen de datos a escribir es menor

24-Oct.-2009

2009 Encuentro Linux

La bitácora o journal

• Estructura de datos almacenada en disco

 Bitácora registra cambios a realizar a los

metadatos

 Después se realizan los cambios a los datos
 Luego, se marcan los cambios como

realizados en la bitácora (commit)

• Restauración de consistencia

 Revisar últimas modificaciones a la bitácora
 Tiempo de ejecución proporcional al tamaño

de la bitácora
  • Links de descarga
http://lwp-l.com/pdf1577

Comentarios de: Evolución de los sistemas de archivos en Linux (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad