stringtranslate.com

Fragmentación del sistema de archivos

Visualización de la fragmentación y luego de la desfragmentación.

En informática , la fragmentación del sistema de archivos , a veces denominada envejecimiento del sistema de archivos , es la tendencia de un sistema de archivos a disponer el contenido de los archivos de forma no continua para permitir la modificación in situ de su contenido. Es un caso especial de fragmentación de datos . La fragmentación del sistema de archivos afecta negativamente el tiempo de búsqueda en los medios de almacenamiento giratorios, lo que se sabe que obstaculiza el rendimiento . La fragmentación se puede remediar reorganizando los archivos y el espacio libre en áreas contiguas, un proceso llamado desfragmentación .

Las unidades de estado sólido no realizan búsquedas físicas, por lo que su acceso a los datos no secuenciales es cientos de veces más rápido que el de las unidades móviles, lo que hace que la fragmentación sea un problema menor. Se recomienda no desfragmentar manualmente el almacenamiento de estado sólido, ya que esto puede desgastar prematuramente las unidades mediante operaciones de escritura y borrado innecesarias. [1]

Causas

Cuando un sistema de archivos se inicializa por primera vez en una partición , contiene solo unas pocas estructuras internas pequeñas y, por lo demás, es un bloque contiguo de espacio vacío. [a] Esto significa que el sistema de archivos puede colocar archivos recién creados en cualquier lugar de la partición. Durante algún tiempo después de la creación, los archivos se pueden distribuir de forma casi óptima. Cuando se instalan el sistema operativo y las aplicaciones o se descomprimen los archivos , los archivos separados terminan apareciendo secuencialmente, por lo que los archivos relacionados se colocan cerca unos de otros.

A medida que se eliminan o truncan archivos existentes, se crean nuevas regiones de espacio libre. Cuando se agregan archivos existentes, a menudo es imposible reanudar la escritura exactamente donde terminaba el archivo, ya que es posible que ya haya otro archivo asignado allí; por lo tanto, se debe asignar un nuevo fragmento. A medida que pasa el tiempo y los mismos factores están presentes continuamente, el espacio libre, así como los archivos que se agregan con frecuencia, tienden a fragmentarse más. Las regiones de espacio libre más cortas también significan que el sistema de archivos ya no puede asignar nuevos archivos de forma contigua y debe dividirlos en fragmentos. Esto es especialmente cierto cuando el sistema de archivos se llena y no hay grandes regiones contiguas de espacio libre disponibles.

Ejemplo

Ejemplo simplificado de cómo se produce la fragmentación del espacio libre y la fragmentación de archivos

El siguiente ejemplo es una simplificación de un tema que de otro modo sería complicado. Consideremos el siguiente escenario: en un disco nuevo se han guardado cinco archivos, denominados A, B, C, D y E, de forma continua y secuencial en ese orden. Cada archivo utiliza 10 bloques de espacio (aquí, el tamaño del bloque no es importante). El resto del espacio del disco es un bloque libre. Por lo tanto, se pueden crear y guardar archivos adicionales después del archivo E.

Si se elimina el archivo B, se crea una segunda región de diez bloques de espacio libre y el disco se fragmenta. El espacio vacío simplemente se deja allí, se marca como disponible para su uso posterior y luego se vuelve a utilizar según sea necesario. [b] El sistema de archivos podría desfragmentar el disco inmediatamente después de una eliminación, pero al hacerlo se produciría una grave penalización del rendimiento en momentos impredecibles.

Ahora, un nuevo archivo llamado F, que requiere siete bloques de espacio, puede colocarse en los primeros siete bloques del espacio recién liberado que anteriormente contenía el archivo B, y los tres bloques siguientes permanecerán disponibles. Si se agrega otro nuevo archivo llamado G, que necesita solo tres bloques, podría ocupar el espacio después de F y antes de C.

Si posteriormente es necesario ampliar F, dado que el espacio inmediatamente siguiente está ocupado, existen tres opciones para el sistema de archivos:

  1. Agregar un nuevo bloque en otro lugar e indicar que F tiene una segunda extensión
  2. Mover archivos en el camino de la expansión a otro lugar, para permitir que F permanezca contiguo
  3. Mover el archivo F para que pueda ser un archivo contiguo del nuevo archivo de mayor tamaño

