Articulo de referencia

fragmentación del sistema de archivos

Visualización de la fragmentación y posteriormente de la desfragmentación. La fragmentación del sistema de archivos , también conocida como envejecimiento del sistema de archivo...

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

La fragmentación del sistema de archivos , también conocida como envejecimiento del sistema de archivos , es una característica de los sistemas que almacenan archivos en bloques no contiguos. Se trata de un caso particular de fragmentación de datos . La fragmentación del sistema de archivos afecta negativamente al tiempo de acceso al almacenamiento en disco (medio de almacenamiento giratorio), lo que reduce el rendimiento . La fragmentación puede eliminarse reorganizando los archivos en áreas contiguas, un proceso denominado desfragmentación .

Una unidad de estado sólido (SSD) no realiza búsquedas mecánicas, por lo que el acceso no secuencial es muchísimo más rápido que en los discos duros, lo que reduce significativamente el problema de la fragmentación. De hecho, la mejor práctica es no desfragmentar una SSD, ya que hacerlo puede desgastar prematuramente la unidad mediante operaciones innecesarias de escritura y borrado. [ 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 los archivos recién creados en cualquier lugar de la partición. Durante un tiempo después de su creación, los archivos pueden estar dispuestos de forma casi óptima. Cuando se instalan el sistema operativo y las aplicaciones , o se descomprimen los archivos comprimidos, 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 los archivos existentes, se crean nuevas regiones de espacio libre. Cuando se añaden datos a archivos existentes, a menudo es imposible reanudar la escritura exactamente donde terminaba el archivo, ya que otro archivo podría estar asignado en ese lugar; por lo tanto, es necesario asignar un nuevo fragmento. Con el tiempo, y si estos factores se mantienen constantes, tanto el espacio libre como los archivos a los que se añaden datos con frecuencia tienden a fragmentarse más. Las regiones de espacio libre más cortas también implican 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 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 simplifica un tema que, de otro modo, sería complejo. 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 ocupa 10 bloques de espacio. (En este caso, el tamaño del bloque no es relevante). El espacio restante en el 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í, marcado como disponible para su uso posterior, y luego se vuelve a usar según sea necesario. [ b ] El sistema de archivos podría desfragmentar el disco inmediatamente después de una eliminación, pero hacerlo conllevaría una penalización de rendimiento considerable en momentos impredecibles.

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

Si posteriormente es necesario expandir F, dado 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 que se encuentran en el camino de la expansión en otro lugar, para permitir que F permanezca contiguo.
  3. Mover el archivo F para que pueda ser un archivo contiguo del nuevo tamaño mayor.

La segunda opción probablemente no sea práctica por motivos 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 alojar el nuevo archivo. Por lo tanto, la práctica habitual consiste simplemente en crear una extensión en otro lugar y encadenar la nueva extensión a la anterior.

El material añadido al final del archivo F pertenecería a la misma extensión. Pero si hay tanto material que no queda espacio después de la última extensión, habría que crear otra , y así sucesivamente. Con el tiempo, el sistema de archivos tendrá segmentos libres en muchos lugares y algunos archivos podrían estar distribuidos en varias extensiones. El tiempo de acceso a esos archivos (o a todos los archivos) podría volverse excesivamente largo.

Necesidad

Algunos sistemas de archivos antiguos no podían fragmentar archivos. Un ejemplo de ello fue el sistema de archivos Acorn DFS utilizado en el 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 aunque el disco tuviera espacio suficiente.

DFS utilizaba una estructura de disco muy simple, y los archivos se localizaban únicamente por su longitud y sector de inicio. Esto implicaba que todos los archivos debían existir como un bloque continuo de sectores, sin posibilidad de fragmentación. Siguiendo 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, mostrando el mensaje de error " No se puede extender ". Independientemente del espacio libre que quedara en el disco, este no estaba disponible para extender el archivo de datos.

Los estándares de manejo de errores de la época eran primitivos y, en cualquier caso, los programas comprimidos en la memoria limitada del BBC Micro rara vez podían permitirse el lujo de desperdiciar espacio intentando manejar los errores correctamente. En su lugar, el usuario se encontraba de nuevo en la línea de comandos con el mensaje "No se puede extender " y todos los datos que aún no se habían añadido al archivo se perdían. El problema tampoco se podía solucionar simplemente comprobando el espacio libre en el disco de antemano. Aunque pudiera existir espacio libre en el disco, el tamaño del bloque contiguo más grande de espacio libre no era inmediatamente evidente sin analizar los números presentados por el catálogo del disco y, por lo tanto, pasaba desapercibido para el usuario. Además, casi todos los usuarios de DFS habían utilizado previamente almacenamiento de archivos en casete , que no sufre este error. La actualización a un sistema de disquetes era costosa, y fue una sorpresa que la actualización pudiera causar pérdida de datos sin previo aviso . [ 2 ] [ 3 ]

Tipos

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

  • Fragmentación dentro de archivos individuales
  • fragmentación del espacio libre
  • La disminución de la localidad de referencia entre archivos separados pero relacionados
  • Fragmentación dentro de las estructuras de datos o archivos especiales reservados para el propio sistema de archivos.

fragmentación de archivos

La fragmentación de archivos individuales se produce cuando un único archivo se divide en múltiples fragmentos (denominados 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 una importante pérdida 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) se produce cuando existen varias áreas sin usar del sistema de archivos donde se pueden escribir nuevos archivos o metadatos. Esta fragmentación no deseada suele deberse a la eliminación o truncamiento de archivos, pero los sistemas de archivos también pueden insertar intencionadamente fragmentos ("burbujas") de espacio libre para facilitar la extensión de archivos cercanos (véase la sección sobre cómo prevenir la fragmentación más adelante).

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 dificulta su medición o estimación objetiva. Sin embargo, podría decirse que es el tipo de fragmentación más crítico, ya que los estudios han demostrado que los archivos a los que se accede con mayor 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, la contigüidad de archivos ), es necesario realizar suposiciones u observaciones sobre el funcionamiento de las aplicaciones. Una suposición muy frecuente es que conviene mantener los archivos pequeños juntos dentro de un mismo directorio y organizarlos según el orden natural del sistema de archivos. Si bien suele ser una suposición razonable, no siempre se cumple. Por ejemplo, una aplicación podría leer varios archivos diferentes, quizás en directorios distintos, exactamente en el mismo orden en que se escribieron. Por lo tanto, un sistema de archivos que simplemente ordene todas las escrituras sucesivamente podría funcionar más rápido para dicha aplicación.

