El documento describe los sistemas de archivos ext4 y ISO9660. Ext4 es el cuarto sistema de archivos extendido para Linux que ofrece mejoras como mayor tamaño de volumen y archivos, mejor rendimiento y compatibilidad con versiones anteriores. ISO9660 es el sistema de archivos para discos ópticos como CDs y DVDs, el cual almacena la información en sectores y utiliza descriptores de volumen para describir la estructura del disco.
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas de archivos ext y discos opticos
1. Sistemas de archivos ext4 de
Linux y para discos ópticos
Arámburo Cabada Joseph David
Chávez Sierra Juan Paúl
Hernández Castaños Gabriela
Leyva Bujons Iván Alberto
2. ¿Qué es un sistema de archivos?
El sistema de archivos o ficheros (filesystem - FS)
es el componente del sistema operativo
encargado de administrar y facilitar el uso de
las memorias periféricas, ya sean secundarias o
terciarias.
3. ¿ Cuáles son las principales funciones
de un FS?
La asignación de espacio a los archivos.
La administración del espacio libre.
El acceso a los datos resguardados.
4. ¿Cómo funcionan los FS?
Sistemas de archivos ven un medio de
almacenamiento masivo como un vector de
bloques.
Bloques típicamente son de 1, 2 o 4 KB.
Datos se almacenan en sectores de 512
bytes .
5. ¿Cómo almacenan los SF?
Nodo índice contiene índices
de los bloques de datos
Nombre se almacena en el
directorio
6. ¿Qué son los sistemas de archivos
extendidos?
El sistema de archivos extendido (extended file
system o ext), fue el primer sistema de archivos
creado específicamente para el sistema
operativo Linux. Fue diseñado por Rémy Card
para vencer las limitaciones del sistema de
archivos MINIX.
7. Un poco de historia: sf ext
Liberado en 1992 para reemplazar MINIX FS.
Sistema de archivos de tamaño máximo 4 TB.
Archivos de tamaño máximo 2 GB.
Nombres de archivos de 255 caracteres.
Maneja bloques libres y nodos-I como listas
encadenadas.
8. Un poco de historia: sf ext2
Aparece en 1993.
Sistema de archivos de tamaño máximo 4 TB.
Archivos de tamaño máximo 2 GB.
Directorios de tamaño variable.
Nombres de archivos de 255 caracteres.
Eficiente y robusto.
9. Un poco de historia: sf ext3
Partición Ext3 puede ser montada como
partición Ext2.
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.
10. Sistemas de archivos ext4
El cuarto sistema de archivos extendido
denominado ext4 es un sistema de archivos con
bitácora (Journal) que fue concebida como
una mejora compatible de ext3.
11. ¿Cuándo fue liberado ext4?
Ext4 estuvo disponible a partir del Kernel Linux
2.6.19, pero fue publicado como estable el 25
de diciembre de 2008 en la versión 2.6.28 del
núcleo Linux y desde entonces se encuentra
disponible para el uso en sistemas de
producción.
12. Características principales de ext4
Soporte de volúmenes de hasta 1 exabyte (260
bytes) y archivos con tamaño hasta 16
terabytes.
Menor uso del CPU.
Mejoras en la velocidad de lectura y escritura.
13. Características principales de ext4
(cont)
El tamaño global máximo del sistema de
archivos ext4 es un EB (Exabyte). 1 EB = 1024 PB
(petabyte). 1 PB = 1024 TB (terabyte).
El directorio puede contener un máximo de
64.000 subdirectorios (en comparación con
32.000 en ext3).
14. Extents
Reemplazan al tradicional esquema de bloques
usado por los sistemas de archivos ext2/3.
Un extent es un conjunto de bloques físicos
contiguos, mejorando el rendimiento al trabajar
con archivo de gran tamaño y reduciendo la
fragmentación.
Un extent simple en ext4 es capaz de mapear hasta
128MB de espacio contiguo con un tamaño de
bloque igual a 4KB.
15. Extents (cont)
Extents están configurados por defecto desde
la versión del kernel 2.6.23.
Anteriormente, esta opción requería ser
activada explícitamente (por ejemplo mount
/dev/sda1 /mnt/point -t ext4dev -o extents).
16. Creando un archivo ext4
Un nuevo sistema de archivos ext4 puede ser
creado mediante el siguiente comando:
mkfs.ext4 /dev/device
Donde "device" representa el nombre del
dispositivo por bloques donde se creará el
sistema de archivos ext4.
17. Compatibilidad hacia adelante
El sistema de archivos ext3 es compatible
adelante con ext4, siendo posible montar un
sistema de archivos ext3 como ext4 y usarlo
transparentemente.
18. Compatibilidad hacia atrás
Ext4 es parcialmente compatible hacia atrás
con ext3 ya que puede ser montado como una
partición ext3 con la excepción de que si la
partición ext4 usa extents, se pierde esta
posibilidad.
19. Asignación persistente de espacio
“preallocate()”
Ext4 permite la reserva de espacio en disco
para un archivo.
El espacio reservado para estos archivos
quedará garantizado y con mucha
probabilidad será contiguo. Ésta función tiene
útiles aplicaciones en streaming y bases de
datos.
20. Asignación retrasada de espacio
“Allocate-on-flush”
Consiste en retrasar la reserva de bloques de
memoria hasta que la información esté a punto
de ser escrita en el disco, a diferencia de otros
sistemas de archivos, los cuales reservan los
bloques necesarios antes de ese paso.
21. Limite de subdirectorios aumentado
“htree”
En ext3 el nivel de profundidad en subdirectorios
permitido estaba limitado a 32000. Este límite ha
sido aumentado a 64000 en ext4, permitiendo
incluso ir más allá de este límite.
Htree está activado por defecto en ext4 desde
la versión 2.6.23.
22. Journal checksumming
ext4 usa checksums en el registro para mejorar
la fiabilidad, puesto que el journal es uno de los
ficheros más utilizados en el disco. Esta función
tiene un efecto colateral beneficioso: permite
de forma segura evitar una lectura/escritura de
disco durante el proceso de registro en el
journal, mejorando el rendimiento ligeramente.
23. Desfragmentación online
Incluso haciendo uso de diversas técnicas para
evitar la fragmentación, un sistema de larga
duración tiende a fragmentarse con el tiempo.
Ext4 dispone de una herramienta que permite
desfragmentar archivos individuales o sistemas
de archivos enteros.
24. Chequeo del sistema de ficheros más
rápido “e2sfck”
En ext4, los grupos de bloques no asignados y
secciones de la tabla de i-nodos están
marcados como tales. Esto permite a e2fsck
saltárselos completamente en los chequeos y
en gran medida reduce el tiempo requerido
para chequear un sistema de archivos del
tamaño para el que ext4 está preparado. Esta
función está implementada desde la versión
2.6.24 del kernel de Linux.
25. Asignador multibloque
Ext4 asigna múltiples bloques para un archivo
en una sola operación, lo cual reduce la
fragmentación al intentar elegir bloques
contiguos en el disco.
El asignador multibloque está activo cuando se
usa 0_DIRECT o si la asignación retrasada está
activa.
26. Timestamps mejorado
Puesto que los ordenadores se tornan en
general cada vez más rápidos y que Linux está
pasando a ser cada vez más usado en
aplicaciones críticas, la granularidad de los
timestamps basados en segundos se está
volviendo insuficiente.
27. Timestamps mejorado (cont)
Para resolver esto, ext4 tendrá timestamps
medidos en nanosegundos. Ésta función está
actualmente implementada en la versión 2.6.23
del kernel. Adicionalmente se han añadido 2
bits del timestamp extendido a los bits más
significativos del campo de segundos de los
timestamps para retrasar casi 500 años el
problema del año 2038.
28.
29. Sistema de archivos para discos
ópticos “ISO9660”
Bajo DOS (y Windows, que utiliza el sistema de
ficheros del DOS) los ficheros se escriben tanto
en discos duros como en disquetes mediante el
sistema de ficheros FAT . Los ficheros en un CD-
ROM, sin embargo, se escriben con un estándar
diferente, denominado ISO9660.
30. Diferencias entre los sf en FAT e
ISO9660
La estructura de directorio de un CD-ROM es
casi exactamente igual a la de un disco duro o
disquete bajo DOS. Por esta razón, las
aplicaciones del DOS y Windows pueden leer
ficheros desde un CD-ROM casi como si lo
hicieran desde un disco duro o disquete.
31. Diferencias entre los sf en FAT e
ISO9660 (cont)
El directorio raíz contiene las conocidas entradas de
directorio "." y "..", como cualquier otro directorio.
No existe límite, salvo el de la capacidad del propio
disco, para el tamaño del directorio raíz.
La cantidad de directorios anidados (padre-hijo) está
limitada a 8 niveles, incluyendo el raíz.
Si un CD-ROM se va a usar con el DOS, los nombres de
archivos deben ser del tipo 8.3, aunque la ISO9660
soporta nombres más largos.
32. Diferencias entre los sf en FAT e
ISO9660 (cont)
La ISO9660 permite únicamente letras mayúsculas,
dígitos y guiones de subrayado en un nombre de
archivos o directorio, aunque DOS permite más tipos de
caracteres.
La ISO9660 permite que el nombre de un archivo sea
solo su extensión. El DOS no.
El DOS permite que los directorios tengan extensión. La
ISO9660 no.
Los directorios de un CD-ROM se ordenan siempre, tal y
como se describe más abajo.
33. Sectores
La información de un CD-ROM se divide en
sectores, que son numerados
consecutivamente, comenzando por cero. No
hay espacios en blanco en la numeración.
Cada sector contiene 2048 bytes.
34. Sectores (cont)
Cuando se va a leer un número determinado
de sectores del CD-ROM, se ha de hacer en
orden de sector creciente, si es posible, ya que
es el orden en el que pasan bajo el cabezal de
lectura. La mayoría de implementaciones
disponen la información consecutivamente, de
forma que los sectores puedan ser leídos en
este orden más tarde, aunque la ISO9660 no lo
requiere siempre.
35. Sectores (cont)
El orden de los bytes dentro de un sector es el
orden en el que aparecen cuando se leen en
memoria, es decir, los "primeros" bytes se leen
en las direcciones de memoria más bajas. Este
es también el orden utilizado en este
documento, es decir, los "primeros" bytes en
cualquier lista aparecen al final de la lista.
36. Conjuntos de Caracteres
Los nombres y las extensiones de los archivos y
directorios, la etiqueta de volumen y algunos
otros nombres se expresan en código ASCII. Sin
embargo, DOS permite otros caracteres, que
algunas veces se encuentran en CD-ROMs.
37. Ordenar los Nombres y las Extensiones
Cuando la ISO9660 quiere ordenar los nombres
o extensiones de los archivos o directorios, se
utiliza la secuencia de agrupamiento y
comparación ASCII. Es decir, dos nombres o
extensiones diferentes se comparan de la
siguiente forma:
38. Ordenar los Nombres y las Extensiones
(cont)
Se añade espacios ASCII (32) al extremo
derecho del nombre o extensión cortos, si es
necesario, para hacerlos como nombres o
extensiones largos
La primera posición (extremo izquierdo) en que
los nombres difieren determina el orden. El
nombre o extensión con código ASCII menor en
dicha posición, aparecerá primero en la lista.
39. Los Primeros 16 Sectores están Vacíos
Los primeros 16 sectores (sectores 0 a 15) no
contienen más que ceros. La ISO9660 no define
el contenido de estos sectores, pero para DOS
parece ser que siempre se llenan con ceros.
Suponemos que se reserva este espacio para
utilizarlo con sistemas que se pueden iniciar
desde un CD-ROM.
40. Descriptores de Volumen
El sector 16 y unos cuantos más de los
siguientes, contienen un conjunto, una serie de
descriptores de volumen. Existen diversos tipos
de descriptores de volumen, pero sólo dos se
usan normalmente en MS-DOS. Cada descriptor
de volumen ocupa exactamente un sector.
41. Descriptores de Volumen (cont)
Los últimos descriptores de volumen de la serie
son uno o más Terminadores del Conjunto de
Descriptores de Archivos.
Los primeros siete bytes de un Terminador del
Conjunto de Descriptores de Archivos son 255,
67, 68, 48, 48, 49 y 1 respectivamente. Los otros
2041 bytes son ceros. (Los bytes 67, 68, 48, 48 y
49 son los códigos ASCII para los caracteres
CD001.)
42. Descriptores de Volumen (cont)
El único descriptor de volumen de real interés
en DOS es el Descriptor de Volumen Primario
(Primary Volume Descriptor). Debe haber uno, al
menos, y normalmente hay sólo uno. Sin
embargo, algunos CD-ROMs tienen dos o más
Descriptores de Volumen Primarios idénticos.
43. longitud
(en
bytes) contenido
1 1
6 67,68,48,48,49,1 respectivamente (igual que un Volume Descriptor Set Terminator)
1 0
32 identificador de sistema
32 identificador de volumen
8 ceros
8 número total de sectores; una palabra larga both endian
ceros
4 1; una palabra both endian [tamaño del conjunto de volúmenes]
4 1; una palabra both endian [número de secuencia del volumen]
4 2048 (tamaño del sector); una palabra both endian
8 longitud de la tabla del path en bytes; una palabra larga both endian
4 nº del primer sector en la primera tabla del path little endian; una palabra larga little endian
4 nº del primer sector en la segunda tabla del path little endian; una palabra larga little endian, o cero si no hay una segunda tabla de path little endian.
4 nº del primer sector en la primera tabla del path big endian; una palabra larga big endian
4 nº del primer sector en la segunda tabla del path big endian; una palabra larga big endian, o cero si no hay una segunda tabla de path big endian.
34 registro del directorio raíz, descrito abajo
128 identificador del conjunto de volúmenes
128 identificador del publisher
128 identificador del data preparer
128 identificador de la aplicación
37 identificador del fichero de Copyright
37 identificador del fichero abstracto (abstract file)
37 identificador del fichero bibliográfico
17 fecha y hora de creación del volumen
17 fecha y hora de la modificación más reciente (*)
17 fecha y hora en que el volumen expira (*)
17 fecha y hora en que el volumen es efectivo (*)
1 1
1 0
512 reservado para el uso de aplicaciones (generalmente ceros)
653 ceros
44. Tablas de Path
Las tablas de path vienen, generalmente, justo después
de los descriptores de volumen. Sin embargo, la ISO9660
solo requiere que cada tabla de path comience en el
sector especificado por el Descriptor de Volumen
Primario. Las tablas de path son, realmente,
redundantes, ya que toda la información que
contienen se almacena también a lo largo del CD-
ROM. Sin embargo, su uso acelera las búsquedas de
directorio.
45. Tablas de Path (cont)
Existen dos tipos de tablas de path:
una little endian, en la que se almacena valores
de bytes múltiples en orden little endian, y
una tabla big endian en la que se almacena
valores de bytes múltiples en orden big endian.
Los dos tipos de tablas de path son idénticas en
todo lo demás.
46. Tablas de Path (cont)
longitud contenido
1 N, la longitud del nombre (o 1 para el directorio raíz)
1 0 [número de sectores en el registro con atributo extendido]
4 número del primer sector en el directorio, una palabra larga
2
número de registro para el directorio padre (o 1 para el directorio
raíz), una palabra; el primer registro es el número 1, el segundo el
2, etc.
N nombre (o 0 para el directorio raíz);
0/1
byte de relleno (padding byte): si N es impar, este campo contiene
un cero; si N es par, este campo se omite.
47. Directorios
Un directorio está constituido por series de
registros de directorios en uno o más sectores
consecutivos. Sin embargo, al contrario que los
registros de los paths, los registros de directorios
no pueden sobrepasar los límites de los sectores.
48. Directorios (cont)
Puede haber espacio sin utilizar al final de cada
sector, que se completa con ceros.
Cada registro de directorio representa un
archivo o directorio
49. longitud contenido
1 R, el número de bytes en el registro (que debe ser par)
1 0 [número de sectores en el registro de atributo extendido]
8
número del primer sector de los datos del fichero o directorio (cero para un fichero vacío), una palabra larga
both endian
8
número de bytes de datos de fichero o longitud del directorio, sin incluir el registro de atributo extendido;
palabra larga both endian.
1 número de año desde 1900
1 mes, donde 1=Enero, 2=Febrero, etc.
1 día del mes, en el rango 1 a 31
1 hora, en el rango 0 a 23
1 minutos, en el rango 0 a 59
1 segundos, en el rango 0 a 59 (para DOS es siempre un número par)
1
diferencia horaria con respecto a Greenwich Mean Time, en intervalos de 15 minutos; número con signo en
complemento a dos, positivo para la zonas al este de Greenwich y negativo para zonas al oeste (DOS ignora
este campo)
1 flags(*)
1 0 [tamaño de la unidad de fichero para un fichero intercalado]
1 0 [tamaño del gap de intercalado para un fichero intercalado]
4 1; una palabra both endian [número de secuencia del volumen]
1 N, la longitud del identificador
N identificador
P
byte de relleno (padding byte): si N es par, P = 1 y este campo contiene un cero; si N es impar, P = 0 y este
campo se omite.
R-33-N-P campo sin especificar para uso del sistema; debe contener un número par de bytes
50. Directorios (cont)
La longitud de un directorio incluye el espacio
sin utilizar, si lo hay, al final de cada sector. Por
tanto, siempre es un múltiplo exacto de 2048 (el
tamaño del sector). Como cada directorio,
incluso uno nominalmente vacío, contiene al
menos dos registros, la longitud de un directorio
nunca es cero.
51. Colocación de los Sectores de Datos y
los Directorios
La ISO9660 no especifica el orden de los
sectores de archivos y directorios. Sólo requiere
que el primer sector de cada directorio o
archivo esté en la localización especificada por
su registro de directorio, y que los sectores de los
directorios y los archivos no intercalados sean
consecutivos.
52. Colocación de los Sectores de Datos y
los Directorios (cont)
La mayoría de implementaciones colocan los
directorios de forma que cada directorio siga a
su padre, y los sectores de datos de los ficheros
de cada directorio vayan inmediatamente
después del directorio e inmediatamente
después de siguiente directorio.
53. Registros de Atributos Extendidos
Los registros de atributos extendidos contienen
información de archivos y directorios utilizados
por sistemas operativos que no son DOS; son
permisos y longitudes de registros lógicos.
54. Registros de Atributos Extendidos
(cont)
Un CD-ROM escrito para DOS, generalmente no
contiene ningún registro de atributo extendido.
Cuando se lee un CD-ROM que contiene
registros de atributo extendido, versiones de
MSCDEX antiguas simplemente devolvían
resultados incorrectos. Versiones posteriores
aprendieron a manejar registros de atributo
extendido.