La segunda opción probablemente no sea práctica por razones de rendimiento, al igual que la tercera cuando el archivo es muy grande. La tercera opción es imposible cuando no hay un único espacio libre contiguo lo suficientemente grande como para albergar el nuevo archivo. Por lo tanto, la práctica habitual es simplemente crear una extensión en otro lugar y encadenar la nueva extensión a la antigua.

El material añadido al final del archivo F formaría parte de la misma extensión. Pero si hay tanto material que no queda espacio libre después de la última extensión, entonces se deberá crear otra extensión, y así sucesivamente. Al final, el sistema de archivos tiene segmentos libres en muchos lugares y algunos archivos pueden estar repartidos en muchas extensiones. El tiempo de acceso a esos archivos (o a todos los archivos) puede llegar a ser excesivamente largo.

Necesidad

Algunos de los primeros sistemas de archivos no podían fragmentar archivos. Un ejemplo de ello era el sistema de archivos Acorn DFS utilizado en BBC Micro . Debido a su incapacidad para fragmentar archivos, a veces aparecía el mensaje de error " can't extend" (no se puede extender) y, a menudo, el usuario no podía guardar un archivo incluso si el disco tenía espacio suficiente para él.

DFS utilizaba una estructura de disco muy simple y los archivos en el disco se ubicaban únicamente por su longitud y sector inicial. Esto significaba que todos los archivos debían existir como un bloque continuo de sectores y la fragmentación no era posible. Usando el ejemplo de la tabla anterior, el intento de expandir el archivo F en el paso cinco habría fallado en un sistema de este tipo con el mensaje de error "can't extend" . Independientemente de cuánto espacio libre pudiera quedar en el disco en total, no estaba disponible para extender el archivo de datos.

Los estándares de manejo de errores en ese momento eran primitivos y, en cualquier caso, los programas apretados en la memoria limitada del BBC Micro rara vez podían permitirse el lujo de desperdiciar espacio intentando manejar errores elegantemente. En lugar de eso, el usuario se encontraría devuelto al símbolo del sistema con el mensaje Can't extend y todos los datos que aún no se habían adjuntado al archivo se perderían. El problema tampoco se podía resolver simplemente comprobando el espacio libre en el disco de antemano. Si bien puede haber espacio libre en el disco, el tamaño del bloque contiguo más grande de espacio libre no era inmediatamente aparente sin analizar los números presentados por el catálogo de discos y, por lo tanto, escapaba a la atención del usuario. Además, casi todos los usuarios de DFS habían utilizado anteriormente el almacenamiento de archivos en casete , que no sufre este error. La actualización a un sistema de disquete era una actualización costosa, y fue una sorpresa que la actualización pudiera causar la pérdida de datos sin previo aviso . [2] [3]

Tipos

La fragmentación del sistema de archivos puede ocurrir en varios niveles:

Fragmentación de archivos

La fragmentación de archivos individuales se produce cuando un solo archivo se ha dividido en varias partes (denominadas extensiones en los sistemas de archivos basados ​​en extensiones). Si bien los sistemas de archivos de disco intentan mantener los archivos individuales contiguos, esto no suele ser posible sin sufrir importantes penalizaciones de rendimiento. Las herramientas de comprobación y desfragmentación del sistema de archivos normalmente solo tienen en cuenta la fragmentación de archivos en su estadística de "porcentaje de fragmentación".

Fragmentación del espacio libre

La fragmentación del espacio libre (no asignado) ocurre cuando hay varias áreas no utilizadas del sistema de archivos donde se pueden escribir nuevos archivos o metadatos. La fragmentación no deseada del espacio libre generalmente se debe a la eliminación o truncamiento de archivos, pero los sistemas de archivos también pueden insertar intencionalmente fragmentos ("burbujas") de espacio libre para facilitar la extensión de archivos cercanos (consulte la sección sobre cómo prevenir la fragmentación a continuación).

