Fundamentos de los sistemas de archivos

basic concepts of varios file systems of windows, linux, macos and other

En la actualidad, el mercado informático ofrece una gran variedad de oportunidades de almacenar información en formato digital. Entre los dispositivos de almacenamiento existentes se encuentran discos duros internos y externos, tarjetas de memoria de cámaras de foto y vídeo, memorias USB, grupos RAID y otros almacenamientos complejos. Los datos se guardan en ellos en formato de archivos, como documentos, imágenes, bases de datos, mensajes de correo electrónico, etc., que deben organizarse de manera eficiente en el disco y accederse fácilmente cada vez que se necesitan.

En este artículo le proporcionamos una descripción general de la noción 'sistema de archivos' y de los principales medios de gestión de datos en cualquier almacenamiento, así como explicamos las peculiaridades de diferentes tipos de sistemas de archivos.


¿Qué es un sistema de archivos?

Cualquier archivo digital se almacena en un medio de almacenamiento de una capacidad determinada. De verdad, cada almacenamiento es un espacio lineal para leer o para leer y escribir información digital. Cada byte de información tiene su offset (desplazamiento) desde el inicio del almacenamiento conocido como dirección que se utiliza para hacer referencia a él. Un almacenamiento se puede presentar como una cuadrícula con un conjunto de celdas numeradas (cada celda es un solo byte). Cualquier objeto que se guarda en un almacenamiento digital obtiene sus propias celdas.

En general, en los dispositivos digitales, se utiliza la combinación de un sector y un offset dentro del sector para hacer referencia a cualquier byte de información almacenada. Un sector es un grupo de bytes (generalmente 512 bytes), una unidad mínima direccionable de un almacenamiento físico. Por ejemplo, el byte 1040 en una unidad de disco duro será indicado como un sector #3 y un offset en el sector 16 bytes ([sector]+[sector]+[16 bytes]). Este esquema se utiliza para optimizar el direccionamiento del almacenamiento y utilizar un número menor para referirse a cualquier fragmento de información en el almacenamiento.

Para omitir la segunda parte de la dirección (offset en el sector), los archivos generalmente se almacenan a partir del inicio del sector y ocupan sectores completos (por ejemplo, un archivo de 10 bytes ocupa todo el sector, uno de 512 bytes también ocupa todo el sector, mientras que uno de 514 bytes ocupa dos sectores completos).

Cada archivo se guarda en sectores "no utilizados" y se puede leer más tarde siempre que se conozcan su posición y tamaño. Sin embargo, ¿cómo sabemos cúales sectores están ocupados y cuáles libres? ¿Dónde se almacenan el tamaño, la posición y el nombre del archivo? Esto es exactamente de que el sistema de archivos es responsable.

Como un todo, el sistema de archivos (también llamado sistema de ficheros) es una representación estructurada de datos con un conjunto de metadatos que describen estos datos. Se crea en un dispositivo de almacenamiento durante la operación de formateo. Esta estructura sirve para el almacenamiento completo y también forma parte de su segmento aislado – una partición de disco. Por lo general, no opera con sectores sino con bloques. Los bloques del sistema de ficheros son grupos de sectores que optimizan el direccionamiento de almacenamiento. Los sistemas modernos generalmente usan bloques de 1 a 128 sectores (de 512-65536 bytes). Los archivos generalmente se guardan al inicio de un bloque y ocupan bloques completos.

Las operaciones constantes de escritura/eliminación de datos en un almacenamiento causan su fragmentación. Así que, los archivos no se almacenan como unidades completas, sino que se dividen en fragmentos. Por ejemplo, un volumen está completamente ocupado por archivos de aproximadamente 4 bloques cada uno (por ejemplo, una colección de fotos). El usuario necesita guardar un nuevo fichero de 8 bloques y, por lo tanto, elimina el primero y el último archivo. Al hacer esto, él o ella libera el espacio de 8 bloques, sin embargo, el primer fragmento se encuentra cerca del inicio del almacenamiento, mientras que el segundo – al final del almacenamiento. En este caso, el archivo de 8 bloques se divide en dos partes (de 4 bloques cada una) y ocupa los "agujeros" del espacio libre. La información tanto de los fragmentos como de sus partes se almacena en el sistema de archivos.

