close

Sistema de archivos Unix

Saltar a navegación Saltar a búsqueda

UFS ( Unix File System ) es un sistema de archivos utilizado principalmente en sistemas operativos Unix y similares a Unix . Es un derivado del sistema de archivos rápidos de Berkeley , que fue desarrollado a partir del FS utilizado por la primera versión de Unix fabricada en Bell Labs .

Casi todos los derivados de BSD , incluidos FreeBSD , NetBSD , OpenBSD , NEXTSTEP y Solaris , utilizan una variante de UFS. En macOS está disponible como alternativa a HFS+ . En Linux hay soporte parcial para UFS, mientras que el primer sistema de archivos utilizado solo para Linux, ext2 , también se deriva de UFS.

Historia y evolución

Las primeras versiones del sistema de archivos Unix se denominaban simplemente FS. FS solo incluía el bloque de arranque, el superbloque, un grupo de inodos y bloques de datos. Este sistema de archivos funcionó bien para los primeros discos pequeños de Unix, pero el avance de la tecnología y la ampliación de los discos, el movimiento de la cabeza de un lado a otro entre grupos de inodos y las referencias a bloques de datos causaron hiperactividad (la hiperpaginación es una situación en la que grandes cantidades de los recursos informáticos se utilizan para realizar una cantidad mínima de trabajo, con el sistema en un estado continuo de escasez de recursos). Marshall Kirk McKusick, entonces estudiante de Berkeley, optimizó el FS para el sistema operativo 4.2BSD llamándolo FFS (Fast File System) al inventar grupos de cilindros. Esto divide el disco en muchos fragmentos pequeños, cada uno con su propio grupo de inodos y bloques de datos.

La intención de BSD FFS es tratar de ubicar los bloques de datos y metadatos asociados en el mismo grupo de cilindros e, idealmente, poner todo el contenido de un directorio (tanto datos como metadatos para todos los archivos), en el mismo o en el mismo directorio. proximidad de un grupo de cilindros, reduciendo así la fragmentación provocada por la dispersión del contenido de un directorio en todo un disco.

Algunos de los parámetros de rendimiento en el superbloque incluían el número de pistas y sectores, la velocidad de rotación del disco, la velocidad del cabezal y la alineación de sectores entre pistas. En un sistema completamente optimizado, la cabeza podría moverse a pistas vecinas para leer alternativamente sectores distribuidos, durante un período de rotación completa del disco.

A medida que los discos se hacían más y más grandes, las optimizaciones a nivel de sector se volvieron obsoletas (particularmente con discos que usaban numeración de sector lineal y sectores variables por pista). Con discos y archivos más grandes, la lectura de fragmentos se ha convertido en un problema. Para resolver este problema, BSD originalmente aumentó el tamaño de bloque en el sistema de archivos de un sector a 1k en 4.0BSD; y en SBB aumentó el tamaño de bloque en el sistema de archivos de 1k a 8k. Todo esto ha tenido varios efectos. La posibilidad de que los sectores del archivo sean continuos es mayor. La cantidad de gastos generales para enumerar bloques de archivos ha disminuido. Ha aumentado el número de bytes que pueden ser representados por un número dado de bloques; dado que el número máximo de bloques está limitado por un ancho de bloque fijo, esto también está permitido para discos grandes.

Con bloques grandes, los discos con muchos archivos pequeños pueden desperdiciar mucho espacio. Por esta razón, BSD ha agregado fragmentación a nivel de bloque (también llamada bloque de subasignación), donde el último bloque parcial de datos de diferentes archivos se puede almacenar en un solo fragmento de bloque, en lugar de múltiples bloques en su mayoría vacíos (Allen 2005).

Implementación y estructura

Un sistema de archivos UFS consta de los siguientes componentes:

  • el primer sector del disco (512 bytes) contiene la tabla de particiones.
  • una pequeña cantidad de bloques ubicados al comienzo de la partición (sector 1 a 15) están destinados al arranque (y se inicializan por separado del propio sistema de archivos)
  • un superbloque, que contiene un número mágico que identifica el sistema de archivos como UFS y otros parámetros vitales que describen la geometría del sistema de archivos y algunas estadísticas.
  • una serie de grupos de cilindros. Cada grupo contiene:
    • una copia de seguridad de la supermanzana
    • el número de directorios
    • el número de inodos , que incluyen datos sobre los atributos de los archivos que contienen
    • un encabezado, que contiene algunas estadísticas, entre las cuales, la lista de bloques e inodos libres , la fragmentación en grupos de cilindros. Es similar al superbloque, pero aplicado a cada grupo de cilindros
    • el número de bloques de datos en el grupo de cilindros
    • el mapa de bloques libres
    • el mapa de los inodos utilizados

Los inodos están numerados secuencialmente: los primeros dos inodos están reservados por razones históricas y son seguidos inmediatamente por el inodo del directorio raíz , que por lo tanto siempre es el inodo 2.

Los archivos que describen directorios contienen solo los nombres y los punteros de inodo de los elementos que contienen. Todos los metadatos se almacenan en el propio inodo.

Presente y futuro

Muchos son los que han adaptado UFS a sus propios fines añadiendo extensiones propietarias que no son compatibles con otras versiones. Sorprendentemente, algunos han seguido usando el tamaño de bloque y los campos de datos originales. Se han mantenido algunos márgenes de compatibilidad entre distintas versiones, al menos a la hora de leer el sistema de archivos.

FreeBSD 5.0 ​​introdujo UFS2 , que tiene soporte para volúmenes de más de 1 TB .

Linux tiene el sistema de archivos EXT2, escrito desde cero pero basado en los principios de UFS, mientras que no tiene, debido a la ausencia de un estándar UFS unificado, una herramienta para poder escribir en este sistema de archivos.

Desde 2004 , Sun Microsystems ha introducido el "inicio de sesión" en Solaris 7, lo que convierte al UFS en un sistema de archivos con registro por diario (consulte registro por diario ). Solaris también tiene varias extensiones para manipular archivos grandes y grandes volúmenes.

Enlaces externos