Anda di halaman 1dari 61

Evolucin de los

sistemas de archivos
en Linux
Mario Medina C.
Depto. Ing. Elctrica, UdeC
mariomedina@udec.cl
24-Oct.-2009

2009 Encuentro Linux

Tpicos a tratar
Sistemas de archivos tradicionales
El sistema de archivos Ext2

Sistemas de archivos basados en


bitcoras (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 tpicamente son de 1, 2 4 KiB
Datos se almacenan en sectores de 512 bytes
Vector de bloques
0

24-Oct.-2009

2009 Encuentro Linux

n-1

Almacenando un archivo
Almacenar los datos del archivo y Nodo ndice
(Nodo-i)
los metadatos
Nodo ndice contiene ndices de los
bloques de datos
Nombre se almacena en el directorio

Dueo
Tipo

Tamao
1 11 13 14
17 18 20 5
6

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

Bloques de disco
24-Oct.-2009

2009 Encuentro Linux

ndice de
bloques

Breve historia
Linus Torvalds
MINIX
Andy Tanenbaum

24-Oct.-2009

2009 Encuentro Linux

MINIX y Linux
MINIX
Plataforma, gua y fuente de inspiracin para
desarrollar Linux

Linux
Primera versin del kernel en 1991
Inicialmente, utilizaba el sistema de archivos
de MINIX
Basado en Berkeley FFS
Simplificado para la enseanza
24-Oct.-2009

2009 Encuentro Linux

MINIX FS
Sistema de archivos de tamao mximo
64 MiB
Archivos de tamao mximo 64 MiB
Directorios tienen tamao 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 tamao mximo 4 TiB
Archivos de tamao mximo 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 tamao mximo 4 TiB
Archivos de tamao mximo 2 GiB
Directorios de tamao 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

Super
bloque
1
bloque
24-Oct.-2009

Descriptores
de grupos
n
bloques

Grupo 1

.....

Bitmap
Bitmap Tabla de
bloques
nodos-i nodos-i
datos
1
bloque

1
i
bloque bloques

2009 Encuentro Linux

Grupo n - 1

m Bloques de datos
m
bloques

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 informacin de todo el sistema

Nmero total de nodos-i


Tamao total en bloques
Tamao del bloque (1, 2 4 KiB)
Tamao del nodo-i (128 bytes)
Nmero total de bloques libres
Nmero total de nodos-i libres
Nmero 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)
Nmero de bloque del bitmap de bloques de
datos
Nmero de bloque del bitmap de nodos-i
Nmero de bloque del primer bloque de datos
Contador de bloques de datos libres
Contador de nodos-i libres
Nmero 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.)
Tamao del archivo en bytes
Tamano del archivo en bloques
Dueo del archivo
3 marcas de tiempo
Fecha y hora de creacin
Fecha y hora de ltima modificacin
Fecha y hora de ltimo acceso
24-Oct.-2009

2009 Encuentro Linux

Punteros en nodo-i
12 punteros directos
Contienen nmero 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

Mximo tamao de un archivo


4 TiB + 4 GiB + 4 MiB + 48 KiB
24-Oct.-2009

2009 Encuentro Linux

Directorios
Archivo especial
Estructura de datos contiene
Nmero del nodo-I
Tamao de esta estructura de datos
Longitud del nombre
Mximo 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

Lmites de Ext2

Bloques por grupo


32 Ki
Bytes por grupo
128 MiB
Nodos-i por grupo
32 Ki
Nmero mximo de grupos
128 Ki
Tamao mximo de un disco
16 TiB
Bloques por archivo
2 Gi
Tamao mximo 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 (opcin dir_index)
Similar a rboles B+

rboles de altura constante (1 2 niveles)


