FAT32 es un sistema de archivos introducido en Windows 95 que supera las limitaciones de FAT16 al utilizar valores de 32 bits para las entradas de la tabla de asignación de archivos (FAT). Esto permite particiones mucho más grandes, hasta 8 terabytes teóricamente. Aunque mejora el rendimiento ligeramente frente a FAT16, no es compatible con versiones anteriores de Windows. El sector cero del disco contiene información clave sobre el sistema de archivos.
2. FAT32
Aunque el VFAT era un sistema inteligente, no
afrontaba las limitaciones de FAT16. Como
resultado, surgió un nuevo sistema de
archivos en Windows 95 OSR2 (el cual no
sólo contaba con una mejor administración
FAT como fue el caso de VFAT). Este sistema
de archivos, denominado FAT32 utiliza
valores de 32 bits para las entradas FAT.
Sólo se utilizan 28 bits, ya que 4 bits se
reservan para su uso en el futuro.
3. FAT32
Cuando surgió el sistema de archivos FAT32, el máximo número de
clústers por partición aumentó de 65535 a 268.435.455 (2 28-1). Por lo
tanto, FAT32 permite particiones mucho más grandes (hasta 8 terabytes).
Aunque en teoría, el tamaño máximo de una partición FAT32 es de 8 TB,
Microsoft lo redujo, voluntariamente, a 32 GB en los sistemas 9x de
Windows para promover NTFS. Ya que una partición FAT32 puede
contener muchos clústers más que una partición FAT16, es posible reducir
significativamente el tamaño de los clústers y, así, limitar también el
espacio desperdiciado del disco. Por ejemplo, con una partición de 2 GB,
es posible usar clústers de 4KB con sistemas FAT32 (en lugar de clústers
de 32KB con sistemas FAT16), que reducen el espacio desperdiciado por
un factor de 8.
4. FAT32
El intercambio radica en que FAT32 no es compatible con las
versiones de Windows previas al OEM Service Release 2. Un
sistema que arranque con una versión anterior simplemente
no verá este tipo de particiones.
Asimismo, las utilidades de administración de un disco de 16
bits, como ser versiones antiguas de Norton Utilities, ya no
funcionarán correctamente. En términos de realización, el uso
de un sistema FAT32 en lugar de un sistema FAT16 tendrá
como resultado una mejora, de aproximadamente 5%, en el
rendimiento.
5. Comparación de cluster
Tamaño del Sistema de Sistema de
clúster archivos FAT16 archivos FAT32
(en teoría)
512 bytes 32 MB 64 MB
1 KB 64 MB 128 MB
2 KB 128 MB 256 MB
4 KB 256 MB 8 GB
(1 TB)
8 KB 512 MB 16 GB
(2 TB)
16 KB 1 GB 32 GB
(4 TB)
32 KB 2 GB 2 GB
(8 TB)
7. FAT32
Para que un sistema operativo reconozca una
unidad de almacenamiento con el sistema de
archivos FAT32, en el primer sector lógico
tienen que encontrarse una serie de datos
sobre la unidad. Este sector se denomina
sector de arranque, Boot Sector, o sector
cero. Tras este sector hay un espacio
reservado, típicamente de 32 sectores.
8. El sector cero
Los discos con sistema de archivos FAT32 tienen información útil en el
sector cero para trabajar con ellos. Esta información se encuentra
almacenada en campos definidos por el estándar de Microsoft y su
contenido se explica a continuación.
BS_jmpBoot (Bytes del 0 al 2): Salto a la rutina de arranque.
Normalmente un disco no tendrá otra rutina de arranque que la de
escribir “Retire disco y presione una tecla” o similares, salvo que sea uno
de los denominados discos de arranque.
BS_OEMName (Del byte 3 al 10): Es sólo un string. Los sistemas
operativos Microsoft Windows escriben “MSDOS5.0”, pese a que en su
documento FAT: General Overview of On-Disk Format indican que el
string “MSWIN4.1” es el recomendado para una mayor compatibilidad.
BPB_BytsPerSec (Bytes 11 y 12): Indica el número de bytes por sector.
Lo deseado para máxima compatibilidad es 512.
9. El sector cero
BPB_SecPerClus (Byte 13): Indica el número de sectores contenidos en
un cluster. Sus valores legales son potencias de dos. El valor del
número de bytes por cluster (BPB_BytsPerSec * BPB_SecPerClus)
no debe ser mayor que 32 Kb.
Dependiendo del tamaño del disco se utilizará un valor u otro, por
ejemplo, en FAT32:
64 Mb: un cluster será un sector.
128 Mb: un cluster serán dos sectores.
256 Mb: un cluster serán cuatro sectores.
32 Gb: un cluster serán treinta y dos sectores
10. FAT32
BPB_RsvdSecCnt (Bytes 14 y 15): Indica el número de sectores reservados del volumen,
comenzando por el primer sector del volumen. Este campo no puede ser cero. Para
volúmenes FAT12 y FAT16 este campo no puede tener otro valor que uno. En sistemas
FAT32, típicamente es 32.
BPB_NumFATs (Byte 16): Número de tablas FAT en el volumen. Este campo
típicamente contiene dos para cualquier tipo de volumen FAT. Su utilidad es guardar una
copia de seguridad de las cadenas de clusters para posibilitar las recuperaciones de
datos.
BPB_RootEntCnt (Bytes 17 y 18): Contiene el número de entradas de 32 bytes al
directorio raíz. Su valor multiplicado por 32 debe ser múltiplo de BPB_BytsPerSec. Para
una máxima compatibilidad, los sistemas FAT16 suelen usar el valor 512. En sistemas
FAT32, su valor puede ser cero porque el directorio raíz se estructura como un fichero y
se direcciona en la tabla FAT.
BPB_TotSec16 (Bytes 19 y 20): Número de sectores del volumen. Si es cero, es porque
el valor es mayor o igual que 0×10000, entonces BPB_TotSec32 debe ser distinto de
cero.
11. Cómo se escribe un fichero en
un sistema de archivos FAT 32
●
Un archivo en FAT32 tiene, junto con sus atributos y nombre, el número del primer
cluster de dicho archivo. Tras leer dicho cluster, en adelante ultimoClusterProcesado; se
deberá averiguar cuál es el siguiente cluster libre en disco, en adelante siguienteCluster.
Para calcular siguienteCluster hay que tener en cuenta que ultimoClusterProcesado,
aunque no esté marcado como ocupado lo está, debiendo por ello ignorarlo en este
cómputo. Una vez concluido ultimoClusterProcesado y calculado siguienteCluster, se
escribe en la posición de FAT correspondiente a ultimoClusterProcesado el número que
apunte a siguienteCluster y así sucesivamente.
Cuando una cadena de clusters acaba, se marca fin de cadena de clusters haciendo
siguienteCluster = 0xFFFFFFF8, indicando que no hay siguiente cluster, si la cadena de
clusters se refiriese a un directorio la marca es 0x0FFFFFFF.
12. Estas y otras marcas de interés
en la FAT se listan a
continuación: