Evitar la fragmentación extrema de las imágenes del sistema comprimido en NTFS

8

Explicación del problema

Estoy almacenando imágenes de disco de Windows creadas con wbadmin en la unidad NTFS, y descubrí que comprimir y luego con la compresión NTFS proporciona una conservación de espacio de 1.5-2 ×, aún dando disponibilidad total para la restauración.

Pero en el proceso de compresión, el archivo se fragmenta increíblemente, generalmente por encima de los 100.000 fragmentos de la imagen de disco del sistema.

Con tal fragmentación, la desfragmentación lleva mucho tiempo (varias horas por imagen). Algunos desfragmentadores incluso no pueden manejarlo, simplemente omiten el archivo o se bloquean.

La fuente del problema es, creo, que el archivo está comprimido por fragmentos que se guardan por separado.

La pregunta

¿Hay una buena forma (rápida) de desfragmentar el archivo de imagen y mantenerlo comprimido (o comprimirlo sin causar una fragmentación extrema)? ¿Puede ser una utilidad para desfragmentar rápidamente el archivo en espacio libre continuo, o alguna utilidad (o método) para crear un archivo comprimido no fragmentado a partir de archivos no comprimidos existentes?

Observaciones basadas en comentarios / respuestas:

  1. Las herramientas de compresión externas (al núcleo de Windows) no son una opción en mi caso. No pueden descomprimir el archivo sobre la marcha (para descomprimir el archivo de 10 Gb necesito 10 Gb gratis, lo que no siempre está disponible; además, lleva mucho tiempo); no son accesibles cuando el sistema arranca desde DVD para recuperación (es exactamente cuando necesito la imagen disponible). Por favor, deje de ofrecerlos a menos que creen un archivo comprimido de forma transparente en ntfs, como compact.exe.
  2. La compresión NTFS no es tan mala para las imágenes del sistema. Es bastante bueno, excepto por la fragmentación. Y la descompresión no toma mucho tiempo de CPU, lo que reduce el cuello de botella de E / S, lo que aumenta el rendimiento en los casos apropiados (archivo comprimido no fragmentado con una proporción significativa).
  3. Las utilidades de desfragmentación desfragmentan archivos sin tener en cuenta si están comprimidos. El único problema es el número de fragmentos, lo que causa un error de desfragmentación sin importar si el archivo fragmentado está comprimido o no. Si el número de fragmentos no es alto (aproximadamente 10000 ya está bien), el archivo comprimido se desfragmentará y permanecerá comprimido e intacto.
  4. La relación de compresión NTFS puede ser buena, dependiendo de los archivos. Las imágenes del sistema generalmente se comprimen como máximo en un 70% de su tamaño original.

    Par de capturas de pantalla para aquellos que no creen, pero, por supuesto, puedes hacer tus propias pruebas.

  5. Realmente hice restauraciones a partir de imágenes comprimidas de NTFS, tanto fragmentadas como no fragmentadas, funciona, confía en mí o simplemente compruébalo tú mismo. rem: como descubrí hace un año, no funciona en Windows 8.1. Todavía funciona en Windows 7, 8 y 10.

Respuesta esperada:

un método de trabajo o un programa para Windows para:

  1. comprima el archivo (con compresión NTFS y manténgalo accesible para Windows Recovery) sin crear muchos fragmentos (tal vez en otra partición o hacer una copia comprimida; debe ser al menos 3 veces más rápido en HDD que compact+ defrag),

    o

  2. para desfragmentar rápidamente (al menos 3 veces más rápido que Windows defrag en HDD) un archivo fragmentado de forma devastadora, como uno que contenga más de 100K fragmentos (debe quedar comprimido después de la desfragmentación).