fragmentación de la estructura de datos

Los catálogos o índices utilizados por el propio sistema de archivos también pueden fragmentarse con el tiempo, a medida que se crean, modifican o eliminan las entradas que contienen. Esto resulta más preocupante cuando el volumen contiene multitud de archivos muy pequeños que cuando está lleno de menos archivos de mayor tamaño. Dependiendo del diseño específico 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 mantienen 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 en 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 suelen ubicarse 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 de 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 de rendimiento de sistemas de archivos simples , a menudo se omite el factor de fragmentación, ya que el envejecimiento y la fragmentación realistas son difíciles de modelar. En cambio, para simplificar la comparación, las pruebas de rendimiento de sistemas de archivos suelen ejecutarse en sistemas de archivos vacíos. Por lo tanto, los resultados pueden diferir considerablemente de los patrones de acceso reales. [ 11 ]

Mitigación

Se han desarrollado diversas técnicas para combatir la fragmentación. Generalmente se clasifican en dos categorías: preventivas y retroactivas . Debido a la dificultad de predecir los patrones de acceso, estas técnicas suelen ser heurísticas y pueden degradar el rendimiento ante cargas de trabajo inesperadas.

Prevenir la fragmentación

Las técnicas preventivas buscan minimizar la fragmentación al momento de escribir datos en el disco. La más sencilla consiste en añadir datos a un fragmento existente, siempre que 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 espacios libres, denominados extensiones , a los archivos a los que se les añade contenido activamente. Esto evita en gran medida la fragmentación de archivos cuando se añaden datos a varios archivos simultáneamente, evitando así que se entrelacen excesivamente. [ 9 ]

Si se conoce el tamaño final de un archivo que se va a modificar, se puede preasignar espacio de almacenamiento para todo el archivo. Por ejemplo, el archivo de paginación (o archivo de intercambio) de Microsoft Windows puede redimensionarse dinámicamente durante el funcionamiento normal, lo que puede provocar una gran fragmentación. Esto se puede evitar especificando un archivo de paginación con los mismos tamaños mínimo y máximo, lo que permite preasignar el archivo completo.

