¿Desfragmentar una partición ext?

Respuestas:

10

Los sistemas de archivos modernos, particularmente aquellos diseñados para ser eficientes en casos de uso multiusuario y / o multitarea, hacen un buen trabajo de no fragmentar los datos hasta que los sistemas de archivos estén casi llenos (no hay una cifra exacta de dónde está "casi lleno" "la marca es, ya que depende de qué tan grande sea el sistema de archivos, la distribución de los tamaños de archivo y cuáles son sus patrones de acceso (las cifras entre 85% y 95% son comúnmente citadas) o el patrón de creación y escritura de archivos es inusual o el sistema de archivos es muy viejo por lo que ha visto mucha "acción". Esto incluye ext2 / 3/4, reiser, btrfs, NTFS, ZFS y otros.

Actualmente no hay una forma de nivel de kernel / sistema de archivos para desfragmentar ext3 o 4 en este momento (consulte http://en.wikipedia.org/wiki/Ext3#Defragmentation para obtener un poco más de información) aunque ext4 está previsto que pronto gane en línea desfragmentación

Hay herramientas de usuario (como http://vleu.net/shake/y otros enumerados en ese artículo de Wikipedia) que intentan desfragmentar archivos individuales o conjuntos de archivos copiándolos / reescribiéndolos; si hay un bloque de espacio libre lo suficientemente grande, esto generalmente da como resultado que el archivo reciba un bloque contiguo. Sin embargo, esto de ninguna manera garantiza que los archivos estén cerca unos de otros, por lo que si ejecuta shake sobre un par de archivos grandes que migra, encontrará que los dos archivos se desfragmentan ellos mismos, pero no cerca del otro en el disco. En un sistema de archivos multiusuario, la ubicación de los archivos entre sí a menudo no es importante (ciertamente es menos importante que la fragmentación de los archivos mismos) ya que los cabezales de las unidades están volteándose por todos lados para servir a diferentes usuarios '

Si tiene un sistema de archivos que se ha fragmentado con el tiempo y actualmente tiene una buena cantidad de espacio libre, ejecutar algo como shakesobre todos sus archivos podría tener el efecto que está buscando. Otro método sería copiar todos los datos a un nuevo sistema de archivos, eliminar el original y luego volver a copiarlo. Esto ayuda de la misma manera shake, pero puede ser más rápido para grandes cantidades de datos.

Para pequeñas cantidades de fragmentación, simplemente no se preocupe por eso. ¡Sé que las personas que pasan más tiempo sentadas viendo barras de progreso de desfragmentación de lo que alguna vez ahorrarán (debido al acceso más eficiente al disco) en varias vidas de funcionamiento normal!

David Spillett
fuente
¿Existe algún mecanismo como: los archivos que a menudo se usan durante el arranque se colocan uno cerca del otro para obtener el beneficio de la localidad? ¿arranque más rápido?
uray
1
No que yo sepa. Puede usar ureadahead, como lo hacen las compilaciones recientes de Ubuntu por defecto (consulte ubuntuforums.org/showthread.php?t=1434502 para obtener más información), para lograr un efecto similar. Parte de la demora en la secuencia de arranque de Linux se puede reducir pidiéndole que inicie los servicios de manera más simultánea siempre que sea posible si la configuración de arranque de su disro lo admite (configure CONCURRENCY = shell en / etc / defaults / rc en Debian) y ajustes similares. Para comprobar si está haciendo alguna diferencia con los cambios que realice, use bootchart.org para mostrar lo que sucede antes de modificar las cosas en comparación con las posteriores.
David Spillett
@uray, he revivido lo abandonado e2defragy experimentado con él para lograr tal empaque. Puede encontrarlo en launchpad.net/e2defrag .
psusi
@David: no tengo /etc/defaults/rcpero tengo /etc/default/rcSen Debian 6
ctrl-alt-delor
@psusi: ¿ e2defragahora esto es mejor compatible con Ext3, mejor que shake?
Alex S
0

No hay mucha fragmentación siempre que el disco no se llene demasiado (así que no lo llenes demasiado si puedes evitarlo).

JanC
fuente
2
entonces, si el disco está lleno, ¿necesitamos desfragmentarlo?
uray