LogicDaemon
fuente
Me parece bastante extraño que NTFS comprima tanto (ya que las pruebas del mundo real muestran solo una disminución del 2 al 5%). Además, NTFS tiene algunas garantías con respecto a la fragmentación de archivos (como el registro en diario). ¿Qué tan grandes son los archivos (antes y después)? Además, de la imagen, parece que Defraggler no puede desfragmentar archivos comprimidos.
Doktoro Reichard
1
1. Puede hacer que Windows cree una imagen y comprimirlo. Realmente se comprime fácilmente al menos 1.5x (60-70% o tamaño original). 2. Sí, Defraggler y otros defragmeneters PUEDEN desfragmentar archivos comprimidos. Esta es la experiencia del mundo real.
LogicDaemon
Además, la relación de compresión está fuera de tema, pero aquí hay imágenes reales de sistemas Windows 7 Professional reales recién instalados (en su mayoría de 32 bits, 3 o 4 de 64 bits) con un conjunto estándar de software: i.imgur.com/C4XnUUl .png
LogicDaemon
@DoktoroReichard depende del contenido de los archivos. Los archivos de texto y los archivos dispersos tendrán una muy buena relación de compresión. Por lo general, evito los archivos que ya están comprimidos, como archivos zip, imágenes, archivos de audio / video ... y después de comprimir, a menudo encuentro una disminución del tamaño del 10-20%
phuclv

Respuestas:

4

Evitar la fragmentación

Para empezar, el secreto es no escribir archivos sin comprimir en el disco.

De hecho, después de comprimir un archivo grande ya existente, se fragmentará terriblemente debido a la naturaleza del algoritmo de compresión in situ NTFS.

En cambio, puede evitar este inconveniente por completo haciendo que el sistema operativo comprima el contenido de un archivo sobre la marcha, antes de escribirlo en el disco. De esta manera, los archivos comprimidos se escribirán en el disco como cualquier archivo normal, sin espacios no intencionales. Para este propósito, debe crear una carpeta comprimida. (De la misma manera que marca los archivos que se van a comprimir, puede marcar las carpetas que se van a comprimir). Luego, todos los archivos escritos en esa carpeta se comprimirán sobre la marcha (es decir, se escribirán como secuencias de bloques comprimidos). Los archivos comprimidos de esta manera aún pueden terminar algo fragmentados, pero estará muy lejos del desastre que crea la compresión NTFS en el lugar.

Ejemplo

NTFS comprimido imagen de sistema de 232 Mb a 125 Mb:

  • ¡La compresión en el lugar creó la friolera de 2680 fragmentos!
  • La compresión sobre la marcha creó 19 fragmentos.

Desfragmentación

Es cierto que los archivos comprimidos NTFS pueden representar un problema para algunas herramientas de desfragmentación. Por ejemplo, una herramienta que normalmente uso no puede manejarlos de manera eficiente, se ralentiza a un rastreo. No se preocupe, el viejo y confiable Contig de Sysinternals hace el trabajo de desfragmentar archivos comprimidos NTFS de manera rápida y sin esfuerzo.

Slider2k
fuente
2

Leyendo el artículo en Wikipedia sobre la compresión NTFS :

Los archivos se comprimen en trozos de 16 clústeres. Con grupos de 4 kB, los archivos se comprimen en fragmentos de 64 kB. Si la compresión reduce 64 kB de datos a 60 kB o menos, NTFS trata las páginas innecesarias de 4 kB como grupos de archivos dispersos vacíos; no se escriben.

Esto permite tiempos de acceso aleatorio razonables: el sistema operativo solo tiene que seguir la cadena de fragmentos.

Sin embargo, los archivos comprimibles grandes se fragmentan mucho ya que cada fragmento <64 KB se convierte en un fragmento.

Lo primero es lo primero. WBAdmin es, en esencia, una utilidad de respaldo que puede restaurar un sistema completo. Por lo tanto, se espera que su archivo de salida sea grande (> 4 Gb). Como se muestra en la cita, los archivos grandes se fragmentan rápidamente. Esto se debe a la forma en que NTFS comprime: no por archivos, sino por sectores.

Una buena analogía es que un pastel se divide en varias cajas, algunas de las cuales no están vacías. Este es el archivo inicial. La parte de compresión aprieta los pedazos de pastel, dejando un espacio en las cajas. Como los pedazos del pastel no están juntos, debido al espacio creado, los pedazos que componen el pastel se fragmentan.