BitTorrent y otras aplicaciones de intercambio de archivos entre pares 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 diferida en XFS , HFS+ [ 13 ] y ZFS ; esta misma técnica también se denomina asignación al vaciar en reiser4 y ext4 . Cuando se escribe en el sistema de archivos, se reservan bloques del sistema de archivos, pero aún no se establecen las ubicaciones de archivos específicos. Posteriormente, cuando el sistema de archivos se ve obligado a vaciar los cambios como resultado de la presión de 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 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 según 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 esta se ha producido. Muchos sistemas de archivos proporcionan herramientas de desfragmentación que intentan reordenar los fragmentos de archivos y, a veces, también disminuyen 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 que se dividen en 8 o más fragmentos cuando se abre el archivo. [ 16 ]

El ahora obsoleto sistema de archivos inteligente (SFS) de Commodore Amiga se desfragmentaba automáticamente mientras el sistema de archivos estaba en uso. El proceso de desfragmentación es prácticamente independiente del estado (aparte de la ubicación en la que está trabajando), por lo que puede detenerse e iniciarse 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 fines especiales.
  2. La práctica de dejar prácticamente intacto el espacio ocupado por los archivos eliminados es la razón por la que los programas de recuperación de archivos eliminados podían funcionar; simplemente recuperaban el archivo cuyo nombre se había borrado del directorio, pero cuyo contenido aún permanecía 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 llega a estar ocupado en más del 87,5 %, ya no se puede garantizar una MFT sin fragmentar). [ 5 ]

Referencias

  1. ^ Fisher, Ryan (11 de febrero de 2022). "¿Debería desfragmentar mi SSD?" . PC Gamer . Archivado del original el 18 de febrero de 2022 . Recuperado el 26 de abril de 2022 .
  2. ^ http://www.8bs.com/hints/083.txt - Descripción delerror " no se puede extender "
  3. ^ http://8bs.com/mag/1to4/basegd1.txt - Posible pérdida de datos causada por elerror " 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" . ACM SIGMETRICS Performance Evaluation Review . 27 (1): 59– 70. doi : 10.1145/301464.301480 .
  5. ^ a b "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 Storage Networking World. Seagate Technology . Archivado del original (PDF) el 17 de julio de 2006.
  9. ^ a b McVoy, LW; Kleiman, SR (Invierno de 1991). "Rendimiento similar al de una extensión desde un sistema de archivos UNIX" ( PostScript ) . Actas de USENIX invierno '91 . Dallas, Texas: Sun Microsystems, Inc. págs.  33–43 . Recuperado el 14 de diciembre de 2006 .
  10. ^ a b Hanselman, Scott (3 de diciembre de 2014). "La historia real y completa: ¿Windows desfragmenta tu SSD?" . Blog de Scott Hanselman .
  11. ^ Smith, Keith Arnold (enero de 2001). "Pruebas comparativas de sistemas de archivos específicas para cargas de trabajo" (PDF) . Cambridge, Massachusetts : Universidad de Harvard . Archivado del original (PDF) el 17 de noviembre de 2004. Recuperado el 14 de diciembre de 2006 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  12. ^ Layton, Jeffrey (29 de marzo de 2009). "De ext3 a ext4: una entrevista con Theodore Ts'o" . Linux Magazine . QuinStreet . Archivado del original el 1 de abril de 2009.
  13. ^ Singh, Amit (mayo de 2004). "Fragmentación en volúmenes HFS Plus" . Mac OS X Internals . Archivado del original el 18 de noviembre de 2012. Recuperado 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 USENIX de 1996. San Diego, California : Silicon Graphics . Recuperado el 14 de diciembre de 2006 .
  15. ^ Reiser, Hans (6 de febrero de 2006). "El sistema de archivos Reiser4" . Google TechTalks . Archivado del original el 19 de mayo de 2011. Recuperado el 14 de diciembre de 2006 .
  16. ^ Singh, Amit (2007). "12 El sistema de archivos HFS Plus" . Mac OS X Internals: A Systems Approach . Addison Wesley . ISBN 0321278542.

Lecturas adicionales

  • Smith, Keith; Seltzer, Margo. Diseño de archivos y rendimiento del sistema de archivos (PDF) (Documento). Universidad de Harvard .
Obtenido de " https://en.wikipedia.org/w/index.php?title=File_system_fragmentation&oldid=1360039070 "