Además de los datos del usuario, el sistema de archivos también almacena sus propios parámetros (como el tamaño de un bloque), descriptores de archivos (incluido su tamaño, ubicación, fragmentos, etc.), nombres y la jerarquía de directorios. También puede almacenar información de seguridad, atributos extendidos y otros parámetros.

Para satisfacer diferentes necesidades del usuario, como las relacionadas con el rendimiento del almacenamiento, la estabilidad y la confiabilidad, se han desarrollado muchos tipos (o formatos) de sistemas de ficheros que pueden servir para diferentes propósitos.

Sistemas de archivos de Windows

En el SO Windows de Microsoft se usan dos sistemas de ficheros más comunes: NTFS, el formato principal predeterminado de la mayoría de las versiones modernas del sistema operativo, y FAT, heredado del antiguo DOS, con el sistema exFAT como su extensión posterior. ReFS fue presentado por Microsoft como un formato de nueva generación para las computadoras de servidor a partir de Windows Server 2012. HPFS se desarrolló por Microsoft en colaboración con IBM y por el momento sólo se puede encontrar en las PC extremadamente antiguas en Windows NT hasta 3.5.

FAT

FAT (del inglés File Allocation Table, Tabla de asignación de archivos) es uno de los tipos de sistemas de ficheros más simples que existe desde la década de 1980. Consta del sector de descriptor del sistema de archivos (sector de arranque o superbloque), la tabla de asignación de bloques (denominada Tabla de asignación de archivos) y el espacio para almacenar datos. En FAT, los archivos se almacenan en directorios. Cada directorio es una matriz de registros de 32 bytes, cada uno de los cuales define un archivo o sus atributos extendidos (por ejemplo, un nombre largo). Un registro de un archivo describe su primer bloque. Cualquier bloque siguiente se puede encontrar a través de la tabla de asignación de bloques usándola como una lista vinculada.

La tabla de asignación de bloques contiene una matriz de descriptores de bloques. Un valor cero indica que el bloque no se usa, y uno distinto de cero se relaciona con el siguiente bloque de un archivo o un valor especial para su final.

Los números en los nombres de los sistemas FAT12, FAT16, FAT32 representan la cantidad de bits utilizados para direccionar un bloque del sistema de archivos. Esto significa que FAT12 puede usar hasta 4096 referencias de bloque diferentes, mientras que FAT16 y FAT32 – hasta 65536 y 4294967296 respectivamente. La cantidad máxima real de bloques es aún menor y depende del controlador del sistema de ficheros.

FAT12 y FAT16 solían utilizarse en disquetes antiguos y hoy en día no son muy comunes. FAT32 todavía se usa ampliamente en tarjetas de memoria y memorias USB. El formato es compatible con teléfonos inteligentes, cámaras digitales y otros dispositivos portátiles.

FAT32 se puede usar en almacenamientos externos compatibles con Windows o en particiones de disco de tamaño inferior a 32GB, cuando se formatean con la herramienta integrada del sistema operativo, o en unas de hasta 2TB, cuando se emplean otros medios para formatear el almacenamiento. Este sistema de archivos no permite crear archivos cuyo tamaño supere los 4GB. Para abordar este problema, se introdujo exFAT que no tiene limitaciones con respecto al tamaño y se utiliza con frecuencia en discos duros externos y SSD modernos.

NTFS

NTFS (del inglés New Technology File System, Nueva tecnología de sistema de archivos) se introdujo en 1993 con Windows NT y actualmente es el sistema de archivos más común en las computadoras de los usuarios finales basadas ​​en Windows. La mayoría de los sistemas operativos de la línea Windows Server también utilizan este formato.

Este tipo de sistema de ficheros es bastante confiable gracias al registro por diario (journaling en inglés) y soporta muchas funciones, incluido el control de acceso, el cifrado, etc. En NTFS, cada archivo se almacena como un descriptor en la Tabla maestra de archivos (Master File Table) y como su contenido de datos. La Tabla maestra de archivos contiene entradas con toda la información sobre ellas: tamaño, asignación, nombre, etc. Las primeras 16 entradas de la tabla se reservan para el mapa de bits que mantiene un registro de todos los clústeres libres y usados, el Log utilizado para el registro por diario y el archivo BadClus que contiene información sobre clústeres defectuosos. El primer y el último sectores del sistema de archivos contienen su configuración (registro de arranque o superbloque). Este sistema utiliza los valores de 48 y 64 bits para hacer referencia a archivos, por lo que puede ser compatible incluso con los almacenamientos de datos de una capacidad extremadamente alta.

ReFS

ReFS (Resilient File System) es el último desarrollo de Microsoft introducido con Windows 8 y ahora disponible para Windows 10. Su arquitectura difiere completamente de aquella de otros sistemas de ficheros de Windows y está organizada principalmente en forma de un árbol B+ReFS tiene una alta tolerancia a fallas gracias a sus nuevas características. La más destacable entre ellas es Copiar en escrito (VACA) o Copy-on-Write (CoW): no se modifica ningún metadato sin ser copiado; los datos no se escriben sobre los datos existentes, sino que se guardan en otra área del disco. Después de cualquier modificación, se guarda una nueva copia de metadatos en un área libre del almacenamiento, y luego el sistema crea un enlace de los metadatos más antiguos a la copia más nueva. Por lo tanto, una cantidad significativa de copias de seguridad se almacenan en diferentes lugares, lo que facilita la recuperación de datos a menos que se sobrescriba este espacio de almacenamiento.

HPFS

HPFS (del inglés High Performance File System, Sistema de archivos de alto rendimiento) fue creado por Microsoft en cooperación con IBM y se introdujo con SO/2 1.20 en 1989 como un sistema de archivos para servidores que proporciona un rendimiento mucho mejor en comparación con FAT. A diferencia del sistema FAT, que simplemente asigna el fragmento de archivo a cualquier primer clúster libre en el disco, HPFS trata de ubicar los fragmentos del archivo en bloques contiguos, o al menos garantizar que sus fragmentos (los denominados extentes) se coloquen lo más cerca posible uno a otro. Al comienzo de HPFS, hay tres bloques de control que ocupan 18 sectores en total: bloque de arranque, superbloque y bloque de repuesto. El espacio de almacenamiento restante se divide en partes de sectores contiguos denominados bandas que ocupan 8 MB cada una. Una banda tiene su propio mapa de bits de asignación de sectores que muestra cuáles sectores están ocupados (1 – ocupado, 0 – libre). Cada archivo y directorio tiene su propio F-nodo ubicado cerca de él en el disco – esta estructura contiene información sobre la ubicación del archivo y sus atributos extendidos. Se utiliza una banda de directorios especial ubicada en el centro del disco para almacenar directorios, mientras que la estructura de directorios en sí es un árbol equilibrado con entradas en orden alfabético.

Sugerencia: La información sobre las perspectivas de la recuperación de datos de los sistemas de archivos de Windows se puede encontrar en los artículos sobre las peculiaridades de recuperación de datos de diferentes sistemas operativos y las probabilidades de recuperar datos. Para obtener instrucciones detalladas y recomendaciones, por favor, lea el manual dedicado a la recuperación de datos en Windows.

Sistemas de archivos de macOS

En macOS de Apple se usan dos tipos de sistema de archivos: HFS+, una extensión del sistema HFS heredado que se utilizaba en las computadoras Macintosh antiguas, y APFS, un formato empleado en las Mac modernas con macOS 10.14 o sus versiones más nuevas.

HFS+

HFS+ solía ser el formato principal de los productos de escritorio de Apple, incluidos las computadoras Mac, los iPod y los productos Apple X Server, hasta que fuera reemplazado por APFS en macOS High Sierra. En los productos de servidor también se utiliza Apple Xsan, un sistema de archivos en clúster derivado de StorNext y CentraVision.

