- Defragmentación de archivos
-
Defragmentación de archivos
En el contexto de la administración de sistemas de computadores, la defragmentación es un proceso que reduce la cantidad de fragmentación en los sistemas de archivos. Se realiza reorganizando físicamente el contenido del disco para almacenar los trozos de cada archivo juntos y de manera contigua. También trata de crear regiones de mayor espacio libre por medio de la compactación, para dificultar la fragmentación. Algunos defragmentadores también tratan de mantener los archivos más pequeños juntos dentro un solo directorio, pues a menudo se accede a ellos en secuencia.Contenido
Motivación
La lectura y escritura secuenciales de sistemas de archivos fuertemente fragmentados se ralentiza, debido a que aumenta el tiempo necesario para que los cabezales del disco se muevan entre los fragmentos y esperen a que el disco gire hasta la posición de lectura (véase tiempo de búsqueda y retardo rotacional). Para muchas operaciones comunes, el cuello de botella en la operación de todo el computador es el disco duro; de ahí que el deseo de procesar más eficientemente anime a la defragmentación. Los vendedores de sistemas operativos a menudo recomiendan la defragmentación periódica para evitar que la velocidad de acceso al disco se degrade con el tiempo.
Los datos fragmentados también se extienden por el disco más de lo necesario. Por lo tanto, uno puede defragmentar para agrupar los datos en una zona, antes de dividir una partición en dos o más (por ejemplo, con GNU Parted o PartitionMagic).
La defragmentación puede aumentar la propia vida del disco duro, al minimizar el movimiento de los cabezales y simplificar las operaciones de acceso a los datos.
Causas
La fragmentación ocurre cuando el sistema operativo no asigna suficiente espacio contiguo para almacenar un archivo completo como una unidad, sino que, en cambio, pone partes de él en huecos entre otros archivos (usualmente estos huecos existen porque antes contuvieron un archivo que posteriormente fue borrado por el sistema operativo, o porque éste en primer lugar asignó demasiado espacio para un archivo). Los archivos más grandes y el mayor número de archivos también contribuyen a la fragmentación y en consecuencia a la pérdida de rendimiento. La defragmentación intenta aliviar estos problemas.
- Ejemplo
Consideremos el siguiente escenario, como se muestra en la imagen de la derecha:
Sea un disco que estaba vacío y ahora contiene cinco archivos, A, B, C, D y E, y cada uno usa 10 bloques de espacio (en esta sección un bloque es una unidad de asignación de ese sistema, que podría ser de 1 Kb, 100 Kb o 1 Mb, sin un tamaño específico). En un disco vacío, todos estos archivos se asignarán uno detrás del otro. (Ejemplo (1) de la imagen.) Si se borra el archivo B, hay dos posibilidades: dejar vacío el espacio que dejó B y usarlo posteriormente, o comprimir todos los archivos después de B, de manera que el espacio vacío quede después de los archivos. Esto consumiría demasiado tiempo si hubiera que mover cientos o miles de archivos, así que, en general, simplemente se deja ese espacio, marcándolo en la tabla como disponible para un uso posterior, en que será ocupado cuando se necesite.[1] (Ejemplo (2) de la imagen.) Ahora, si a un nuevo archivo, F, se le asignan 7 bloques de espacio, se puede colocar en los primeros 7 bloques del espacio anteriormente ocupado por B, y los 3 bloques restantes seguirán disponibles. (Ejemplo (3) de la imagen.) Si se añadiera un nuevo archivo, G, que sólo necesitara 3 bloques, entonces podría ocupar el espacio libre entre F y C. (Ejemplo (4) de la imagen.) Si ahora fuera necesario expandir F, como el espacio que le sigue ya no está disponible, hay dos posibilidades: (1) añadir un nuevo bloque en otro lugar e indicar que F tiene una segunda extensión, o (2) mover el archivo F a otro lugar donde pueda ocupar una zona contigua del nuevo tamaño aumentado. Esta última operación puede no ser posible si el archivo es mayor que cualquier espacio libre contiguo, o si se prevé que el archivo podría ser tan grande que tal operación tomaría un tiempo excesivo, por lo tanto la práctica usual es simplemente crear una extensión en otro lugar y encadenar la nueva extensión con la anterior. (Ejemplo (5) de la imagen.) Al repetir esta práctica cientos o miles de veces, el sistema de archivos eventualmente tendrá muchos segmentos libres en muchos lugares, y muchos archivos tendrán muchas extensiones. Si, como resultado de la fragmentación del espacio libre, un nuevo archivo (o uno que se ha extendido) tiene que colocarse en un gran número de extensiones, el tiempo de acceso a ese archivo (o a todos los archivos) puede llegar a ser excesivamente largo.
El proceso de crear nuevos archivos, y el borrado y expansión de los archivos existentes, puede ocurrir en el sistema general de archivos, pero también en los subdirectorios. A veces nos referimos coloquialmente a este proceso con la expresión churn ("mantequera"). La fragmentación puede ocurrir no sólo en los archivos individuales, sino también cuando diferentes archivos en un directorio (y quizás en sus subdirectorios) que a menudo son leídos en secuencia, comienzan a separarse por el efecto churn.
Un programa de defragmentación debe mover los archivos dentro del espacio disponible para deshacer la fragmentación. Esta operación usa intensamente la memoria y no se puede realizar en un sistema de archivos sin espacio libre. La reorganización involucrada en la defragmentación no cambia la ubicación lógica de los archivos (definida como su ubicación dentro de la estructura de directorios).
Contramedidas comunes
- Particionado
Una estrategia común para optimizar la defragmentación y reducir el impacto de la fragmentación es particionar el/los disco(s) duro(s) para separar las particiones del sistema de archivos que experimentan muchas más lecturas y escrituras, de las zonas más volátiles, donde se crean y borran frecuentemente los archivos. En Windows de Microsoft, el contenido de directorios tales como "\Archivos de programas" o "\Windows" se modifica con mucha menor frecuencia que la de sus lecturas. Los directorios que contienen los perfiles de los usuarios se modifican constantemente (especialmente el directorio Temp y el cache del Explorador de Internet, que crea miles de archivos que se borran en unos cuantos días). Si los archivos de los perfiles de los usuarios se mantienen en una partición dedicada (como se hace comúnmente en los sistemas UNIX), el defragmentador funciona mejor, pues no tiene que tratar con todos los archivos estáticos de los otros directorios. En las particiones con relativamente poca actividad, el rendimiento de la defragmentación mejora grandemente después de la primera de ellas, pues en el futuro el defragmentador sólo tendrá que defragmentar un pequeño número de nuevos archivos.
Problemas
Archivos inamovibles
La presencia de archivos de sistema inamovibles, especialmente un archivo de intercambio, puede dificultar la defragmentación. Estos archivos se pueden mover con seguridad cuando el sistema operativo no está funcionando. Por ejemplo, ntfsresize mueve estos archivos para cambiar el tamaño de una partición NTFS.
Crecimiento de la fragmentación
En sistemas sin resistencia a la fragmentación, ésta crece por sí misma si no se hace nada, así que es necesaria la defragmentación periódica para mantener el rendimiento del disco al máximo y evitar la sobrecarga de defragmentaciones menos frecuentes.
Problemas de rendimiento y del usuario
En una amplia gama de sistemas operativos multiusuario, un usuario ordinario no puede defragmentar los discos del sistema pues se requiere el acceso del superusuario (o "Administrador") para mover los archivos del sistema. Además, los sistemas de archivos tales como el NTFS (y la mayoría de los sistemas de archivos Unix/Linux) están diseñados para reducir la probabilidad de la fragmentación.[2][3] Las mejoras en los discos duros modernos, tales como cache en RAM, mayor velocidad de rotación del disco y mayor densidad de datos, reducen en algún grado el impacto negativo de la fragmentación en el rendimiento del sistema, aunque los aumentos en las cantidades de datos usados comúnmente compensan estos efectos. No obstante, los sistemas modernos se benefician en gran medida de las enormes capacidades de disco disponibles actualmente, pues los discos parcialmente ocupados se fragmentan mucho menos que los discos llenos.[4] En cualquier caso, estas limitaciones de la defragmentación han llevado a decisiones de diseño en los sistemas operativos modernos, tales como el Mac OS X basado en Unix, el cual se introdujo en 1999 y eliminó la necesidad, en la utilización normal, de que el usuario tenga que defragmentar una unidad. Ocho años después, en 2007, Windows Vista también introdujo la capacidad de defragmentar automáticamente en un proceso en segundo plano --aunque no intenta defragmentar completamente un volumen, pues hacerlo sólo produciría aumentos de rendimiento despreciables.[5]
Aproximación y desfragmentadores según el tipo de sistema
- FAT: Los sistemas DOS 6.x y Windows 9x vienen con una utilidad de defragmentación llamada Defrag. La de DOS es una versión limitada de SpeedDisk de Norton[6], y la de Windows es una versión con licencia de Diskeeper.
- NTFS: Windows 2000 y posteriores incluyen una herramienta de defragmentación basada en Diskeeper. NT 4 y anteriores no incorporan utilidades de defragmentación. Desafortunadamente, el defragmentador integrado no consolida el espacio libre. Por lo tanto una unidad fuertemente fragmentada con muchos archivos pequeños puede no tener grandes espacios libres consecutivos después de la defragmentación. Así, cualquier nuevo archivo grande instantáneamente será dividido en fragmentos pequeños, con un impacto inmediato en el rendimiento. Esto puede ocurrir incluso si el espacio usado en el disco es inferior al 60%.[7]
- ext2 (Linux) usa un defragmentador externo llamado e2defrag, el cual no funciona con su sucesor ext3, a menos que este sistema de archivos se convierta temporalmente en ext2. En su lugar se puede usar un defragmentador independiente del sistema de archivos, tal como Shake[1].
- vxfs tiene una utilidad, fsadm, pensada para realizar también operaciones de defragmentación.
- JFS tiene una utilidad, defragfs,[2] en los sistemas operativos de IBM.
- HFS Plus (MAC OS X) introdujo en 1998 un número de optimizaciones a los algoritmos de asignación, en un intento de defragmentar los archivos mientras se accedía a ellos, sin un defragmentador separado. Si el sistema de archivos se vuelve fragmentado, la única manera de defragmentarlo es adquirir iDefrag de Coriolis System.
- WAFL en el sistema operativo ONTAP 7.2 de NetApp tiene un comando llamado reallocate, diseñado para defragmentar archivos grandes.
- XFS proporciona una utilidad de defragmentación en línea, llamada xfs_fsr.
- SFS procesa la característica de defragmentación de manera casi completamente desnacionalizada (aparte de la ubicación donde está funcionando), así que la defragmentación se puede detener e iniciar instantáneamente.
Véase también
- Fragmentación
- Fragmentación de sistemas de archivos
- Lista de programas de defragmentación
- Programas de optimización
Referencias
Fuentes
- Norton, Peter (1994). Peter Norton's Complete Guide to DOS 6.22, página 521 - Sams (ISBN 067230614X).
- Woody Leonhard, Justin Leonhard (2005). Windows XP Timesaving Techniques For Dummies, Second Edition, página 456 - For Dummies (ISBN 0-764578-839).
- Jensen, Craig (1994). Fragmentation: The Condition, the Cause, the Cure. Executive Software International (ISBN 0-9640049-0-9).
- Dave Kleiman, Laura Hunter, Mahesh Satyanarayana, Kimon Andreou, Nancy G. Altholz, Lawrence Abrams, Darren Windham, Tony Bradley y Brian Barber (2006). Winternals: Defragmentation, Recovery, and Administration Field guide - Syngress (ISBN 1-597490-792).
- Robb, Drew (2003). Server disk Management in a Windows Environment, Chapter 7 - AUERBACH (ISBN 0849324327).
Categorías: Wikipedia:Fusionar | Software de defragmentación
Wikimedia foundation. 2010.