sistemas de archivos ext y discos opticos

56
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

Upload: juan-paul-chavez-sierra

Post on 04-Aug-2015

10 views

Category:

Technology


1 download

TRANSCRIPT

Sistemas de archivos ext4 de Linux y para discos ópticosArámburo Cabada Joseph David

Chávez Sierra Juan Paúl

Hernández Castaños Gabriela

Leyva Bujons Iván Alberto

¿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.

¿ 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.

¿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 .

¿Cómo almacenan los SF?

Nodo índice contiene índices de los bloques de datos

Nombre se almacena en el directorio

¿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.

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.

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.

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.

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.

¿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.

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.

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).

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.

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).

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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:

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.

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.

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.

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.)

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.

longitud (en

bytes) contenido1 16 67,68,48,48,49,1 respectivamente (igual que un Volume Descriptor Set Terminator)1 0

32 identificador de sistema32 identificador de volumen8 ceros8 número total de sectores; una palabra larga both endian

ceros4 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 endian8 longitud de la tabla del path en bytes; una palabra larga both endian4 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 endian4 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 abajo128 identificador del conjunto de volúmenes128 identificador del publisher128 identificador del data preparer128 identificador de la aplicación37 identificador del fichero de Copyright37 identificador del fichero abstracto (abstract file)37 identificador del fichero bibliográfico17 fecha y hora de creación del volumen17 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 11 0

512 reservado para el uso de aplicaciones (generalmente ceros)653 ceros

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.

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.

Tablas de Path (cont)

longitud contenido1 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/1byte de relleno (padding byte): si N es impar, este campo contiene un cero; si N es par, este campo se omite.

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.

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

longitud contenido1 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]

8número del primer sector de los datos del fichero o directorio (cero para un fichero vacío), una palabra larga both endian

8nú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 19001 mes, donde 1=Enero, 2=Febrero, etc.1 día del mes, en el rango 1 a 311 hora, en el rango 0 a 231 minutos, en el rango 0 a 591 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 identificadorN identificador

Pbyte 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

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.

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.

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.

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.

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.

Referencias

http://www.i-nis.com.ar/tutoriales/ext4 http://www.guatewireless.org/articulos/los-sistemas-de-

archivo-de-linux-ext2-vs-ext3-vs-ext4.html http://www.taringa.net/posts/linux/2241924/Ext4-

explicado-para-todos.html http://www.mexbyte.com/armando/documentos/fs.pdf http://2009.encuentrolinux.cl/wp-content/uploads/

2009/09/evolucion_fs.pdf http://mnrf.galeon.com/i/so2/cdrom.htm

Fin de la presentación

Gracias