Factor de fanout alto
Funcin de dispersin (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 revisin 1 agrega opcin


sparse_super
Copias del superbloque y los descriptores de
grupo se almacenan slo 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 tamao mximo de un
archivo a 2 GiB
Lmite fue sobrepasado por evolucin de los
discos magnticos

Ext2 rev.1 agrega opcin large_file


Permite utilizar archivos de tamao hasta 4
TiB
Este lmite est siendo sobrepasado hoy en
da.
24-Oct.-2009

2009 Encuentro Linux

Tamao mximo de un grupo


Bitmap de bloques libres debe caber en un
bloque
Si bloque es 4 KiB, bitmap describe a lo ms
32 Ki bloques
Cada grupo de bloques puede almacenar a lo
ms 128 MiB de datos

24-Oct.-2009

2009 Encuentro Linux

Nmero fijo de nodos-i


Nmero de nodos-i por grupo se define al
momento de crear el sistema de archivos
Tamao 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 32 Ki nodos-i

Mximo 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 tamao, bloques usados, punteros a
bloques, tablas de punteros, etc.
24-Oct.-2009

2009 Encuentro Linux

Metadatos en memoria
Informacin crtica 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 desempeo por acceso rpido a
metadatos frecuentemente usados

Copias en disco son actualizadas


peridicamente 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

Reparacin usando fsck


fsck asegura consistencia del sistema de
archivos
Corrige errores en metadatos
Debe revisar todo el sistema de archivos

Tiempo de ejecucin proporcional al


tamao del disco
Puede demorar muchsimo para discos
grandes

Solucin: journaling
24-Oct.-2009

2009 Encuentro Linux

Tercer sistema de archivos


extendido (Ext3)
Compatible con Ext2
Particin Ext3 puede ser montada como
particin Ext2
Conversin in situ entre Ext2 y Ext3 posible
Bitcora almacenada como archivo
/.journal
Bitcora 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 bitcora o journal
Estructura de datos almacenada en disco
Bitcora registra cambios a realizar a los
metadatos
Despus se realizan los cambios a los datos
Luego, se marcan los cambios como
realizados en la bitcora (commit)

Restauracin de consistencia
Revisar ltimas modificaciones a la bitcora
Tiempo de ejecucin proporcional al tamao
de la bitcora
24-Oct.-2009

2009 Encuentro Linux

Modos de operacin de Ext3


Journal
Bitcora guarda cambios a los datos y a los
metadatos
Luego, los datos modificados son escritos
a disco y se hace el commit
Minimiza chances de prdidas de datos
Modo ms lento y seguro
Alto nmero de accesos a disco
24-Oct.-2009

2009 Encuentro Linux

Modos de operacin de Ext3


Ordered
Bitcora slo almacena cambios a los
metadatos
Asegura que los datos son escritos antes que
el commit en la bitcora
Opcin por omisin en Ext3
Minimiza chances de corrupcin

24-Oct.-2009

2009 Encuentro Linux

Modos de operacin de Ext3


Writeback
Bitcora slo almacena cambios a los
metadatos
No hay reordenamiento de escrituras a disco
Es posible que ocurra un commit antes que
los datos sean escritos al disco
Modo ms rpido, pero que ofrece menos
robustez

24-Oct.-2009

2009 Encuentro Linux

Limitaciones de Ext2/Ext3
Desempeo es muy bueno
Ext3 acelera recuperacin ante fallas
Ext3 aumenta confiabilidad del sistema

Diseados para

Discos pequeos
Bajo nmero de archivos
Archivos pequeos
Directorios con bajo nmero de archivos

24-Oct.-2009

2009 Encuentro Linux

Tamaos de archivos

24-Oct.-2009

2009 Encuentro Linux

Tamaos de archivos

24-Oct.-2009

2009 Encuentro Linux

Evolucin de los discos duros


IBM RAMAC 305
Primer disco magntico
Sali en 1956
50 discos en una torre
Cada disco de 100 KiB
Costo del arriendo
mensual: US$160000

24-Oct.-2009

2009 Encuentro Linux

Evolucin de los discos


duros
Seagate Barracuda XT modelo
ST32000641AS
SATA 6 Gb/s
7200 RPM
64 MB cache
Slo US$300

24-Oct.-2009

2009 Encuentro Linux

El cuarto sistema de archivos


extendido (Ext4)
Anunciado en 2006
Soporte para sistemas de archivos de gran
tamao usando secuencias de bloques
(extents)
Nmero de bloque se aumenta a 48 bits
Permite sistemas de archivos de 1 EiB
Permite archivos de hasta 16 TiB
Aumenta nmero mximo de subdirectorios
de 32000 en Ext3 a 640000
24-Oct.-2009

2009 Encuentro Linux

Secuencias de bloques

24-Oct.-2009

2009 Encuentro Linux

Secuencias de bloques
(extents)
Extent representa
hasta 128 MiB
4 extents en el
nodo-i
Raz de rbol de
extents en nodo-i

Nodo-i por
omisin tiene 256
bytes

24-Oct.-2009

2009 Encuentro Linux

Nmero de bloque de 48 bits


Ampliar contadores y punteros a 48 bits
Superbloque
Contadores de bloques totales y libres

Descriptor de grupo
Punteros a bitmaps y tablas de nodos-I

Bitcora
Debe almacenar direcciones de bloques como
48 bits
24-Oct.-2009

2009 Encuentro Linux

Asignacin multibloques
Ext3 asigna un nuevo bloque de disco a la
vez
Implica revisar bitmap de bloques libres
Operacin costosa

Ext4 permite realizar asignaciones de


mltiples bloques en una operacin
Reduce uso de CPU
Uso ms eficiente de bloques libres
24-Oct.-2009

2009 Encuentro Linux

Asignacin diferida
Posterga la asignacin de bloques libres en
disco hasta el tiempo de writeback
Se usa en conjunto con la asignacin
multibloque
Reduce fragmentacin del sistema de archivos
Reduce el uso de la CPU
Reduce actualizaciones para archivos
temporales
Escritura puede demorarse hasta 60 s.
24-Oct.-2009

2009 Encuentro Linux

Preasignacin persistente
Permite preasignar espacio en disco para
un archivo que se sabe va a crecer
Asegura asignacin contigua de bloques de
disco
Mejora desempeo
Reduce fragmentacin
til para aplicaciones como p2p
Importante para operaciones de tiempo real

24-Oct.-2009

2009 Encuentro Linux

Otras mejoras
fsck no revisa grupos o nodos-i vacos
Marcas de tiempo con granularidad de
nanosegundos
Checksums de la bitcora
Agranda nodos-i a 256 bytes
Reserva nodos-I iniciales de un directorio
Permite deshabilitar bitcoras
Desfragmentacin online
24-Oct.-2009

2009 Encuentro Linux

Convirtiendo Ext2/3 a Ext4


Para convertir Ext3 a Ext4
tunefs O extents,uninit_bg,dir_index /
dev/DEV

Ejecutar obligatoriamente fsck


e2fsck pDf /dev/DEV

Para convertir Ext2 a Ext4, adems es


necesario crear una bitcora
tune2fs j /dev/DEV
24-Oct.-2009

2009 Encuentro Linux

Sistema de archivos XFS


Desarrollado por SGI para IRIX
Uso extensivo de rboles B+ y extents
Bloques libres y ocupados, directorios, etc.

Sistema de archivos de 64 bits

Tamao mximo terico: 16 EiB


Tamao mximo de un archivo: 8 EiB
Bloques de datos de 512 B a 64 KiB
Limitaciones en Linux: 16 TiB

24-Oct.-2009

2009 Encuentro Linux

Sistema de archivos XFS


Disco dividido en grupos de asignacin
Cada grupo maneja sus bloques libres y
nodos-i
Punteros internos de 32 bits

Bitcora de metadatos almacena


operaciones lgicas
Soporte para archivos ralos
Asignacin diferida y dinmica de nodos-i
24-Oct.-2009

2009 Encuentro Linux

Bitcora fsica vs lgica


Bitcora fsica
Bitcora almacena bloques de datos que
contienen metadatos modificados
Facilita la recuperacin de informacin
Desperdicia espacio en la bitcora

Bitcora lgica
Almacena slo cambios a los metadatos
Tamao de bitcora mucho menor
Cdigo ms complejo
24-Oct.-2009

2009 Encuentro Linux

Ext4 vs XFS
XFS es full 64-bit
Cdigo fuente es 100K
lneas
XFS hereda cdigo y
compatibilidad con
IRIX
Mximo 16 EiB
Bitcora lgica

24-Oct.-2009

Ext4 an no los es
Cdigo fuente es 25K
lneas
Ext4 hereda robustez
y estabilidad de Ext3
y Ext2
Mximo 1 EiB
Bitcora fsica

2009 Encuentro Linux

ReiserFS/Reiser4
Sistema de archivos con bitcoras
rboles almacenan todos los objetos del
sistema
Excelente desempeo para archivos
pequeos
Soporte para archivos ralos
Desarrollo detenido por arresto de Hans
Reiser por asesinar a su mujer
24-Oct.-2009

2009 Encuentro Linux

Desempeo
Iozone v.3.322, Disco Seagate 80GiB, 7200RPM
35
30
25
20

Write
Read

15
10
5
0

24-Oct.-2009

Ext3

Ext4

XFS

2009 Encuentro Linux

Desempeo en la vida real


Benchmarks de
Phoronix, Dic. 2008
Comparacin de

Ext3
Ext4
XFS
ReiserFS

Resultado: no hay
diferencias!
24-Oct.-2009

World of Padman
Unreal Tournament
7-Zip Compression
Parallel BZip2
Compression
LZMA Compression
LAME MP3 Encoding
FFmpeg
GnuPG
OpenSSL
Bork File Encrypter

2009 Encuentro Linux

Futuro de Ext4

Soporte para archivos ralos


Soporte para archivos pequeos
Soporte para archivos muy fragmentados
Archivos mayores a 16 TiB
Creacin y asignacin dinmica de nodos-i
Nodos-i en el directorio

24-Oct.-2009

2009 Encuentro Linux

BTRFS
Sistema de archivos para Linux en
desarrollo por Oracle

Copy-On-Write
Snapshots
Manejo dinmico de dispositivos
Compresin transparente
Balance de carga
Manejo dinmico de volmenes

24-Oct.-2009

2009 Encuentro Linux

Conclusiones
Ext4 es un sistema de archivos
Compatible con sistemas Ext2 y Ext3
Robusto, eficiente y de buen desempeo
Apto para medios de almacenamiento
masivos

Ventajas se notan en sistemas con gran


nmero de archivos y/o directorios, que
ejecutan aplicaciones de alto desempeo
24-Oct.-2009

2009 Encuentro Linux

Anda mungkin juga menyukai