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:
- 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
. - 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).
- 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.
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.
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:
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
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).
fuente
Respuestas:
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:
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.
fuente
Leyendo el artículo en Wikipedia sobre la compresión NTFS :
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.
fuente
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.
fuente
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.
fuente