Todavía soy escéptico sobre NTFS dando ese tipo de relación de compresión. Según una prueba realizada por MaximumCompression en varios archivos, NTFS obtiene el puntaje más bajo en relación de compresión, un mísero 40%. Por experiencia personal, puedo decirle que es mucho más bajo que eso, de hecho, tan bajo que nunca me molesté en usarlo ni he visto sus efectos.

La mejor manera de evitar la fragmentación es dejar de depender de NTFS. La mayoría de los desfragmentadores no podrán expandir o mover los archivos comprimidos. Si de alguna manera lo hicieran, NTFS no podría expandir los archivos, o si pudiera, ya que el proceso de desfragmentación llenaría el espacio sobrante de la compresión (los 4kB), la expansión fragmentaría los archivos, ya que el archivo no lo haría. ser escrito en los grupos anteriores a contiguos.

Dicho esto, y si no necesita leer el archivo constantemente, use algunos de los formatos recomendados en el enlace anterior. 7z y rar son bastante eficientes (es decir, se comprimen con altas proporciones en un momento decente). Si le importa el espacio y no el tiempo, elija un algoritmo de tipo PAQ (aunque pasará mucho tiempo comprimiendo y descomprimiendo los archivos). También hay algoritmos rápidos disponibles.

Si necesita leer el archivo constantemente, no lo comprima en absoluto. NTFS es demasiado desordenado.

Doktoro Reichard
fuente
Esta fuente (ref. En Wikipdia) contiene información buena, aunque técnica, sobre todo el proceso.
Doktoro Reichard
la relación de compresión está fuera de tema, pero aquí hay imágenes reales de sistemas Windows 7 Professional reales recién instalados (en su mayoría de 32 bits, 3 o 4 de 64 bits) con un conjunto estándar de software: i.imgur.com/C4XnUUl.png Con la compresión realmente ahorro espacio en disco. Y luego puedo desfragmentar archivos, pero lleva demasiado tiempo.
LogicDaemon
Y sobre "evitar" la compresión NTFS: estoy haciendo esto durante años, y funciona casi perfectamente, excepto por la fragmentación. Realmente no debería usarse para archivos a los que se accede con frecuencia debido a problemas de rendimiento, pero la mayoría de los ejecutables y el texto se comprimen muy bien. Además, los archivos escritos secuencialmente, como los registros, no se fragmentan tanto que aún se comprimen. Y, por supuesto, las imágenes del sistema comprimido son perfectamente restaurables, se hacen muchas veces, y no es necesario "expandirlas" explícitamente, esto obviamente lo hace automáticamente el controlador NTFS bloqueando en la memoria.
LogicDaemon
1
Realmente no puedo discutir con los resultados (y para el registro, dije los resultados reales de la prueba, que eran similares a los suyos, y mi experiencia personal, que parece estar fechada). El enlace que proporcioné en el comentario contiene información sobre por qué no es posible evitar el problema de fragmentación. También en el artículo de Wikipedia dice que en el arranque, Windows todavía tiene que cargar la biblioteca de compresión para NTFS, no estoy seguro sobre el proceso de recuperación también. Esto podría proporcionar una idea.
Doktoro Reichard
Gracias entonces, pero no es la respuesta que quería obtener :) Esperaba que hubiera una forma de comprimir el archivo pero no fragmentarlo, escribiéndolo secuencialmente o por bloques del mismo tamaño que el fragmento de compresión. O hay un programa de desfragmentación realmente eficiente, que puede desfragmentar rápidamente archivos individuales cuando hay suficiente espacio libre continuo para ello.
LogicDaemon
0

Aunque no es exactamente lo que OP pidió, he tenido una buena experiencia con un software de terceros llamado Paragon. NTFS, por definición, destruye su sistema de archivos de forma horrible cuando comprime (o incluso a veces escribe) archivos. Esto se extiende al consumo de múltiples entradas MFT y ... Es malo. El controlador NTFS de Microsoft ni siquiera limpia esto cuando un archivo se desfragmenta. Por lo tanto, se requieren herramientas de terceros. Paragon le permite iniciarlo como un sistema operativo en sí mismo (imagen ISO) o instalarlo en otro sistema operativo Windows con acceso al sistema de archivos de destino. Luego puede desfragmentar tanto la MFT como los archivos. Esta es, según mi conocimiento, la única forma de corregir esta deficiencia en NTFS, sin reformatear el volumen.

