Evitare la frammentazione estrema delle immagini di sistema compresse su NTFS


8

Spiegazione del problema

Sto archiviando le immagini del disco di Windows create con wbadmin sull'unità NTFS e ho scoperto che la compressione con la compressione NTFS offre una conservazione dello spazio di 1,5-2 ×, garantendo comunque la piena disponibilità per il ripristino.

Ma durante il processo di compressione, i file vengono frammentati in modo folle, di solito sopra i 100.000 frammenti per l'immagine del disco di sistema.

Con tale frammentazione, la deframmentazione richiede molto tempo (più ore per immagine). Alcuni deframmentatori non riescono nemmeno a gestirlo, saltano semplicemente il file o si arrestano in modo anomalo.

La fonte del problema è, penso, che il file sia compresso da blocchi che vengono salvati separatamente.

La domanda

Esiste un buon modo (veloce) per deframmentare il file di immagine ma mantenerlo compresso (o comprimerlo senza causare estrema frammentazione)? Potrebbe essere un'utilità per deframmentare rapidamente i file nello spazio libero continuo o un'utilità (o metodo) per creare file compressi non frammentati da quelli non compressi esistenti?

Osservazioni basate su commenti / risposte:

  1. Strumenti di compressione esterni (al kernel di Windows) non sono un'opzione nel mio caso. Non riescono a decomprimere il file al volo (per decomprimere il file da 10 GB ho bisogno di 10 GB gratuiti, che non è sempre a portata di mano; inoltre, richiede molto tempo); non sono accessibili quando il sistema viene avviato dal DVD per il ripristino (è esattamente quando ho bisogno dell'immagine disponibile). Per favore, smetti di offrirli a meno che non creino file compressi in modo transaprente su ntfs, come compact.exe.
  2. La compressione NTFS non è poi così male per le immagini di sistema. È piuttosto buono, tranne per la frammentazione. E la decompressione non richiede molto tempo della CPU, riducendo comunque il collo di bottiglia di IO, il che aumenta le prestazioni nei casi appropriati (file compresso non frammentato con un rapporto significativo).
  3. Le utilità di deframmentazione deframmentano i file senza alcun riguardo se sono compressi. L'unico problema è il numero di frammenti, che causa un errore di deframmentazione, indipendentemente dal fatto che il file frammentato sia compresso o meno. Se il numero di frammenti non è elevato (circa 10000 è già ok), il file compresso verrà deframmentato e rimarrà compresso e intatto.
  4. Il rapporto di compressione NTFS può essere buono, a seconda dei file. Le immagini di sistema sono generalmente compresse al massimo al 70% delle loro dimensioni originali.

    Coppia di schermate per chi non ci crede, ma spesso puoi fare i tuoi test.

  5. In realtà ho fatto restauri da immagini compresse NTFS, sia frammentate che non frammentate, funziona, per favore fidati di me o semplicemente controllalo tu stesso. rem: come ho scoperto circa un anno fa, non funziona in Windows 8.1. Funziona su Windows 7, 8 e 10.

Risposta prevista:

un metodo di lavoro o un programma per Windows per:

  1. comprimere il file (con compressione NTFS e mantenerlo accessibile al ripristino di Windows) senza creare molti frammenti (forse in un'altra partizione o creare una copia compressa; deve essere almeno 3 volte più veloce sull'HDD di compact+ defrag),

    o

  2. per deframmentare rapidamente (almeno 3 volte più velocemente di Windows Defrag su HDD) file frammentati in modo devastante, come uno contenente 100K + frammenti (deve rimanere compresso dopo la deframmentazione).


