You are on page 1of 14

3 SISTEMAS DE ARCHIVOS ......................................................................................................

3
3.1. INTRODUCCIÓN ..................................................................................................................... 3
3.2. CARACTERÍSTICAS DE LOS SISTEMAS DE ARCHIVOS ................................................................ 4
3.3. EL SISTEMA DE ARCHIVOS FAT ............................................................................................. 5
3.4. EL SISTEMA DE ARCHIVOS NTFS ........................................................................................... 8
3.5. LOS SISTEMAS DE ARCHIVOS E XT2 Y EXT3 .......................................................................... 11
BIBLIOGRAFÍA .................................................................................................................................. 14
3 Sistemas de archivos
En este tema se introducirán los sistemas de archivos empleados en los discos duros,
prestando especial atención a la organización de la información en el disco y a las
propiedades que se derivan. Finalmente a nivel de ejemplo se presentan los sistemas de
archivos en disco más empleados en el mundo PC.
Quedan fuera de los objetivos del tema el tratar otros sistemas de archivos, como los
sistemas de archivos de red, CD/DVD, etc.
Hay dispositivos que emplean sistemas de archivos idénticos o similares a los de los discos
duros, como son las memorias extraíbles USB. Por lo tanto, la información proporcionada
también será válida para este tipo de dispositivos.
El conocimiento interno de los sistemas de archivos permitirá llevar a cabo de forma más
eficiente la recuperación de información de discos duros.

3.1. Introducción
En el tema anterior se comentó que los discos duros se particionaban con la intención de
crear islas de información, aisladas unas de otras. Cada partición no es más que un conjunto
de sectores consecutivos dentro del disco.
En el caso del PC, hay particiones primarias y particiones extendidas, hasta un máximo de
cuatro en total. Las particiones extendidas son contenedores de unidades lógicas que pueden
entenderse como particiones dentro de las unidades extendidas. Cada partición primaria o
unidad lógica puede albergar un sistema de archivos diferente.
Para que una partición albergue un determinado sistema de archivos es necesario
formatearla. Por ejemplo, Windows utiliza la utilidad format para ello, mientras que Unix
utiliza la utilidad mkfs. Durante el formateo se suele llevar a cabo una comprobación de la
superficie del disco para desechar sectores defectuosos1.
Desde el punto de vista del sistema operativo cada sistema de archivos es visto como un
volumen. El sistema operativo asocia a cada volumen un identificador único. Por ejemplo,
Windows típicamente asocia una letra a cada volumen 2 (A:, C:, etc), mientras que Unix
asocia un nombre de dispositivo a cada volumen (/dev/hda1, /dev/hda2, etc).
Un sistema de archivos no es más que una gran estructura de datos que ocupa la totalidad del
volumen, en la cual se almacenan datos, así como información de localización de estos.
Sistemas de archivos de disco duro típicos en el mundo PC son FAT16, FAT32, NTFS, Ext2
y Ext3. Durante el proceso de formateo, la gran estructura de datos que constituye el sistema
de ficheros se inicializa. Una vez una partición ha sido formateada, ésta es accesible para la
lectura y escritura de datos.
La asignación de espacio de almacenamiento dentro de un sistema de archivos no suele
hacerse sector a sector, ya que sería demasiado costosa, sino empleando un número prefijado
de sectores. La unidad mínima de asignación de almacenamiento en el sistema de ficheros

1
En el caso de Windows es la opción por defecto, mientras que en Linux debe especificarse con la opción –c
de la utilidad mkfs.
2
En el caso de sistemas de archivos NTFS, es posible montar el volumen dentro de un subdirectorio, en la línea
de los sistemas de archivos Unix.

José María López López 3


Dpto. De Informática de la Universidad de Oviedo
recibe el nombre de cluster. Por ejemplo, en el sistema de archivos NTFS el tamaño del
cluster es típicamente de 8 sectores, esto es, 4 KBytes. Por ejemplo, se asocian dos clusters a
un archivo de 7 KBytes, lo que supone un desperdicio de 1 KByte. Estadísticamente, cada
archivo desperdicia en término medio unos 2 KBytes de la partición NTFS. Se trata de una
cantidad que puede ser relevante cuando hay muchos archivos pequeños, pero poco
importante cuando los archivos son grandes 3 . Normalmente, la herramienta de formateo
empleada elige el tamaño del cluster en función del tamaño del volumen, salvo que el
usuario especifique su valor.
Los sistemas de archivos admiten diferentes tamaños de sector, aunque en la práctica todos
ellos emplean sectores de tamaño 512 bytes, pues es el tamaño estándar de los discos duros
empleados en los PCs. Para nosotros el sector tendrá siempre un tamaño de 512 bytes.

