Los mapas de bits de espacio libre son un método utilizado para rastrear sectores asignados por algunos sistemas de archivos . Si bien el diseño más simple es altamente ineficiente, [ 1 ] algunos sistemas de archivos modernos, como NTFS , utilizan implementaciones avanzadas o híbridas de mapas de bits de espacio libre [ 2 ] .
Ejemplo
La forma más simple de un mapa de bits de espacio libre es una matriz de bits , es decir, un bloque de bits . En este ejemplo, un cero indicaría un sector libre, mientras que un uno indicaría un sector en uso. Cada sector tendría un tamaño fijo. Para fines explicativos, utilizaremos un disco duro de 4 GiB con sectores de 4096 bytes y supondremos que el mapa de bits se almacena en otro lugar. El disco de ejemplo requeriría 1.048.576 bits, uno por cada sector, o 128 KiB . Aumentar el tamaño del disco incrementará proporcionalmente el tamaño del mapa de bits, mientras que multiplicar el tamaño del sector producirá una reducción proporcional.
Cuando el sistema operativo (SO) necesita escribir un archivo, escanea el mapa de bits hasta encontrar suficientes ubicaciones libres para alojarlo. Si un archivo de 12 KiB estuviera almacenado en la unidad de ejemplo, se encontrarían tres bits cero, se cambiarían a unos y los datos se escribirían en los tres sectores representados por esos bits. Si posteriormente el archivo se truncara a 8 KiB, el bit del último sector volvería a cero, indicando que está disponible nuevamente.
Ventajas
- Sencillo: Cada bit corresponde directamente a un sector.
- Verificación rápida de asignación de acceso aleatorio: comprobar si un sector está libre es tan sencillo como comprobar el bit correspondiente.
- Eliminación rápida: No es necesario sobrescribir los datos al eliminarlos; basta con invertir el bit correspondiente.
- Costo fijo: Una ventaja y una desventaja a la vez. Otras técnicas para almacenar información en espacio libre presentan una sobrecarga variable que depende del número y tamaño de las extensiones de espacio libre. Los mapas de bits nunca alcanzan el rendimiento de otras técnicas en sus circunstancias ideales, pero tampoco presentan problemas graves. Dado que el mapa de bits nunca crece, se encoge ni se mueve, se requieren menos búsquedas para encontrar la información deseada.
- Bajo consumo de almacenamiento, una fracción del tamaño de la unidad: incluso con sectores relativamente pequeños, el espacio de almacenamiento necesario para el mapa de bits es reducido. Una unidad de 2 TB podría representarse completamente con un mapa de bits de tan solo 64 MB (para sectores de 4096 bytes ).
Desventajas
- Despilfarrador en discos grandes: El diseño simplista comienza a desperdiciar grandes cantidades de espacio (en sentido absoluto) para volúmenes extremadamente grandes. [ 1 ]
- Escalabilidad deficiente: Si bien el tamaño sigue siendo insignificante como fracción del tamaño del disco, encontrar espacio libre se vuelve más lento a medida que el disco se llena. Si el mapa de bits es mayor que la memoria disponible , el rendimiento cae drásticamente en todas las operaciones. [ 1 ]
- Fragmentación : Si se consideran los sectores libres a medida que se encuentran, las unidades con creación y eliminación frecuentes de archivos se fragmentarán rápidamente. Si la búsqueda intenta encontrar bloques contiguos, encontrar espacio libre se vuelve mucho más lento incluso en discos con una ocupación moderada. Los datos fragmentados también reducen la velocidad de lectura en discos duros mecánicos debido a la latencia de búsqueda del cabezal magnético, aunque esto no representa un problema en la memoria flash .
Técnicas avanzadas
A medida que aumenta el tamaño de la unidad, el tiempo necesario para escanear el espacio libre puede volverse excesivo. Para solucionar esto, las implementaciones reales de mapas de bits de espacio libre buscarán formas de centralizar la información sobre el espacio libre. Un enfoque consiste en dividir el mapa de bits en varios fragmentos. Una matriz independiente almacena entonces el número de sectores libres en cada fragmento, de modo que los fragmentos con espacio insuficiente se pueden omitir fácilmente y la cantidad total de espacio libre es más fácil de calcular. Encontrar espacio libre ahora implica buscar primero en la matriz de resumen y luego buscar en el fragmento del mapa de bits asociado los sectores exactos disponibles. [ 1 ]
Este enfoque reduce drásticamente el costo de encontrar espacio libre, pero no facilita el proceso de liberación de espacio. Si el tamaño combinado del array de resumen y el mapa de bits supera la capacidad de almacenamiento en memoria, y se liberan numerosos archivos con sectores dispersos, se requiere un acceso masivo al disco para localizar todos los sectores, decrementar el contador de resumen y restablecer los bits a cero. Esto reduce considerablemente las ventajas del mapa de bits, ya que deja de cumplir su función de resumir rápidamente el espacio libre sin necesidad de leer el disco.
Véase también
- Mapa de disponibilidad de bloques
- Sistema de archivos de alto rendimiento (HPFS)
- exGRASA
- Índice de mapa de bits : un método para indexar bases de datos que frecuentemente se superpone con diseños de mapa de bits de espacio libre eficientes.
- Árbol B : un método alternativo para rastrear el espacio libre mediante el almacenamiento de un conjunto ordenado de extensiones de espacio libre.
Referencias
- 1 2 3 4 Bonwick, Jeff (14 de septiembre de 2007). "Mapas espaciales" . Archivado del original el 1 de abril de 2009. Recuperado el 2 de octubre de 2009 .
- ↑ Karresand, Martin; Axelsson, Stefan; Dyrkolbotn, Geir Olav (2019-07-01). "Using NTFS Cluster Allocation Behavior to Find the Location of User Data" . Digital Investigation . 29 : S51– S60. doi : 10.1016/j.diin.2019.04.018 . hdl : 11250/2631756 .
- Estructuras de datos de bits
- Sistemas de archivos informáticos