Trovo abbastanza strano per NTFS comprimere così tanto (poiché i test del mondo reale mostrano solo una riduzione del 2-5%). Inoltre, NTFS ha alcune garanzie riguardo alla frammentazione dei file (come l'inserimento nel journal). Quanto sono grandi i file (prima e dopo)? Inoltre, dall'immagine, sembra che Defraggler non possa deframmentare i file compressi.
Doktoro Reichard,

1
1. Puoi creare tu stesso l'immagine di Windows e comprimerla. È veramente facilmente compresso almeno 1,5x (60-70% o dimensioni originali). 2. Sì, Defraggler e altri deframmenetri POSSONO deframmentare i file compressi. Questa è l'esperienza del mondo reale.
LogicDaemon il

Inoltre, il rapporto di compressione è fuori tema, ma qui ci sono immagini reali di sistemi Windows 7 Professional appena installati (per lo più a 32 bit, 3 o 4 a 64 bit) con set di software standard: i.imgur.com/C4XnUUl .png
LogicDaemon il

@DoktoroReichard dipende dal contenuto dei file. I file di testo e i file sparsi avranno un ottimo rapporto di compressione. In genere evito i file che sono già compressi come file zip, immagini, file audio / video ... e dopo la compressione trovo spesso una dimensione ridotta del 10-20%
phuclv,

Risposte:


4

Evitare la frammentazione

Il segreto è non scrivere file non compressi sul disco per cominciare.

Infatti, dopo aver compresso un file di grandi dimensioni già esistente, esso diventerà orribilmente frammentato a causa della natura dell'algoritmo di compressione sul posto NTFS.

Invece, puoi evitare del tutto questo inconveniente facendo comprimere al volo il contenuto di un file, prima di scriverlo sul disco. In questo modo i file compressi verranno scritti sul disco come tutti i file normali, senza lacune involontarie. A tale scopo è necessario creare una cartella compressa. (Allo stesso modo in cui si contrassegnano i file da comprimere, è possibile contrassegnare le cartelle da comprimere.) Successivamente, tutti i file scritti in quella cartella verranno compressi al volo (ovvero scritti come flussi di blocchi compressi). I file compressi in questo modo possono comunque essere frammentati, ma sarà molto lontano dal caos creato dalla compressione NTFS sul posto.

Esempio

Immagine di sistema NTFS compressa da 232 Mb a 125 Mb:

  • La compressione sul posto ha creato 2680 frammenti enormi !
  • La compressione al volo ha creato 19 frammenti.

deframmentazione

È vero che i file compressi NTFS possono rappresentare un problema per alcuni strumenti di deframmentazione. Ad esempio, uno strumento che di solito utilizzo non è in grado di gestirli in modo efficiente: rallenta fino a gattonare. Non preoccuparti , il vecchio fidato Contig di Sysinternals ha il compito di deframmentare i file compressi NTFS in modo rapido e senza sforzo!


2

Leggendo l'articolo su Wikipedia sulla compressione NTFS :

I file sono compressi in blocchi di 16 cluster. Con cluster da 4 kB, i file vengono compressi in blocchi da 64 kB. Se la compressione riduce 64 kB di dati a 60 kB o meno, NTFS considera le pagine da 4 kB non necessarie come cluster di file sparsi vuoti, non vengono scritti.

Ciò consente tempi di accesso casuali ragionevoli: il sistema operativo deve solo seguire la catena di frammenti.

Tuttavia, i file comprimibili di grandi dimensioni diventano altamente frammentati poiché ogni blocco <64 KB diventa un frammento.

Cominciando dall'inizio. WBAdmin è in sostanza un'utilità di backup che consente di ripristinare un sistema completo. Quindi, si prevede che il suo file di output sia di grandi dimensioni (> 4 Gb). Come mostrato dalla citazione, i file di grandi dimensioni diventano rapidamente frammentati. Ciò è dovuto al modo in cui NTFS comprime: non per file, ma per settori.

Una buona analogia è che una torta viene suddivisa in più scatole, alcune delle quali non sono vuote. Questo è il file iniziale. La parte di compressione comprime i pezzi di torta, lasciando uno spazio nelle scatole. Poiché i pezzi di torta non sono uniti, a causa dello spazio creato, i pezzi che compongono la torta diventano frammentati.

Sono ancora scettico sul fatto che NTFS offra quel tipo di rapporto di compressione. Secondo un test effettuato da MaximumCompression su più file, NTFS ottiene il punteggio più basso nel rapporto di compressione, un misero 40%. Per esperienza personale posso dirti che è molto inferiore a quello, in effetti così basso che non mi sono mai preso la briga di usarlo né ho visto i suoi effetti.

Il modo migliore per evitare la frammentazione è smettere di fare affidamento su NTFS. La maggior parte dei defragger non riuscirà a espandere o spostare i file compressi. Se in qualche modo lo facessero, NTFS non potrebbe essere in grado di espandere i file, o se potesse, poiché il processo di deframmentazione riempirebbe lo spazio rimanente dalla compressione (4kB), l'espansione frammenterebbe i file, poiché il file non lo farebbe essere scritto nei cluster prima contigui.

Detto questo, e se non hai bisogno di leggere costantemente il file, usa alcuni dei formati consigliati nel link sopra. 7z e rar sono abbastanza efficienti (cioè si comprimono con rapporti elevati in un tempo decente). Se ti interessa lo spazio e non il tempo, scegli un algoritmo di tipo PAQ (anche se impiegherai molto tempo a comprimere e decomprimere i file). Ci sono anche algoritmi veloci disponibili.

Se devi leggere costantemente il file, non comprimerlo affatto. NTFS è troppo dannatamente disordinato.


Questa fonte (rif. In Wikipdia) contiene in realtà buone informazioni, sebbene tecniche, sull'intero processo.
Doktoro Reichard,

il rapporto di compressione è fuori tema, ma qui ci sono immagini reali di sistemi Windows 7 Professional appena installati (per lo più a 32 bit, 3 o 4 a 64 bit) con set di software standard: i.imgur.com/C4XnUUl.png Con la compressione, risparmio davvero spazio su disco. E poi posso deframmentare i file, ma ci vuole troppo tempo.
LogicDaemon il

E a proposito di "evitare" la compressione NTFS: lo sto facendo da anni e funziona quasi perfettamente, fatta eccezione per la frammentazione. In realtà non dovrebbe essere usato per i file a cui si accede frequentemente a causa di problemi di prestazioni, ma la maggior parte degli eseguibili e del testo sono compressi molto bene. Inoltre, i file scritti in sequenza, come i registri, non vengono frammentati e vengono ancora compressi. E, naturalmente, le immagini di sistema compresse sono perfettamente ripristinabili, fatto molte volte e non è necessario "espanderle" esplicitamente, questo ovviamente viene fatto automaticamente dal driver NTFS in memoria.
LogicDaemon il

1
Non posso davvero discutere con i risultati (e per la cronaca, ho dichiarato i risultati dei test effettivi, che erano simili ai tuoi, e la mia esperienza personale, che sembra essere datata). Il link che ho dato nel commento contiene informazioni sul perché non è possibile evitare il problema di frammentazione. Inoltre nell'articolo di Wikipedia si afferma che all'avvio, Windows deve ancora caricare la libreria di compressione per NTFS, non sicuro del processo di recupero. Questo potrebbe fornire informazioni.
Doktoro Reichard,

Grazie, ma non è la risposta che volevo ottenere :) Speravo che ci fosse un modo per ottenere un file compresso ma non frammentato, scrivendolo in sequenza o con blocchi di dimensioni uguali a quelli del blocco di compressione. Oppure esiste un programma di deframmentazione davvero efficiente, che può deframmentare rapidamente singoli file quando c'è abbastanza spazio libero continuo per esso.
LogicDaemon