HFS+ utiliza árboles B para colocar y encontrar archivos. Los volúmenes se dividen en sectores, normalmente de 512 bytes de tamaño, y luego se agrupan en bloques de asignación, el número de los cuales depende del tamaño de todo el volumen. La información sobre los bloques de asignación libres y usados ​​se almacena en el Archivo de asignación. Todos los bloques de asignación asignados a cada archivo como extentes se registran en el archivo Extends Overflow. Y, por último, todos los atributos de archivo se enumeran en el Archivo de atributos. La confiabilidad del almacenamiento se mejora gracias al registro por diario que permite realizar un seguimiento de todos los cambios en el sistema y devolverlo rápidamente al estado de funcionamiento en caso de eventos inesperados. Entre otras características soportadas vale la pena mencionar los enlaces duros a directorios, el cifrado lógico de volumen, el control de acceso, la compresión de datos, etc.

APFS

El sistema de archivos APFS tiene como objetivo abordar los problemas fundamentales presentes en su predecesor y fue desarrollado para funcionar de manera eficiente con los dispositivos de memoria flash modernos y las unidades de estado sólido. Este formato de 64 bits utiliza el método Copiar en escrito para mejorar el rendimiento, que permite copiar cada bloque antes de que se apliquen los cambios, y ofrece muchas funciones para preservar la integridad de datos y ahorrar el espacio. Todos los contenidos y metadatos de archivos, así como las carpetas y otras estructuras de APFS se guardan en el contenedor de APFS. El Superbloque del contenedor (Container Superblock) contiene información sobre la cantidad de bloques en el Contenedor, el tamaño de bloque, etc. La información sobre todos los bloques ocupados y libres del Contenedor se organiza mediante los mapas de bits. Cada volumen en el Contenedor tiene su propio Superbloque de volumen (Volume Superblock) que almacena información sobre este volumen. Todos los archivos y carpetas del volumen se registran en el árbol B de archivos y carpetas, mientras que el árbol B de extentes es responsable de los llamados extentes – referencias al contenido del archivo (inicio del archivo, su longitud en bloques).

Sugerencia: Las posibilidades de recuperar datos de los mencionados tipos de sistemas de ficheros se pueden consultar en los artículos sobre las peculiaridades de la recuperación de datos según el sistema operativo y las probabilidades de recuperar datos. Si está interesado en el lado práctico del procedimiento, por favor, consulte la guía de recuperación de datos en macOS.

Sistemas de archivos de Linux

El sistema operativo de código abierto Linux tiene como objetivo implementar, probar y usar diferentes tipos de sistemas de archivos. Los sistemas de ficheros más populares de Linux son:

Ext

Ext2, Ext3, Ext4 son solamente versiones diferentes del sistema de archivos Ext "nativo" de Linux. Este sistema se está desarrollando y mejorando activamente. Ext3 es una extensión de Ext2 que utiliza las operaciones de escritura de archivos transaccionales en combinación con el registro por diarioExt4 es un desarrollo posterior de Ext3, ampliado con el soporte de información de asignación de archivos optimizada (extentes) y atributos de archivo ampliados. Este sistema de ficheros se usa con frecuencia como "raíz" para la mayoría de las instalaciones de Linux.

ReiserFS

ReiserFS es un sistema de archivos alternativo de Linux que está optimizado para almacenar una gran cantidad de archivos pequeños. Tiene buenas capacidades de búsqueda y permite la asignación compacta de archivos almacenando sus colas o simplemente elementos muy pequeños junto con metadatos para evitar el uso de grandes bloques del sistema de archivos para este propósito. Con todo, este formato ya no se desarrolla ni se soporta activamente.

XFS

XFS – un sistema de archivos basado en el registro por diario que fue creado por Silicon Graphics e inicialmente implementado en los servidores IRIX de la empresa. En 2001, llegó al kernel de Linux y ahora es compatible con la mayoría de las distribuciones de Linux, algunas de las cuales, como Red Hat Enterprise Linux, incluso lo usan de forma predeterminada. Este sistema está optimizado para almacenar archivos muy grandes y volúmenes en un solo host.

JFS

JFS – un sistema de archivos desarrollado por IBM para sus sistemas informáticos potentes. JFS1 generalmente se utiliza en referencia a JFS, mientras que JFS2 es su segunda versión. Actualmente, este proyecto es de código abierto y está implementado en la mayoría de las versiones modernas de Linux.

Btrfs