3.2. Características de los sistemas de archivos


Aunque todos los sistemas de archivos persiguen el mismo propósito, no todos incorporan la
misma funcionalidad ni son igual de eficientes. A continuación, vamos a resumir las
principales características de los sistemas de archivos, las cuales servirán como base para
comparar unos con otros:
• Rendimiento. La velocidad de las operaciones de lectura y escritura en el disco no
sólo dependen de aspectos hardware del sistema como la velocidad del disco, sino
también del sistema de archivos empleado. A la hora de evaluar las mejoras de
rendimiento, debe tenerse en cuenta que estas dependen mucho del tamaño de los
archivos involucrados. Por lo general, los sistemas de archivos más modernos suelen
incorporar mejoras de rendimiento.
• Fiabilidad. Algunos sistemas de archivos son más tolerantes a fallos que otros. Por
ejemplo, hay sistemas de archivos que incluyen copias de seguridad de las estructuras
de datos clave del sistema de archivos, detectan clusters defectuosos que son
remapeados a clusters libres y llevan a cabo un registro de transaccciones 4
(journaling). La inclusión de registro de transacciones tiene un impacto negativo
sobre el rendimiento, pues la escritura en el archivo de registro tiene un coste
temporal.
• Limitaciones de tamaño. Todos los sistemas de archivos tienen limitaciones en
cuanto al tamaño máximo del sistema de archivos soportado, máximo tamaño de
archivos, máximo número de caracteres en el nombre de archivos, etc.
• Encriptación. La información se guarda en el disco de forma encriptada, lo que
dificulta la obtención de información del disco duro. La encriptación se lleva a cabo
por software, por lo que afecta negativamente al rendimiento del sistema. La clave de

3
La elección del tamaño del cluster que hace el sistema operativo es importante desde el punto del rendimiento
y la eficiencia de almacenamiento.
4
La mayor parte de las operaciones sobre disco requieren varias etapas. Por ejemplo, el borrado de un archivo
requiere eliminar la entrada de directorio correspondiente y además liberar los clusters usados de la lista
correspondiente. Si el sistema cae nada más eliminar la entrada de directorio, se pierde la consistencia del
sistema de archivos. Llevando un registro de transacciones, la transacción se puede completar cuando el
sistema arranque de nuevo y se compruebe la consistencia del sistema de archivos.

José María López López 4


Dpto. De Informática de la Universidad de Oviedo
encriptación suele guardarse en el sistema de archivos encriptada mediante una clave
del usuario.
• Compresión. Algunos sistemas de archivos permiten la compresión de archivos de
forma transparente al usuario. De nuevo, esto afecta negativamente al rendimiento
del sistema.
• Metadatos que incorpora. Los sistemas de archivos no sólo almacenan archivos
(datos), sino información acerca de los archivos (metadatos). Ejemplo de metadatos
son las fechas de creación y acceso y las listas de control de acceso.
• Cuotas. Permiten establecer límites sobre la capacidad de disco usada por usuarios o
grupos de usuarios.

3.3. El sistema de archivos FAT


Se trata un sistema de archivos muy simple en su esencia, empleado en los primeros PCs.
Actualmente se puede encontrar en tres versiones: FAT12, FAT16 y FAT32. FAT12 se
emplea típicamente en disquetes, mientras que FAT16 y FAT32 en discos duros y memorias
USB extraíbles. La diferencia básica entre los sistemas de archivos FAT12, FAT16 y FAT32
es el número de bits empleados para identificar los clusters del disco. FAT12 emplea 12 bits,
FAT16 16 bits y FAT32 32 bits, por lo que el máximo número de clusters es de 212 = 4K, 216
= 64 K y 232 = 4 G clusters, respectivamente.
En el caso de los disquetes de 1,44 Mbytes, el cluster coincide con el sector.
En el caso de los discos duros que emplean formato FAT16 o FAT32, el tamaño del cluster
suele depender del tamaño del volumen. No obstante, en ningún caso el tamaño del cluster
puede ser superior a 32 Kbytes (64 sectores). Esto plantea un límite de (64 K x 64 x 512) = 2
Gbytes para FAT16 y (4 G x 64 x 512) = 128 Tbytes para FAT32.
La organización de la información en un volumen FAT depende de si se trata de un volumen
FAT12, FAT16 o FAT32, tal como se muestra en la figura.