(No tengo ninguna relación con la herramienta o su creador aparte de que es lo único que realmente funciona)

Hoy, 2 años después de que aparentemente se hizo la pregunta, prefiero recomendar la deduplicación; esto puede proporcionarle más del 90% de ahorro en disco si las imágenes son "un poco" diferentes. Un Nano Server W2016 dentro de una VM funciona muy bien, pero sospecho que incluso FreeNAS o cualquier otra cosa que use ZFS podría manejarlo.

Miguel
fuente
¿alguna URL o más nombre de precice que solo "Paragon"? Google no me entiende. Conozco una compañía de software llamada Paragon, pero no sé nada acerca de sus productos que desfragmentarán los archivos NTFS (hay una herramienta de desfragmentación MFT, pero no tengo problemas MFT). Y gracias por la sugerencia de ZFS, lo investigaré, pero nuevamente, lo necesito para poder arrancar en el campo para una recuperación rápida en el lugar.
LogicDaemon
-1

Windows últimamente ha estado tratando los archivos ZIP como carpetas. Los archivos ZIP pueden estar más comprimidos que los archivos comprimidos NTFS y no están inherentemente fragmentados, a diferencia de NTFS.

¿Por qué no prueba una de sus imágenes de disco al comprimir con 7-zip en formato ZIP y ver si es directamente utilizable para la restauración?

Si no, juegue con los parámetros de compresión 7-zip para maximizar la compresión usando el formato que sea mejor, por ejemplo, 7z. Puede aumentar la compresión mucho más allá de NTFS y, por lo tanto, hacer mucho más espacio disponible en su disco, aunque sería más rápido descomprimirlo en un segundo disco físico o RAM, preferiblemente en un controlador y cable IO diferentes.

FWIW, la compresión vale la pena para los SSD que no son de Sandman para discos del sistema y para archivos que no son de medios: menos desgaste en el SSD, más espacio y E / S más rápida para archivos no comprimidos. Ver http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

Los archivos de video, gráficos y otros datos comprimidos (como .XLSX) ya están muy comprimidos, por lo que no hay ningún beneficio para la compresión NTFS. Tampoco para bases de datos o correo de Outlook con actualizaciones aleatorias. Pero los archivos ejecutables, txt, html, etc., se benefician enormemente.

La compresión también es siempre una ganancia para archivos pequeños, por ejemplo, si <64K está comprimido, solo un fragmento. La única molestia sería la recuperación si hay problemas de disco.

tOM
fuente
1
Hombre, te equivocas de muchas maneras ... Principalmente, Windows nunca ha tratado los archivos ZIP como carpetas. Hay razones técnicas por las cuales esto ni siquiera va a suceder (básicamente, solo acceso secuencial al contenido de los archivos). Explorer, aunque permite administrar archivos zip de manera similar a las carpetas (pero de manera muy limitada, ni siquiera extrae otros archivos cuando abro un html desde zip), no es Windows. Y en la pregunta que expliqué, ¿por qué las utilidades separadas, ya sea Explorer o 7-Zip, no encajan (ver "Comentarios basados ​​en comentarios / respuestas")
LogicDaemon
por cierto, nota sobre "menos desgaste en el SSD": si el SSD no tiene suficiente caché, es 2 veces más desgaste. Porque, al guardar un archivo comprimido, Windows primero guarda los clústeres no comprimidos, luego los comprime y guarda los comprimidos (luego elimina los no comprimidos). Esto es lo que causa fragmentación en el tema de mi pregunta, después de todo. Los SSD de Samsung en el enlace (por cierto roto, elimine "les" de la cola) tienen una memoria caché lo suficientemente grande.
LogicDaemon
no, Windows nunca trata los archivos zip y cab como carpetas. Puede ver sus contenidos (nombres de archivo / carpeta) directamente en mi computadora, pero no puede acceder a ellos de forma transparente como una imagen de disco o un archivo NTFS comprimido. Todavía tiene que extraer el archivo en el archivo en algún lugar para verlo / editarlo
phuclv