Btrfs – un sistema de archivos basado en el principio de Copiar en escrito (COW) que fue diseñado por Oracle y que es compatible con el núcleo principal de Linux desde 2009. Btrfs también sirve del administrador de volúmenes lógicos, puede abarcar múltiples dispositivos , y se caracteriza por una tolerancia a fallos mucho mejor, así como por una mejor escalabilidad, una administración más sencilla, etc. y además cuenta con una serie de funciones avanzadas.

F2FS

F2FS – un sistema de archivos de Linux diseñado por Samsung Electronics que se ha adaptado a las especificaciones de los almacenamientos basados ​​en la memoria flash NAND que se utilizan ampliamente en los teléfonos inteligentes modernos y otros sistemas informáticos. Este tipo funciona sobre la base del principio del sistema de ficheros con estructura de registro (LFS o log-structured FS en inglés) y tiene en cuenta las peculiaridades del almacenamiento flash, como el tiempo de acceso constante y un número limitado de ciclos de reescritura de datos. En lugar de crear un fragmento grande para escribir, F2FS ensambla bloques en fragmentos separados (de hasta 6) que se escriben simultáneamente.

El concepto de "enlaces duros" utilizado en este tipo de sistemas operativos hace que la mayoría de los sistemas de archivos de Linux sean similares en el sentido de que el nombre del archivo no se considera un atributo del archivo y se define más bien como un alias de un archivo en un directorio determinado. Un objeto de archivo se puede vincular desde muchas ubicaciones e incluso tener múltiples enlaces desde el mismo directorio bajo diferentes nombres. Esto puede plantear dificultades graves e incluso insuperables en la recuperación de nombres de archivos después de su eliminación o después de un daño lógico del sistema de ficheros.

Sugerencia: Más información se puede encontrar en los artículos que describen los detalles de la recuperación de datos de diferentes sistemas operativos y las probabilidades de recuperación de datos. Para aprender cómo se debe llevar a cabo el procedimiento, consulte el manual de la recuperación de datos en Linux.

Sistemas de archivos de BSD, Solaris, Unix

El sistema de archivos más común para estos sistemas operativos es UFS (Unix File System), también conocido como FFS (Fast File System en inglés, Sistema de archivos rápido).

Actualmente, UFS (en diferentes ediciones) es compatible con todos los sistemas operativos de la familia Unix y es un sistema de archivos principal de BSD y Sun Solaris. Las tecnologías informáticas modernas tienden a implementar reemplazos para UFS en diferentes sistemas operativos (ZFS para Solaris, JFS y formatos derivados para Unix, etc.).

Sugerencia: La información sobre la probabilidad de lograr éxito en la recuperación de datos de estos tipos de sistemas de archivos se puede encontrar en los artículos sobre las peculiaridades de la recuperación de datos según el SO y las probabilidades de recuperar datos. El proceso en sí se describe en las instrucciones dedicadas a la recuperación de datos en Unix, Solaris y BSD.

Sistemas de archivos en clúster

Los sistemas de archivos en clúster se utilizan en los sistemas de clúster de computadoras y soportan los almacenamientos distribuidos.

Los sistemas de archivos distribuidos son:

  • ZFSZettabyte File System o Sistema de archivos Zettabyte de la compañía Sun – un formato desarrollado para los almacenamientos distribuidos del sistema operativo Sun Solaris.

  • Apple Xsan – un desarrollo de la compañía Apple como una evolución de CentraVision y StorNext.

  • VMFSVirtual Machine File System o Sistema de archivos de máquina virtual desarrollado por la empresa VMware para su productos VMware ESX Server.

  • GFSGlobal File System o Sistema de archivos global de Red Hat Linux.

  • JFS1 – la versión original (obsoleta) del IBM JFS utilizado en los sistemas de almacenamiento AIX más antiguos.

Las propiedades en común de estos sistemas de archivos incluyen el soporte de almacenamiento distribuido, la extensibilidad y la modularidad.

Para descubrir otras tecnologías utilizadas para almacenar y administrar datos, consulte la sección de tecnologías de almacenamiento.

Última actualización: el 31 de agosto de 2022

Si le gusta este artículo, compártalo en sus redes sociales: