stringtranslate.com

Fragmentación del sistema de archivos

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

En informática , la fragmentación del sistema de archivos , a veces llamada envejecimiento del sistema de archivos , es la tendencia de un sistema de archivos a distribuir 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 dificulta el rendimiento . La fragmentación se puede remediar reorganizando los archivos y liberando espacio en áreas contiguas, un proceso llamado defragmentación .

Las unidades de estado sólido no buscan físicamente, por lo que su acceso a datos no secuenciales es cientos de veces más rápido que las unidades en movimiento, 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 debido a operaciones innecesarias de escritura y borrado. [1]

Causas

Cuando un sistema de archivos se inicializa por primera vez en una partición , contiene sólo 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 uno del otro.

A medida que los archivos existentes se eliminan o truncan, 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 tanto, se debe asignar un nuevo fragmento. A medida que pasa el tiempo y los mismos factores están continuamente presentes, el espacio libre y los archivos añadidos con frecuencia tienden a fragmentarse más. Las regiones más cortas de espacio libre también significan que el sistema de archivos ya no puede asignar nuevos archivos de forma contigua y tiene que dividirlos en fragmentos. Esto es especialmente cierto cuando el sistema de archivos se llena y grandes regiones contiguas de espacio libre no están 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. Considere el siguiente escenario: un disco nuevo tenía cinco archivos, denominados A, B, C, D y E, guardados 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 en 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 usa nuevamente según sea necesario. [b] El sistema de archivos podría desfragmentar el disco inmediatamente después de una eliminación, pero hacerlo supondría una grave penalización de rendimiento en momentos impredecibles.

Ahora, un nuevo archivo llamado F, que requiere siete bloques de espacio, se puede colocar 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 archivo nuevo llamado G, que sólo necesita tres bloques, podría ocupar el espacio después de F y antes de C.

Si posteriormente es necesario ampliar F, ya que el espacio inmediatamente posterior 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 tamaño más grande

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 espacio libre contiguo lo suficientemente grande como para contener 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 agregado al final del archivo F formaría parte de la misma extensión. Pero si hay tanto material que no queda espacio disponible después de la última extensión, entonces habría que crear otra extensión, y así sucesivamente. Con el tiempo, el sistema de archivos tiene segmentos libres en muchos lugares y algunos archivos pueden estar distribuidos en muchas extensiones. El tiempo de acceso a esos archivos (o a todos los archivos) puede volverse excesivamente largo.

Necesidad

Algunos de los primeros sistemas de archivos no podían fragmentar archivos. Un ejemplo de ello fue 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 no se puede extender y el usuario a menudo no podía guardar un archivo incluso si el disco tenía espacio adecuado para él.

DFS usaba una estructura de disco muy simple y los archivos en el disco se ubicaban solo por su longitud y sector inicial. Esto significaba que todos los archivos tenían que 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 dicho sistema con el mensaje de error "no se puede extender" . Independientemente de cuánto espacio libre pudiera quedar en total en el disco, no estaba disponible para ampliar el archivo de datos.