José María López López 5


Dpto. De Informática de la Universidad de Oviedo
El volumen FAT se divide en varias zonas consecutivas:
• Reserved Area. Se trata de una zona que define el punto de entrada al sistema de
archivos así como sus parámetros. En el caso de un volumen FAT12 o FAT16 tiene
un tamaño de 1 sector, es decir, coincide con el sector de arranque. En el caso de un
volumen FAT32 puede tomar cualquier valor positivo, especificado en el sector de
arranque. El área reservada contiene los siguientes sectores:
o Sector de arranque, ubicado en el primer sector del volumen. Está dividido en
los siguientes campos:
§ Salto al código de arranque (bytes 0h a 2h).
§ Cadena de texto que identifica el SO o fabricante (bytes 3h a Ah).
§ BIOS Parameter Block (BPB). Describe la geometría del volumen y
características básicas del sistema de archivos (bytes Bh a 59h).
§ Código de arranque (bytes 5Ah a 1FDh).
§ Firma 55AAh (bytes 1FEh y 1FFh).
o FSInfo Sector. Se trata de un sector que especifica el número de clusters libres
así como una pista para buscar el próximo cluster libre5. Esta característica
está presente sólo en el sistema de archivos FAT32.
o Backup del sector de arranque. Se almacena en el sector 6 y contiene una
copia del primer sector, por si éste se estropea. Esta característica está
presente sólo en el sistema de archivos FAT32.
A continuación se muestra un ejemplo de sector de arranque FAT32.
0000 EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 10 24 00 .X.MSDOS5.0...$.
0010 02 00 00 00 00 F8 00 00 3F 00 FF 00 3F 00 00 00 ........?...?...
0020 1D 91 11 01 2A 22 00 00 00 00 00 00 02 00 00 00 ....*"..........
0030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040 80 00 29 F1 9E 5E 5E 4E 4F 20 4E 41 4D 45 20 20 ..)..^^NO NAME
0050 20 20 46 41 54 33 32 20 20 20 33 C9 8E D1 BC F4 FAT32 3.....
0060 7B 8E C1 8E D9 BD 00 7C 88 4E 02 8A 56 40 B4 08 {......|.N..V@..
0070 CD 13 73 05 B9 FF FF 8A F1 66 0F B6 C6 40 66 0F ..s......f...@f.
0080 B6 D1 80 E2 3F F7 E2 86 CD C0 ED 06 41 66 0F B7 ....?.......Af..
0090 C9 66 F7 E1 66 89 46 F8 83 7E 16 00 75 38 83 7E .f..f.F..~..u8.~
00A0 2A 00 77 32 66 8B 46 1C 66 83 C0 0C BB 00 80 B9 *.w2f.F.f.......
00B0 01 00 E8 2B 00 E9 48 03 A0 FA 7D B4 7D 8B F0 AC ...+..H...}.}...
00C0 84 C0 74 17 3C FF 74 09 B4 0E BB 07 00 CD 10 EB ..t.<.t.........
00D0 EE A0 FB 7D EB E5 A0 F9 7D EB E0 98 CD 16 CD 19 ...}....}.......
00E0 66 60 66 3B 46 F8 0F 82 4A 00 66 6A 00 66 50 06 f`f;F...J.fj.fP.
00F0 53 66 68 10 00 01 00 80 7E 02 00 0F 85 20 00 B4 Sfh.....~.... ..
0100 41 BB AA 55 8A 56 40 CD 13 0F 82 1C 00 81 FB 55 A..U.V@........U
0110 AA 0F 85 14 00 F6 C1 01 0F 84 0D 00 FE 46 02 B4 .............F..
0120 42 8A 56 40 8B F4 CD 13 B0 F9 66 58 66 58 66 58 B.V@......fXfXfX
0130 66 58 EB 2A 66 33 D2 66 0F B7 4E 18 66 F7 F1 FE fX.*f3.f..N.f...
0140 C2 8A CA 66 8B D0 66 C1 EA 10 F7 76 1A 86 D6 8A ...f..f....v....
0150 56 40 8A E8 C0 E4 06 0A CC B8 01 02 CD 13 66 61 V@............fa
0160 0F 82 54 FF 81 C3 00 02 66 40 49 0F 85 71 FF C3 ..T.....f@I..q..
0170 4E 54 4C 44 52 20 20 20 20 20 20 00 00 00 00 00 NTLDR .....
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A0 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A 43 61 ..............Ca
01B0 6E 6E 6F 74 20 73 74 61 72 74 2E 20 20 52 65 6D nnot start. Rem
01C0 6F 76 65 20 6D 65 64 69 61 2E FF 0D 0A 44 69 73 ove media....Dis
01D0 6B 20 65 72 72 6F 72 FF 0D 0A 50 72 65 73 73 20 k error...Press
01E0 61 6E 79 20 6B 65 79 20 74 6F 20 72 65 73 74 61 any key to resta
01F0 72 74 0D 0A 00 00 00 00 00 AC CB D8 00 00 55 AA rt............U.

5
Típicamente incluye el número del último cluster que has sido asignado.

José María López López 6


Dpto. De Informática de la Universidad de Oviedo
• Root Directory. Se trata del directorio raíz del volumen. Si el sistema de archivos es
FAT12 o FAT16 se encuentra fuera del área de datos, justo después de las FATs y su
tamaño se especifica en el BPB. Si el sistema de archivos es FAT32 se encuentra
dentro del Data Area y el cluster de comienzo se especifica en el BPD. En cualquier
caso, cada una de sus entradas tiene un tamaño de 32 bytes.
• Data Area. Contiene todos los datos y metadatos de los archivos y directorios del
volumen. Los clusters de este área se numeran comenzando por el 2. En el caso de
los volúmenes FAT32 el cluster 2 se emplea como primer cluster del directorio raíz,
salvo que éste sea defectuoso, en cuyo caso suele elegirse el siguiente6.
• FAT Area. Este área suele contener dos FATs. La segunda FAT es una réplica de la
primera, la cual pasa a emplearse cuando la primera resulta inservible. Cada FAT es
una tabla con entradas de 12, 16 ó 32 bits, dependiendo del tipo de sistema de
archivos FAT. Cada entrada de la FAT almacena un número de cluster que indica
típicamente el siguiente cluster de datos del archivo o directorio. Hay valores
especiales de cluster que indican un cluster defectuoso, un cluster reservado, un
cluster que no ha sido usado, o un finalizador para indicar el final del archivo o
directorio. Cada directorio y archivo, excepto el directorio raíz, tiene asociado un
cluster inicial, definido por el directorio padre que lo contiene.
Debe tenerse en cuenta que al final del volumen puede haber sectores no usados que no
alcanzan el número suficiente para formar un cluster.
Un directorio no es más que un archivo especial cuyos datos se organizan en entradas. Cada
una de las entradas de directorio tiene un tamaño de 32 bytes, en las cuales se almacena el
nombre de un archivo/subdirectorio, número de su primer cluster y otro tipo de metadata
como fecha de creación, tamaño7, etc.
La figura muestra un ejemplo de ubicación del archivo /dir1/file1.txt en el sistema de
archivos FAT.

6
El hecho de que el directorio raíz no tenga que ir ubicarse en unos sectores fijos es útil en presencia de
sectores defectuosos y le permite crecer o decrecer en función del número de entradas necesarias, como
cualquier otro archivo o directorio.
7
El tamaño máximo del archivo es de 4 GBytes, pues la entrada de directorio especifica el tamaño con 4 bytes.

José María López López 7


Dpto. De Informática de la Universidad de Oviedo
Los nombres de directorios FAT están formados a los sumo por 8 caracteres ASCII, mientras
que los nombres de archivos FAT están formados a lo sumo por 8+3 caracteres ASCCI, 8
para el nombre y 3 para la extensión.
En una revisión posterior de los sistemas de archivos FAT, a la que se conoce como VFAT,
se añadió un nuevo tipo de entrada de directorio que permite emplear nombres de archivo y
directorio largos de hasta 255 caracteres UNICODE de 16 bits.

3.4. El sistema de archivos NTFS


Los sistemas de archivos FAT son muy sencillos y no proporcionan ninguna de las
características de los sistemas de archivos modernos, tales como journaling, cuotas,
seguridad, etc. Su única ventaja es la velocidad en volúmenes pequeños. A día de hoy los
sistemas de archivos FAT se emplean solamente en memorias USB extraíbles y disquetes.
Microsoft con la introducción del sistema operativo Windows NT, precursor de las versiones
actuales de Windows, introdujo un nuevo sistema de archivos denominado NTFS. Pocos
años después se convirtió en el sistema de archivos para discos duros estándar en todas las
versiones de Windows. Uno de los problemas actuales de este sistema de archivos es que
Microsoft, su creador, no ha publicado una especificación completa de dicho sistema de
archivos, sino sólo ciertas partes del mismo 8.
La idea clave del sistema de archivos NTFS es que los metadatos se almacenan también en
archivos. Por lo tanto, las estructuras de control del sistema de archivos no están
almacenadas en lugares prefijados, sino que al ser archivos, pueden ubicarse en cualquier
lugar del disco, como cualquier otro archivo. La única excepción es el archivo $Boot,
ubicado al principio del volumen.
La estructura de datos clave del sistema de archivos NTFS es la MFT (Master File Table).
Se trata de un archivo de nombre $MFT que contiene al menos una entrada por cada archivo
y directorio del sistema. La ubicación del archivo MFT está definida en el archivo $Boot.
El volumen NTFS está dividido en las zonas mostradas en la figura.

NTFS
Copia del
sector de
$Boot Datos
arranque

La zona de datos incluye todos los archivos NTFS excepto el archivo $Boot.
Al final del volumen NTFS se deja una copia del primer sector del volumen, pues en caso de
pérdida, el volumen sería inaccesible.
El archivo $Boot es el único archivo NTFS ubicado en una posición fija dentro del volumen.
Está formado por los 16 primeros sectores del volumen. El primero de sus sectores es el

8
En la actualidad uno de los grupos de desarrollo de Linux está trabajando en obtener la máxima información
posible sobre la especificación NTFS, para completar el driver NTFS de Linux. http://www.linux-ntfs.org

José María López López 8


Dpto. De Informática de la Universidad de Oviedo
sector de arranque del volumen NTFS, el cual coincide con el primer sector del cluster 0. Por
lo tanto, el archivo $Boot comienza en el cluster 0.
Durante el arranque desde la partición NTFS, el sector de arranque anterior es cargado en
memoria y se lleva a cabo un salto a la primera posición en memoria del sector. En la
primera posición se encuentra una instrucción de salto que produce el salto a la posición la
primera instrucción del Initial Program Loader (IPL). El IPL es el fragmento de código que
comienza en la posición 0054h y termina en la posición 01FDh del sector de arranque. Su
misión es cargar el archivo ntldr que arranca el sistema operativo. Esto requiere la lectura
previa de la MTF, para localizar el directorio raíz del sistema de archivos NTFS y así poder
localizar el archivo ntldr y cargarlo en memoria. Debido a la complejidad de acceso al
sistema de ficheros NTFS, el IPL carga en memoria los 15 sectores siguientes9, los cuales
constituyen la extensión del IPL, y prosigue la ejecución. En un momento dado de su
ejecución, el IPL carga en memoria el archivo ntldr y le transfiere el control.
Al final del sector de arranque se encuentra la firma 55AAh. La figura muestra un ejemplo
de sector de arranque del volumen.
0000 EB 52 90 4E 54 46 53 20 20 20 20 00 02 08 00 00 ëR NTFS .....
0010 00 00 00 00 00 F8 00 00 3F 00 FF 00 3F 00 00 00 .....ø..?...?...
0020 00 00 00 00 80 00 80 00 FD 25 9C 00 00 00 00 00 ....€.€.ý%œ.....
0030 04 00 00 00 00 00 00 00 5F C2 09 00 00 00 00 00 ........_Â......
0040 F6 00 00 00 01 00 00 00 5E EE 3A D8 12 3B D8 98 ö.......^î:Ø.;ؘ
0050 00 00 00 00 FA 33 C0 8E D0 BC 00 7C FB B8 C0 07 ....ú3ÀŽÐ¼.|û¸À.
0060 8E D8 E8 16 00 B8 00 0D 8E C0 33 DB C6 06 0E 00 ŽØè..¸..ŽÀ3ÛÆ...
0070 10 E8 53 00 68 00 0D 68 6A 02 CB 8A 16 24 00 B4 .èS.h..hj.ËŠ.$.´
0080 08 CD 13 73 05 B9 FF FF 8A F1 66 0F B6 C6 40 66 .Í.s.¹..Šñf.¶Æ@f
0090 0F B6 D1 80 E2 3F F7 E2 86 CD C0 ED 06 41 66 0F .¶Ñ€â?÷â†ÍÀí.Af.
00A0 B7 C9 66 F7 E1 66 A3 20 00 C3 B4 41 BB AA 55 8A ·Éf÷áf£ .ôA»ªUŠ
00B0 16 24 00 CD 13 72 0F 81 FB 55 AA 75 09 F6 C1 01 .$.Í.r. ûUªu.öÁ.
00C0 74 04 FE 06 14 00 C3 66 60 1E 06 66 A1 10 00 66 t.þ...Ãf`..f¡..f
00D0 03 06 1C 00 66 3B 06 20 00 0F 82 3A 00 1E 66 6A ....f;. ..‚:..fj
00E0 00 66 50 06 53 66 68 10 00 01 00 80 3E 14 00 00 .fP.Sfh....€>...
00F0 0F 85 0C 00 E8 B3 FF 80 3E 14 00 00 0F 84 61 00 .…..è³.€>....„a.
0100 B4 42 8A 16 24 00 16 1F 8B F4 CD 13 66 58 5B 07 ´BŠ.$...‹ôÍ.fX[.
0110 66 58 66 58 1F EB 2D 66 33 D2 66 0F B7 0E 18 00 fXfX.ë-f3Òf.·...
0120 66 F7 F1 FE C2 8A CA 66 8B D0 66 C1 EA 10 F7 36 f÷ñþŠÊf‹ÐfÁê.÷6
0130 1A 00 86 D6 8A 16 24 00 8A E8 C0 E4 06 0A CC B8 ..†ÖŠ.$.ŠèÀä..̸
0140 01 02 CD 13 0F 82 19 00 8C C0 05 20 00 8E C0 66 ..Í..‚..ŒÀ. .ŽÀf
0150 FF 06 10 00 FF 0E 0E 00 0F 85 6F FF 07 1F 66 61 .........…o...fa
0160 C3 A0 F8 01 E8 09 00 A0 FB 01 E8 03 00 FB EB FE Ã ø.è.. û.è..ûëþ
0170 B4 01 8B F0 AC 3C 00 74 09 B4 0E BB 07 00 CD 10 ´.‹ð¬<.t.´.»..Í.
0180 EB F2 C3 0D 0A 41 20 64 69 73 6B 20 72 65 61 64 ëòÃ..A disk read
0190 20 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 00 error occurred.
01A0 0D 0A 4E 54 4C 44 52 20 69 73 20 6D 69 73 73 69 ..NTLDR is missi
01B0 6E 67 00 0D 0A 4E 54 4C 44 52 20 69 73 20 63 6F ng...NTLDR is co
01C0 6D 70 72 65 73 73 65 64 00 0D 0A 50 72 65 73 73 mpressed...Press
01D0 20 43 74 72 6C 2B 41 6C 74 2B 44 65 6C 20 74 6F Ctrl+Alt+Del to
01E0 20 72 65 73 74 61 72 74 0D 0A 00 00 00 00 00 00 restart........
01F0 00 00 00 00 00 00 00 00 83 A0 B3 C9 00 00 55 AA ........ƒ ³É..Uª

Las posiciones 0003h a 000Ah definen una etiqueta de texto que identifica el sistema de
archivos o fabricante, en este caso NTFS. Esta etiqueta resulta muy útil para buscar una
partición NTFS que ha sido eliminada y así poder recuperarla. Las posiciones 0183h a
01FDh incluyen mensajes de error del IPL. Las posiciones 1FEh y 1FFh contienen la firma
55AAh. Las posiciones 000Bh a 0053h contienen el BIOS Parameter Block (BPB), el cual

9
Los últimos 15 sectores constituyen la extensión del IPL (aunque en la práctica sólo se usan los 5 primeros).
Los 16 sectores en total forman parte del archivo $Boot del sistema de ficheros NTFS.

José María López López 9


Dpto. De Informática de la Universidad de Oviedo
describe la geometría de la partición y características básicas del sistema de archivos NTFS,
como es la ubicación del archivo $MFT.
El archivo de sistema $MTF es la pieza clave del sistema de archivos NTFS, pues indica
donde se pueden encontrar los archivos y los directorios. Cada archivo o directorio tiene al
menos una entrada en la MFT. El tamaño de estas entradas se especifica en el sector de
arranque del volumen, aunque en la práctica son siempre de tamaño 1Kbyte.
Toda la información administrativa del sistema de archivos se almacena en unos archivos
denominados archivos de metadata. Las primeras entradas de la MFT están reservadas para
estos archivos. A continuación aparece la lista de archivos de metadata ordenados a partir de
su índice en la MTF, comenzando por el índice 0: $MFT, $MFTMirr, $LogFile, $Volume,
$AttrDef, . (directorio raíz), $Bitmap, $Boot, $BadClus$, $Secure, $Upcase, $Extend.
Como se puede observar, el archivo $MFT tiene la entrada 0 dentro de la MFT (es decir, la
MFT se describe a si misma a través de dicha entrada). La entrada 5 se corresponde con el
directorio raíz. La entrada $Extend se corresponde con un directorio empleado para poder
añadir más archivos de metadata. En la práctica incluye los archivos de metadata $Objid y
$Quota.
Cada entrada de la MFT tiene una estructura como la de la figura:

Cada entrada de la MFT comienza con una cabecera. Cabe destacar que al principio de dicha
cabecera se encuentra el texto “FILE” para cualquier archivo o directorio10. A continuación
de la cabecera vienen los atributos, los cuales son estructuras de datos que almacenan un tipo
de datos específico. Prácticamente todo son atributos, desde el nombre de un archivo, fecha
de creación e incluso su contenido. Cada atributo tiene una cabecera que lo identifica y un
contenido justo después. Cuando todos los atributos no caben en la entrada de la MFT, lo
cual es habitual, la cabecera indica los clusters en los que se encuentra.
El archivo $MFT comienza con un tamaño inicial y crece progresivamente según se van
creando nuevos archivos y directorios. Los clusters al lado de la MFT son los últimos en
asignar, para evitar la fragmentación de la MFT cuando esta crece.
El archivo $MFTMirror contiene una copia de las primeras entradas de la MFT, en la
práctica, las 4 primeras entradas: $MFT, $MFTMirr, $LogFile y $Volume. Suele ubicarse en

10
La excepción ocurre cuando se ejecuta la utilidad chkdsk y ésta detecta una incoherencia, marcando la
entrada como “BAAD” (inválida).

José María López López 10


Dpto. De Informática de la Universidad de Oviedo
el centro del volumen para poder ser accedido en caso de que el archivo $MFT esté corrupto
o inaccesible.
El archivo $LogFile contiene el registro de las transacciones llevadas a cabo en el disco.
El archivo $Volume contiene información sobre el volumen como la etiqueta.
El archivo $AttrDef contiene información sobre los atributos, tales como sus nombres, sus
identificadores y sus tamaños.
El archivo $Bitmap contiene información sobre el estado de cada cluster. Dispone de un bit
para cada cluster que indica si está asignado o no.
El archivo $Badclus contiene una lista con los clusters defectuosos.
El archivo $Secure contiene información de seguridad y control de acceso a los archivos y
directorios.
El archivo $Upcase contiene la versión mayúscula de cada carácter Unicode.
El archivo $Objid contiene una lista de atributos de un cierto tipo empleados en el volumen.
El archivo $Quota lleva la contabilidad de las cuotas de disco.

3.5. Los sistemas de archivos Ext2 y Ext3


Se trata de los sistemas de archivos más empleados en Linux. Ext3 es básicamente un
sistema de archivos Ext2 al que se le ha añadido un registro de transacciones. Nos
referiremos a ellos de forma genérica como Ext.
La organización de un volumen Ext se muestra en la figura.

Los primeros 1024 bytes del volumen están reservados. Pueden contener el código de
arranque del volumen cuando el sistema operativo arranca desde el volumen11.

11
Hay volúmenes arrancables que no incluyen código de arranque. En estos casos el arranque suele hacerse a
través de un gestor de arranque, fuera del volumen.
José María López López 11
Dpto. De Informática de la Universidad de Oviedo
El resto del volumen se divide en bloques de igual tamaño. El concepto de bloque es análogo
al concepto de cluster de los sistemas de archivos FAT y NTFS.
Los bloques se organizan en grupos, conteniendo todos ellos el mismo número de bloques,
excepto el último que puede ser más pequeño.
El superbloque tiene un tamaño de 1024 bytes (aunque muchos de estos bytes no los usa) y
contiene los parámetros del sistema de archivos. Es análogo al BIOS Parameter Block de los
sistemas de archivos FAT y NTFS. Todos los grupos tienen una copia del superbloque al
comienzo del grupo, aunque en la práctica sólo se utiliza el superbloque del primer grupo,
salvo que éste esté dañado 12 . El superbloque contiene información como el tamaño del
bloque, el número de bloques del sistema, nombre del volumen, fecha y hora en la que se
montó por última vez el volumen, etc.
La tabla de descriptores de grupo es una tabla de tamaño 1 bloque situada después del
superbloque y comenzando en un bloque nuevo. Por lo tanto, puede haber sectores que no se
usan entre el superbloque y la tabla de descriptores. La tabla de descriptores contiene
entradas de 32 bytes que describen el grupo del que forma parte. Cada una de estas entradas
proporciona:
• Número de bloque de comienzo del bitmap de bloques,
• Número de bloque de comienzo del bitmap de inodos
• Número de bloque de comienzo de la tabla de inodos
• Número de bloques que aún no han sido asignados en el grupo.
• Número de inodos que aún no han sido asignados en el grupo.
• Número de directorios en el bloque.
La contabilidad de los bloques que han sido asignados dentro de cada grupo se lleva a cabo
con el bitmap de bloques. Cada bit del bitmap indica si un bloque del grupo ha sido asignado
o no. El bit 0 de su primer byte está asociado al bloque 0, el bit 7 de su primer byte al bloque
8, el bit 0 de su segundo byte al bloque 9 y así sucesivamente. El bitmap de bloques
comienza justo después de la tabla de descriptores del grupo y tiene un tamaño de 1 bloque.
Para comprender el funcionamiento del bitmap de nodos y la tabla de inodos es necesario
conocer el concepto de inodo.
Cada archivo y directorio en el sistema tiene asociado un inodo almacenado en la tabla de
inodos de un grupo. El inodo es una estructura de datos (metadatos) de tamaño 128 bytes13.
El inodo contiene toda la información necesaria sobre un archivo o directorio, salvo los datos
que contiene. Por ejemplo, define los permisos, la fecha de creación, direcciones a los
bloques de datos, etc.
Cada inodo puede almacenar 12 punteros directos a bloques de datos, así como un puntero
de simple indirección, un puntero de doble indirección y un puntero de triple indirección. Si
un archivo o directorio requiere 12 bloques o menos se emplean los doce punteros directos.
Si por ejemplo un archivo requiere más de 12 bloques de datos, puede usarse 1 puntero de

12
La excepción está cuando se emplea la característica sparse superblock del sistema de archivos, en cuyo
caso, sólo alguno de los grupos contiene una copia del superbloque.
13
Si se emplea la versión dinámica de Ext2/Ext3 el tamaño del inodo puede ser variable.

José María López López 12


Dpto. De Informática de la Universidad de Oviedo
simple indirección que apunta a un bloque que almacena punteros directos de bloques. La
figura muestra gráficamente los conceptos de indirección.
Cuando alguno de los punteros del inodo toma el valor cero, se supone que la información
del bloque o bloques asociados es cero. Esto resulta muy útil en el caso de archivos con
muchos ceros consecutivos o archivos que han sido creados con un cierto tamaño pero no
han sido escritos.

Los directorios no son más que archivos especiales que almacenan listas de entradas en sus
bloques de datos. Cada entrada contiene un número de inodo, la longitud de la entrada, la
longitud del nombre, el nombre del archivo y opcionalmente el tipo de archivo. La figura
muestra un ejemplo simplificado de directorio

En la figura anterior puede observarse además como hay dos entradas del directorio que
apuntan al mismo inodo. A esto se le conoce como hard link. Básicamente consiste en tener
dos nombres para el mismo archivo o directorio14.

14
Symbolic links o soft links son simplemente archivos que contienen dentro de sus datos el nombre de otro
archivo o directorio.

José María López López 13


Dpto. De Informática de la Universidad de Oviedo
Una vez ha sido explicado el concepto de inodo se puede entender en que consiste la tabla de
inodos de un grupo y su bitmap.
La tabla de inodos comienza en el bloque indicado en el descriptor del grupo y tiene un
tamaño especificado en el superbloque. Cada una de sus entradas es un inodo que hace
referencia a un archivo o directorio. Las primeras entradas de la tabla están reservadas. Por
ejemplo, la entrada número 2 contiene el inodo del directorio raíz.
El bitmap de inodos tiene un tamaño de 1 bloque y funciona de forma análoga al bitmap de
bloques. Cada entrada de la tabla de inodos tiene asociado un bit que se activa cuando la
entrada es usada o se trata de una entrada reservada.
Finalmente, comentar que Ext3 para llevar a cabo el registro de transacciones emplea un
archivo cuyo inodo es típicamente el número 8, aunque se puede especificar en el
superbloque.

Bibliografía
Se recomienda el siguiente libro:
“File System Forensic Analysis” by Brian Carrier. Addison Wesley Professional, 2005.
ISBN: 0-32-126817-2

Sobre los sistemas de archivos FAT, la fuente más completa es


“FAT32 File System Specification”, Version 1.03, 2000. Microsoft Corporation.
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

Sobre NTFS http://www.linux-ntfs.org

Sobre Ext2 http://www.nongnu.org/ext2-doc/ext2.html

José María López López 14


Dpto. De Informática de la Universidad de Oviedo

You might also like