Dispersión de archivos

La segmentación de archivos, también llamada fragmentación de archivos relacionados o fragmentación a nivel de aplicación (archivo), se refiere a la falta de localidad de referencia (dentro del medio de almacenamiento) entre archivos relacionados. A diferencia de los dos tipos de fragmentación anteriores, la dispersión de archivos es un concepto mucho más vago, ya que depende en gran medida del patrón de acceso de aplicaciones específicas. Esto también hace que medirla o estimarla objetivamente sea muy difícil. Sin embargo, podría decirse que es el tipo de fragmentación más crítico, ya que los estudios han descubierto que los archivos a los que se accede con más frecuencia tienden a ser pequeños en comparación con el rendimiento del disco disponible por segundo. [4]

Para evitar la fragmentación de archivos relacionados y mejorar la localidad de referencia (en este caso llamada contigüidad de archivos ), se deben hacer suposiciones u observaciones activas sobre el funcionamiento de las aplicaciones. Una suposición muy frecuente es que vale la pena mantener juntos los archivos más pequeños dentro de un solo directorio y disponerlos en el orden natural del sistema de archivos. Si bien a menudo es una suposición razonable, no siempre se cumple. Por ejemplo, una aplicación puede leer varios archivos diferentes, tal vez en diferentes directorios, exactamente en el mismo orden en que fueron escritos. Por lo tanto, un sistema de archivos que simplemente ordena todas las escrituras sucesivamente, puede funcionar más rápido para la aplicación en cuestión.

Fragmentación de la estructura de datos

Los catálogos o índices utilizados por un sistema de archivos también pueden fragmentarse con el tiempo, a medida que se crean, modifican o eliminan las entradas que contienen. Esto es más preocupante cuando el volumen contiene una multitud de archivos muy pequeños que cuando un volumen está lleno de menos archivos más grandes. Según el diseño particular del sistema de archivos, los archivos o regiones que contienen esos datos también pueden fragmentarse (como se describió anteriormente para los archivos "normales"), independientemente de cualquier fragmentación de los registros de datos reales que se mantengan dentro de esos archivos o regiones. [5]

Para algunos sistemas de archivos (como NTFS [c] y HFS / HFS Plus [6] ), la intercalación / ordenación / compactación necesaria para optimizar estos datos no puede ocurrir fácilmente mientras el sistema de archivos está en uso. [7]

Consecuencias negativas

La fragmentación del sistema de archivos es más problemática con las unidades de disco duro de nivel de consumidor debido a la creciente disparidad entre la velocidad de acceso secuencial y la latencia rotacional (y en menor medida el tiempo de búsqueda ) en la que se colocan habitualmente los sistemas de archivos. [8] Por lo tanto, la fragmentación es un problema importante en la investigación y el diseño de sistemas de archivos. La contención de la fragmentación no solo depende del formato en disco del sistema de archivos, sino también en gran medida de su implementación. [9] La fragmentación del sistema de archivos tiene un menor impacto en el rendimiento en las unidades de estado sólido , ya que no hay tiempo de búsqueda mecánico involucrado. [10] Sin embargo, el sistema de archivos necesita almacenar metadatos adicionales para cada parte no contigua del archivo. Cada pieza de metadatos ocupa espacio y requiere potencia de procesamiento y tiempo de procesador. Si se alcanza el límite máximo de fragmentación, las solicitudes de escritura fallan. [10]

En las pruebas comparativas de sistemas de archivos simples , el factor de fragmentación se suele omitir, ya que es difícil modelar el envejecimiento y la fragmentación realistas. En cambio, para simplificar la comparación, las pruebas comparativas de sistemas de archivos se suelen ejecutar en sistemas de archivos vacíos. Por lo tanto, los resultados pueden variar mucho de los patrones de acceso de la vida real. [11]

Mitigación

Se han desarrollado varias técnicas para combatir la fragmentación. Por lo general, se pueden clasificar en dos categorías: preventivas y retroactivas . Debido a la dificultad de predecir los patrones de acceso, estas técnicas suelen ser de naturaleza heurística y pueden degradar el rendimiento en caso de cargas de trabajo inesperadas.

Prevención de la fragmentación

Las técnicas preventivas intentan mantener la fragmentación al mínimo en el momento en que se escriben los datos en el disco. La más sencilla es agregar datos a un fragmento existente en el lugar donde sea posible, en lugar de asignar nuevos bloques a un nuevo fragmento.

Muchos de los sistemas de archivos actuales intentan preasignar fragmentos más largos, o fragmentos de diferentes fragmentos de espacio libre, llamados extensiones, a los archivos a los que se les agregan datos de forma activa. Esto evita en gran medida la fragmentación de archivos cuando se agregan varios archivos simultáneamente, evitando así que se entrelacen excesivamente. [9]

Si se conoce el tamaño final de un archivo sujeto a modificación, se puede preasignar espacio de almacenamiento para todo el archivo. Por ejemplo, el archivo de intercambio (archivo de paginación) de Microsoft Windows se puede redimensionar dinámicamente durante el funcionamiento normal y, por lo tanto, puede llegar a fragmentarse en gran medida. Esto se puede evitar especificando un archivo de paginación con los mismos tamaños mínimo y máximo, lo que preasigna efectivamente todo el archivo.

BitTorrent y otras aplicaciones de intercambio de archivos peer to peer limitan la fragmentación al preasignar todo el espacio necesario para un archivo al iniciar las descargas . [12]

Una técnica relativamente reciente es la asignación retrasada en XFS , HFS+ [13] y ZFS ; la misma técnica también se llama allocate-on-flush en reiser4 y ext4 . Cuando se escribe en el sistema de archivos, se reservan bloques del sistema de archivos, pero las ubicaciones de archivos específicos aún no se establecen. Más tarde, cuando el sistema de archivos se ve obligado a vaciar los cambios como resultado de la presión de la memoria o una confirmación de transacción, el asignador tendrá un conocimiento mucho mejor de las características de los archivos. La mayoría de los sistemas de archivos con este enfoque intentan vaciar los archivos en un solo directorio de forma contigua. Suponiendo que las lecturas múltiples de un solo directorio son comunes, se mejora la localidad de referencia. [14] Reiser4 también ordena la disposición de los archivos de acuerdo con la tabla hash del directorio , de modo que cuando se accede a los archivos en el orden natural del sistema de archivos (como lo dicta readdir ), siempre se leen secuencialmente. [15]

Desfragmentación

Las técnicas retroactivas intentan reducir la fragmentación, o los efectos negativos de la fragmentación, después de que se haya producido. Muchos sistemas de archivos proporcionan herramientas de desfragmentación , que intentan reordenar fragmentos de archivos y, a veces, también reducen su dispersión (es decir, mejoran su contigüidad o localidad de referencia ) manteniendo archivos más pequeños en directorios , árboles de directorios o incluso secuencias de archivos cercanas entre sí en el disco.

El sistema de archivos HFS Plus desfragmenta de forma transparente los archivos que tienen un tamaño inferior a 20 MiB y están divididos en 8 o más fragmentos cuando se abre el archivo. [16]

El ahora obsoleto sistema de archivos inteligente (SFS) de Commodore Amiga se desfragmentó a sí mismo mientras el sistema de archivos estaba en uso. El proceso de desfragmentación es casi completamente sin estado (aparte de la ubicación en la que está trabajando), por lo que se puede detener e iniciar instantáneamente. Durante la desfragmentación, se garantiza la integridad de los datos tanto de los metadatos como de los datos normales.

Véase también

Notas

  1. ^ Algunos sistemas de archivos, como NTFS y ext2 +, pueden preasignar regiones contiguas vacías para propósitos especiales.
  2. ^ La práctica de dejar el espacio ocupado por los archivos eliminados prácticamente intacto es la razón por la que los programas de recuperación de archivos eliminados pudieron funcionar; simplemente recuperaron el archivo cuyo nombre había sido eliminado del directorio, pero cuyo contenido aún estaba en el disco.
  3. ^ NTFS reserva el 12,5 % del volumen para la 'zona MFT', pero sólo hasta que otros archivos necesiten ese espacio (es decir, si el volumen ~alguna vez~ llega a estar lleno en más del 87,5 %, ya no se puede garantizar una MFT no fragmentada). [5]

Referencias

  1. ^ Fisher, Ryan (11 de febrero de 2022). "¿Debería desfragmentar mi SSD?". PC Gamer . Archivado desde el original el 18 de febrero de 2022. Consultado el 26 de abril de 2022 .
  2. ^ http://www.8bs.com/hints/083.txt - Descripción del error "no se puede extender"
  3. ^ http://8bs.com/mag/1to4/basegd1.txt - Posible pérdida de datos causada por el error "no se puede extender"
  4. ^ Douceur, John R.; Bolosky, William J. (junio de 1999). "Un estudio a gran escala del contenido de los sistemas de archivos". Revisión de evaluación del rendimiento de ACM SIGMETRICS . 27 (1): 59–70. doi : 10.1145/301464.301480 .
  5. ^ ab "Cómo NTFS reserva espacio para su tabla maestra de archivos (MFT)". learn.microsoft.com . Microsoft . Consultado el 22 de octubre de 2022 .
  6. ^ "DiskWarrior en profundidad". Alsoft . Consultado el 22 de octubre de 2022 .
  7. ^ "Mantener el máximo rendimiento de Windows 2000 mediante la desfragmentación". learn.microsoft.com . Microsoft . Consultado el 22 de octubre de 2022 .
  8. ^ Kryder, Mark H. (3 de abril de 2006). Tecnologías de almacenamiento del futuro: una mirada más allá del horizonte (PDF) . Conferencia mundial sobre redes de almacenamiento. Seagate Technology . Archivado desde el original (PDF) el 17 de julio de 2006.
  9. ^ ab McVoy, LW; Kleiman, SR (invierno de 1991). "Extent-like Performance from a UNIX File System" (Rendimiento similar a Extent de un sistema de archivos UNIX) ( PostScript ) . Actas de USENIX , invierno de 1991. Dallas, Texas: Sun Microsystems, Inc., págs. 33–43 . Consultado el 14 de diciembre de 2006 .
  10. ^ ab Hanselman, Scott (3 de diciembre de 2014). "La historia real y completa: ¿Windows desfragmenta su SSD?". Blog de Scott Hanselman .
  11. ^ Smith, Keith Arnold (enero de 2001). "Workload-Specific File System Benchmarks" (PDF) . Cambridge, Massachusetts : Universidad de Harvard . Archivado desde el original (PDF) el 17 de noviembre de 2004. Consultado el 14 de diciembre de 2006 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  12. ^ Layton, Jeffrey (29 de marzo de 2009). "De ext3 a ext4: una entrevista con Theodore Ts'o". Linux Magazine . QuinStreet . Archivado desde el original el 1 de abril de 2009.{{cite journal}}: CS1 maint: URL no apta ( enlace )
  13. ^ Singh, Amit (mayo de 2004). «Fragmentación en volúmenes HFS Plus». Componentes internos de Mac OS X. Archivado desde el original el 18 de noviembre de 2012. Consultado el 27 de octubre de 2009 .
  14. ^ Sweeney, Adam; Doucette, Doug; Hu, Wei; Anderson, Curtis; Nishimoto, Mike; Peck, Geoff (enero de 1996). "Escalabilidad en el sistema de archivos XFS" ( PDF) . Actas de la Conferencia técnica anual de USENIX de 1996. San Diego, California : Silicon Graphics . Consultado el 14 de diciembre de 2006 .
  15. ^ Reiser, Hans (6 de febrero de 2006). "El sistema de archivos Reiser4". Google TechTalks . Archivado desde el original el 19 de mayo de 2011. Consultado el 14 de diciembre de 2006 .
  16. ^ Singh, Amit (2007). "12 El sistema de archivos HFS Plus". Componentes internos de Mac OS X: un enfoque de sistemas . Addison Wesley . ISBN 0321278542.

Lectura adicional