Los estándares de manejo de errores en ese momento eran primitivos y, en cualquier caso, los programas comprimidos en la memoria limitada de BBC Micro rara vez podían permitirse el lujo de desperdiciar espacio intentando manejar los errores con elegancia. En cambio, el usuario se encontraría de vuelta en el símbolo del sistema con el mensaje No se puede extender y se perderían todos los datos que aún no se habían agregado al archivo. El problema tampoco se pudo solucionar simplemente comprobando previamente el espacio libre en el disco. Si bien puede existir espacio libre en el disco, el tamaño del bloque contiguo más grande de espacio libre no era evidente de inmediato sin analizar los números presentados por el catálogo de discos y, por lo tanto, pasaría desapercibido para el 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 fue una actualización costosa y fue una sorpresa que la actualización pudiera causar, sin previo aviso, la pérdida de datos . [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 único archivo se divide en varias partes (llamadas extensiones en los sistemas de archivos basados ​​en extensiones). Si bien los sistemas de archivos de disco intentan mantener archivos individuales contiguos, esto no suele ser posible sin importantes penalizaciones en el rendimiento. Las herramientas de desfragmentación y verificación del sistema de archivos generalmente 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 es causada por la eliminación o el 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 Prevención de 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 sea muy difícil medirlo o estimarlo objetivamente. Sin embargo, podría decirse que es el tipo de fragmentación más crítico, ya que los estudios han encontrado 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 distribuirlos en el orden natural del sistema de archivos. Si bien suele ser una suposición razonable, no siempre se cumple. Por ejemplo, una aplicación puede leer varios archivos diferentes, quizás en directorios diferentes, exactamente en el mismo orden en que fueron escritos. Por lo tanto, un sistema de archivos que simplemente ordena todas las escrituras sucesivamente podría funcionar más rápido para una aplicación determinada.

Fragmentación de la estructura de datos

Los catálogos o índices utilizados por un propio sistema de archivos también pueden fragmentarse con el tiempo, a medida que las entradas que contienen se crean, modifican o eliminan. 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. Dependiendo del diseño particular del sistema de archivos, los archivos o regiones que contienen esos datos también pueden fragmentarse (como se describe anteriormente para los archivos "normales"), independientemente de cualquier fragmentación de los registros de datos reales mantenidos dentro de esos archivos o regiones. [5]

Para algunos sistemas de archivos (como NTFS [c] y HFS / HFS Plus [6] ), la intercalación / clasificació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 consumo 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 generalmente se ubican 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 sólo 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 menos impacto en el rendimiento de las unidades de estado sólido , ya que no implica tiempo de búsqueda mecánica . [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 procesamiento. Si se alcanza el límite máximo de fragmentación, las solicitudes de escritura fallan. [10]

En pruebas comparativas simples de sistemas de archivos , el factor de fragmentación a menudo se omite, ya que es difícil modelar el envejecimiento y la fragmentación realistas. Más bien, para simplificar la comparación, las pruebas comparativas de sistemas de archivos a menudo se ejecutan 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 luchar contra la fragmentación. Generalmente se pueden clasificar en dos categorías: preventivas y retroactivas . Debido a la dificultad de predecir patrones de acceso, estas técnicas suelen ser de naturaleza heurística y pueden degradar el rendimiento bajo cargas de trabajo inesperadas.

Previniendo 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. Lo más simple es agregar datos a un fragmento existente cuando 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 archivos a los que se agregan activamente. 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 almacenamiento para todo el archivo. Por ejemplo, el archivo de intercambio de Microsoft Windows (archivo de página) se puede cambiar de tamaño dinámicamente en condiciones normales de funcionamiento y, por lo tanto, puede volverse muy fragmentado. Esto se puede evitar especificando un archivo de página con los mismos tamaños mínimo y máximo, preasignando efectivamente todo el archivo.

BitTorrent y otras aplicaciones para compartir archivos de igual a igual 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 asignación al vaciar en reiser4 y ext4 . Cuando se escribe en el sistema de archivos, los bloques del sistema de archivos se reservan, pero aún no se han establecido las ubicaciones de archivos específicos. Más adelante, cuando el sistema de archivos se vea obligado a eliminar los cambios como resultado de la presión de la memoria o la confirmación de una 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 único directorio de forma contigua. Suponiendo que sean comunes varias lecturas de un único directorio, se mejora la localidad de referencia. [14] Reiser4 también ordena el diseño 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 (según lo dictado por 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, una vez que ha ocurrido. Muchos sistemas de archivos proporcionan herramientas de desfragmentación , que intentan reordenar fragmentos de archivos y, a veces, también disminuir su dispersión (es decir, mejorar su contigüidad o localidad de referencia ) manteniendo archivos más pequeños en directorios , árboles de directorios o incluso secuencias de archivos cerca de 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 se dividen en 8 o más fragmentos cuando se abre el archivo. [dieciséis]

El ahora obsoleto Commodore Amiga Smart File System (SFS) se desfragmentaba 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 para los metadatos como para los datos normales.

Ver también

Notas

  1. ^ Algunos sistemas de archivos, como NTFS y ext2 +, pueden preasignar regiones contiguas vacías para fines especiales.
  2. ^ La práctica de dejar el espacio ocupado por los archivos eliminados en gran medida intacto es la razón por la que los programas de recuperación pudieron funcionar; simplemente recuperaron el archivo cuyo nombre había sido eliminado del directorio, pero cuyo contenido todavía estaba en el disco.
  3. ^ NTFS reserva el 12,5% del volumen para la 'zona MFT', pero solo 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. ^ Pescador, Ryan (11 de febrero de 2022). "¿Debo desfragmentar mi SSD?". Jugador de PC . 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 de no poder extenderse
  4. ^ Douceur, John R.; Bolosky, William J. (junio de 1999). "Un estudio a gran escala del contenido del sistema de archivos". Revisión de evaluación del desempeño 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)". aprender.microsoft.com . Microsoft . Consultado el 22 de octubre de 2022 .
  6. ^ "DiskWarrior en profundidad". También . Consultado el 22 de octubre de 2022 .
  7. ^ "Mantener el máximo rendimiento de Windows 2000 mediante la desfragmentación". aprender.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 de redes de almacenamiento. Tecnología Seagate . Archivado desde el original (PDF) el 17 de julio de 2006.
  9. ^ ab McVoy, LW; Kleiman, SR (invierno de 1991). "Rendimiento similar a una extensión de un sistema de archivos UNIX" ( PostScript ) . Actas de USENIX invierno '91 . 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). "Parámetros comparativos del sistema de archivos específicos de la carga de trabajo" (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}}: Citar diario requiere |journal=( ayuda )
  12. ^ Layton, Jeffrey (29 de marzo de 2009). "De ext3 a ext4: una entrevista con Theodore Ts'o". Revista Linux . Calle Quin . Archivado desde el original el 1 de abril de 2009.{{cite journal}}: Mantenimiento CS1: 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, Adán; 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 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". Charlas técnicas de Google . 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.

Otras lecturas