stringtranslate.com

Subasignación de bloques

La subasignación de bloques es una característica de algunos sistemas de archivos de computadora que permite utilizar grandes bloques o unidades de asignación mientras se hace un uso eficiente del espacio vacío al final de archivos grandes, espacio que de otra manera se perdería para otro uso debido a la fragmentación interna . [1]

En los sistemas de archivos que no admiten fragmentos, esta característica también se denomina fusión de cola o empaquetamiento de cola porque normalmente se realiza empaquetando la "cola", o último bloque parcial, de varios archivos en un solo bloque.

Razón fundamental

Los sistemas de archivos tradicionalmente han dividido el disco en bloques de igual tamaño para simplificar su diseño y limitar la fragmentación en el peor de los casos . Los tamaños de bloque suelen ser múltiplos de 512 bytes debido al tamaño de los sectores del disco duro . Cuando los archivos son asignados por algunos sistemas de archivos tradicionales, solo se pueden asignar bloques completos a archivos individuales. Pero como los tamaños de archivo a menudo no son múltiplos del tamaño de bloque del sistema de archivos, este diseño da como resultado inherentemente que los últimos bloques de archivos (llamados colas ) ocupen solo una parte del bloque, lo que resulta en lo que se llama fragmentación interna (que no debe confundirse con fragmentación externa ). Este desperdicio de espacio puede ser significativo si el sistema de archivos almacena muchos archivos pequeños y puede volverse crítico cuando se intenta usar tamaños de bloque más altos para mejorar el rendimiento. UFS y otros sistemas de archivos UNIX derivados admiten fragmentos [ cita requerida ] que mitigan en gran medida este efecto.

Esquemas de subasignación

La subasignación de bloques soluciona este problema dividiendo un bloque de cola de alguna manera para permitirle almacenar fragmentos de otros archivos.

Algunos esquemas de subasignación de bloques pueden realizar la asignación a nivel de byte; sin embargo, la mayoría simplemente divide el bloque en bloques más pequeños (el divisor suele ser una potencia de 2). Por ejemplo, si se va a almacenar un archivo de 38 KiB en un sistema de archivos que utiliza bloques de 32 KiB, el archivo normalmente ocuparía dos bloques, o 64 KiB, para el almacenamiento; los 26 KiB restantes del segundo bloque se convierten en espacio de holgura sin utilizar. Sin embargo, con una subasignación de bloques de 8 KiB, el archivo ocuparía solo 6 KiB del segundo bloque, dejaría 2 KiB (del bloque de subasignación de 8 KiB) de holgura y liberaría los otros 24 KiB del bloque para otros archivos.

Empaquetadura de cola

Desde entonces, algunos sistemas de archivos se han diseñado para aprovechar este espacio no utilizado y pueden empaquetar las colas de varios archivos en un único bloque de cola compartido. Si bien, al principio, esto puede parecer que aumentaría significativamente la fragmentación del sistema de archivos, el efecto negativo se puede mitigar con funciones de lectura anticipada en los sistemas operativos modernos : cuando se trata de archivos cortos, varias colas pueden estar lo suficientemente cerca una de otra como para leerlas juntas y, por lo tanto, no se introduce una búsqueda en el disco . Estos sistemas de archivos a menudo emplean heurísticas para determinar si el empaquetamiento de colas vale la pena en una situación determinada, y el software de desfragmentación puede utilizar una heurística más evolucionada.

Eficiencia

En algunos escenarios donde la mayoría de los archivos son más cortos que la mitad del tamaño del bloque, como en una carpeta de pequeños archivos de código fuente o pequeñas imágenes de mapa de bits, el empaquetamiento de cola puede aumentar la eficiencia del almacenamiento incluso más del doble, en comparación con los sistemas de archivos sin empaquetamiento de cola. [2]

Esto no sólo se traduce en conservación de espacio en disco, sino que también puede introducir mejoras en el rendimiento, ya que debido a una mayor localidad de referencia , se deben leer menos datos, lo que también se traduce en una mayor eficiencia de la caché de páginas . Sin embargo, estas ventajas pueden verse anuladas por la mayor complejidad de la implementación . [3]

A partir de 2015 , los sistemas de archivos de lectura y escritura más utilizados con soporte para subasignación de bloques son Btrfs y FreeBSD UFS2 [4] (donde se denomina " fragmentación a nivel de bloque "). ReiserFS y Reiser4 también admiten empaquetamiento de cola.

Varios sistemas de archivos de sólo lectura no utilizan bloques en absoluto y, por lo tanto, implícitamente utilizan el espacio de manera tan eficiente como los sistemas de archivos de subasignación; dichos sistemas de archivos también funcionan como formatos de archivo .

Véase también

Referencias

  1. ^ Patente estadounidense 6.041.407 (Patente fundamental).
  2. ^ Hans Reiser (2001). «Uso del disco duro, ReiserFS y Ext2fs». Archivado desde el original el 13 de noviembre de 2006. Consultado el 14 de diciembre de 2006 .
  3. ^ Hans Reiser (2001). «ReiserFS file system design». Archivado desde el original el 13 de noviembre de 2006. Consultado el 14 de diciembre de 2006 .
  4. ^ Hervey, Allen (20 de junio de 2005). "Introducción a FreeBSD, taller de PacNOG I, temas adicionales, UFS2 y actualizaciones suaves forman una combinación poderosa" (PDF) . PacNOG I. p. 23. Consultado el 22 de julio de 2012 .