0

Sebbene non sia esattamente quello che ha chiesto OP, ho avuto una buona esperienza con un software di terze parti chiamato Paragon. NTFS per definizione trasgredisce il tuo filesystem in modo orribile quando comprimi (o talvolta scrivi) file. Questo si estende al consumo di più voci MFT e ... È male. Il driver NTFS di Microsoft non lo pulisce nemmeno quando un file viene deframmentato. Pertanto, sono richiesti strumenti di terze parti. Paragon consente di avviarlo come sistema operativo in sé (immagine ISO) o di installarlo in un altro sistema operativo Windows con accesso al filesystem di destinazione. Quindi è possibile deframmentare sia la MFT che i file. Per quanto ne so, questo è l'unico modo per correggere questa carenza in NTFS, a meno di riformattare il volume.

(Non ho alcuna relazione con lo strumento o il suo creatore tranne che è l'unica cosa che ho trovato effettivamente funzionare)

Oggi, 2 anni dopo la domanda apparentemente posta, preferirei raccomandare la deduplicazione - questo può darti fino al 90% di risparmio sul disco se le immagini sono solo "un po '" diverse. Un Nano Server W2016 all'interno di una VM funziona davvero bene, ma sospetto che anche FreeNAS o qualsiasi altra cosa che usi ZFS possa gestirlo.


qualsiasi URL o nome più preciso di un semplice "Paragon"? Google non mi capisce. Conosco la società di software di nome Paragon, ma non so nulla dei suoi prodotti che deframmenteranno i file NTFS (esiste uno strumento di deframmentazione MFT, ma non ho problemi MFT). E grazie per il suggerimento ZFS, lo esaminerò, ma ancora una volta, ho bisogno che sia in grado di avviarsi sul campo per un rapido ripristino sul posto.
LogicDaemon

-1

Recentemente Windows ha trattato i file ZIP come cartelle. I file ZIP possono essere più compressi dei file compressi NTFS e non sono intrinsecamente frammentati, a differenza di NTFS.

Perché non testare una delle immagini del disco comprimendo con 7-zip in formato ZIP e vedere se è direttamente utilizzabile per il ripristino?

In caso contrario, gioca con i parametri di compressione a 7 zip per massimizzare la compressione utilizzando qualsiasi formato sia meglio, ad esempio 7z. È possibile aumentare la compressione ben oltre NTFS e quindi rendere disponibile molto più spazio sul disco, anche se sarebbe più veloce decomprimerlo su un secondo disco fisico o RAM, preferibilmente su un controller e un cavo IO diversi.

FWIW, la compressione paga per gli SSD non sandman per i dischi di sistema e per i file non multimediali: meno usura sull'SSD, più spazio e I / O più veloce per i file non compressi. Vedi http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

Video, grafica e altri file di dati compressi (come .XLSX) sono già molto compressi, quindi nessun vantaggio per la compressione NTFS lì. Né per database o posta di Outlook con aggiornamenti casuali. Ma i file eseguibili, txt, html, ecc. Beneficiano notevolmente.

La compressione è anche sempre vincente per file di piccole dimensioni, ad esempio, se <64 KB compressi, solo un frammento. Solo il problema sarebbe il recupero in caso di problemi con il disco.


1
Amico, ti sbagli in tanti modi ... Principalmente, Windows non ha mai trattato i file ZIP come cartelle. Ci sono ragioni tecniche per cui questo non accadrà (fondamentalmente, solo l'accesso sequenziale al contenuto dei file). Explorer, sebbene permetta di gestire le zip in modo simile alle cartelle (ma in modo molto limitato, non estrae nemmeno altri file quando apro un html da zip), non è Windows. E in questione ho spiegato, perché le utility separate, che siano Explorer o 7-Zip, non si adattano (vedi "Osservazioni basate su commenti / risposte")
LogicDaemon,

a proposito, nota su "meno usura sull'SSD": se l'SSD non ha cache abbastanza grande, è 2 volte più usura. Perché, quando si salva un file compresso, Windows prima salva i cluster non compressi, quindi li comprime e salva quelli compressi (quindi rimuove i non compressi). Questo è ciò che causa la frammentazione nell'argomento della mia domanda, dopo tutto. Gli SSD Samsung sul collegamento (tra parentesi, rimossi "le" dalla coda) hanno effettivamente una cache abbastanza grande.
LogicDaemon

no, Windows non tratta mai i file zip e cab come cartelle. È possibile visualizzare i loro contenuti (nomi di file / cartelle) direttamente sul mio computer, ma non è possibile accedervi in ​​modo trasparente come un'immagine del disco o file NTFS compresso. Devi ancora estrarre il file nell'archivio dove poterlo visualizzare / modificare
phuclv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.