Éviter la fragmentation extrême des images système compressées sur NTFS


8

Explication du problème

Je stocke des images de disque Windows créées avec wbadmin sur un lecteur NTFS, et j'ai trouvé que la compression avec la compression NTFS donne une conservation de l'espace de 1,5 à 2 ×, tout en offrant une disponibilité complète pour la restauration.

Mais en cours de compression, le fichier est incroyablement fragmenté, généralement au-dessus de 100'000 fragments pour l'image du disque système.

Avec une telle fragmentation, la défragmentation prend très longtemps (plusieurs heures par image). Certains défragmenteurs ne peuvent même pas le gérer, ils ignorent simplement le fichier ou se bloquent.

La source du problème est, je pense, que le fichier est compressé par des morceaux qui sont enregistrés séparément.

La question

Existe-t-il un bon moyen (rapide) de défragmenter un fichier image tout en le gardant compressé (ou en le compressant sans provoquer une fragmentation extrême)? Peut-il s'agir d'un utilitaire pour défragmenter rapidement un fichier en espace libre continu, ou d'un utilitaire (ou d'une méthode) pour créer un fichier compressé non fragmenté à partir d'un fichier non compressé existant?

Remarques basées sur des commentaires / réponses:

  1. Les outils de compression externes (au noyau Windows) ne sont pas une option dans mon cas. Ils ne peuvent pas décompresser le fichier à la volée (pour décompresser un fichier de 10 Go, j'ai besoin de 10 Go gratuits, ce qui n'est pas toujours à portée de main; cela prend aussi beaucoup de temps); ils ne sont pas accessibles lorsque le système démarre à partir du DVD pour la récupération (c'est exactement quand j'ai besoin de l'image disponible). S'il vous plaît, arrêtez de leur proposer à moins qu'ils ne créent un fichier compressé de manière transparente sur ntfs, comme compact.exe.
  2. La compression NTFS n'est pas si mauvaise pour les images système. C'est plutôt bon sauf pour la fragmentation. Et la décompression ne prend pas beaucoup de temps CPU, réduisant toujours le goulot d'étranglement d'E / S, ce qui améliore les performances dans les cas appropriés (fichier compressé non fragmenté avec un rapport significatif).
  3. Les utilitaires de défragmentation défragmentent les fichiers sans aucun égard s'ils sont compressés. Le seul problème est le nombre de fragments, ce qui provoque un échec de défragmentation, peu importe si le fichier fragmenté est compressé ou non. Si le nombre de fragments n'est pas élevé (environ 10000 est déjà correct), le fichier compressé sera défragmenté et restera compressé et intact.
  4. Le taux de compression NTFS peut être bon, selon les fichiers. Les images système sont généralement compressées à au plus 70% de leur taille d'origine.

    Paire de captures d'écran pour ceux qui ne le croient pas, mais bien sûr, vous pouvez faire vos propres tests.

  5. En fait, j'ai fait des restaurations à partir d'images compressées NTFS, fragmentées et non fragmentées, cela fonctionne, veuillez me faire confiance ou simplement vérifier par vous-même. rem: comme je l'ai trouvé il y a environ un an, cela ne fonctionne pas dans Windows 8.1. Cela fonctionne sous Windows 7, 8 et 10.

Réponse attendue:

une méthode de travail ou un programme pour Windows pour:

  1. compresser le fichier (avec la compression NTFS, et le garder accessible à Windows Recovery) sans créer beaucoup de fragments (peut-être vers une autre partition ou faire une copie compressée; il doit être au moins 3 fois plus rapide sur le disque dur que compact+ defrag),

    ou

  2. pour défragmenter rapidement (au moins 3 fois plus vite que la défragmentation de Windows sur le disque dur) un fichier extrêmement fragmenté, comme un fichier contenant 100K + fragments (il doit rester compressé après la défragmentation).


Je trouve assez étrange que NTFS comprime autant (car les tests du monde réel ne montrent qu'une diminution de 2 à 5%). De plus, NTFS dispose de certaines garanties concernant la fragmentation des fichiers (comme la journalisation). Quelle est la taille des fichiers (avant et après)? De plus, d'après l'image, il semble que Defraggler ne puisse pas défragmenter les fichiers compressés.
Doktoro Reichard

1
1. Vous pouvez créer une image Windows et la compresser. Il est vraiment facilement compressé au moins 1,5x (60-70% ou taille originale). 2. Oui, le défragmenteur et les autres défragmenteurs PEUVENT défragmenter les fichiers compressés. C'est une expérience du monde réel.
LogicDaemon

En outre, le taux de compression est hors sujet, mais voici de vraies images de vrais systèmes Windows 7 Professionnel fraîchement installés (principalement 32 bits, 3 ou 4 64 bits) avec un ensemble de logiciels standard: i.imgur.com/C4XnUUl .png
LogicDaemon

@DoktoroReichard cela dépend du contenu des fichiers. Les fichiers texte et les fichiers épars auront un très bon taux de compression. En général, j'évite les fichiers qui sont déjà compressés comme les fichiers zip, les images, les fichiers audio / vidéo ... et après la compression, je trouve souvent une réduction de 10 à 20% de la taille
phuclv

Réponses:


4

Éviter la fragmentation

Le secret est de ne pas écrire de fichiers non compressés sur le disque pour commencer.

En effet, après avoir compressé un gros fichier déjà existant, il deviendra horriblement fragmenté en raison de la nature de l'algorithme de compression en place NTFS.

Au lieu de cela, vous pouvez éviter complètement cet inconvénient en obligeant le système d'exploitation à compresser le contenu d'un fichier à la volée, avant de l'écrire sur le disque. De cette façon, les fichiers compressés seront écrits sur le disque comme tous les fichiers normaux - sans lacunes involontaires. Pour cela, vous devez créer un dossier compressé. (De la même manière que vous marquez les fichiers à compresser, vous pouvez marquer les dossiers à compresser.) Ensuite, tous les fichiers écrits dans ce dossier seront compressés à la volée (c'est-à-dire écrits sous forme de flux de blocs compressés). Les fichiers compressés de cette façon peuvent toujours être quelque peu fragmentés, mais ce sera loin du désordre créé par la compression NTFS en place.

Exemple

NTFS a compressé l' image système de 232 Mo à 125 Mo:

  • La compression sur place a créé pas moins de 2680 fragments!
  • La compression à la volée a créé 19 fragments.

Défragmentation

Il est vrai que les fichiers compressés NTFS peuvent poser problème à certains outils de défragmentation. Par exemple, un outil que j'utilise normalement ne peut pas les gérer efficacement - il ralentit à une analyse. Ne vous inquiétez pas, l'ancien fidèle Contig de Sysinternals fait le travail de défragmentation des fichiers compressés NTFS rapidement et sans effort!


2

Lire l'article sur Wikipedia sur la compression NTFS :

Les fichiers sont compressés en segments de 16 grappes. Avec des clusters de 4 Ko, les fichiers sont compressés en blocs de 64 Ko. Si la compression réduit 64 Ko de données à 60 Ko ou moins, NTFS traite les pages inutiles de 4 Ko comme des clusters de fichiers clairsemés vides - ils ne sont pas écrits.

Cela permet des temps d'accès aléatoire raisonnables - le système d'exploitation n'a qu'à suivre la chaîne de fragments.

Cependant, les gros fichiers compressibles deviennent très fragmentés car chaque bloc <64 Ko devient un fragment.

Tout d'abord. WBAdmin est essentiellement un utilitaire de sauvegarde qui permet de restaurer un système complet. On s'attend donc à ce que son fichier de sortie soit volumineux (> 4 Go). Comme le montre la citation, les gros fichiers deviennent rapidement fragmentés. Cela est dû à la façon dont NTFS compresse: non pas par fichiers, mais par secteurs.

Une bonne analogie est celle d'un gâteau divisé en plusieurs boîtes, dont certaines ne sont pas vides. Ceci est le fichier initial. La partie de compression serre les morceaux de gâteau, laissant un espace dans les boîtes. Comme les morceaux de gâteau ne sont pas ensemble, en raison de l'espace créé, les morceaux qui composent le gâteau deviennent fragmentés.

Je suis toujours sceptique quant au fait que NTFS donne ce type de taux de compression. Selon un test effectué par MaximumCompression sur plusieurs fichiers, NTFS obtient le score le plus bas en taux de compression, un maigre 40%. Par expérience personnelle, je peux vous dire que c'est beaucoup plus bas que cela, en fait si bas que je n'ai jamais pris la peine de l'utiliser ni vu ses effets.

La meilleure façon d'éviter la fragmentation est d'arrêter de s'appuyer sur NTFS. La plupart des défraggeurs ne parviendront pas à développer ou à déplacer les fichiers compressés. Si c'était le cas, NTFS ne pourrait pas étendre les fichiers, ou s'il le pouvait, car le processus de défragmentation remplirait l'espace restant de la compression (4 Ko), l'expansion fragmenterait les fichiers, comme le fichier ne le ferait pas. être écrit dans les clusters avant-contigus.

Cela étant dit, et si vous n'avez pas besoin de lire le fichier en permanence, utilisez certains des formats recommandés dans le lien ci-dessus. 7z et rar sont assez efficaces (c'est-à-dire qu'ils compressent avec des ratios élevés à un moment décent). Si vous vous souciez de l'espace et non du temps, choisissez un algorithme de type PAQ (même si vous passerez très longtemps à compresser et décompresser les fichiers). Il existe également des algorithmes rapides.

Si vous devez lire le fichier en permanence, ne le compressez pas du tout. NTFS est tout simplement trop salissant.


Cette source (réf. Dans Wikipdia) contient en fait de bonnes informations, bien que techniques, sur l'ensemble du processus.
Doktoro Reichard

le taux de compression est hors sujet, mais voici de vraies images de vrais systèmes Windows 7 Professionnel fraîchement installés (principalement 32 bits, 3 ou 4 64 bits) avec un ensemble de logiciels standard: i.imgur.com/C4XnUUl.png Avec la compression, je conserve vraiment l'espace disque. Et je peux défragmenter des fichiers par la suite, mais cela prend trop de temps.
LogicDaemon

Et sur "éviter" la compression NTFS: je fais cela depuis des années, et cela fonctionne presque parfaitement, à l'exception de la fragmentation. Il ne devrait vraiment pas être utilisé pour les fichiers fréquemment consultés en raison de problèmes de performances, mais la plupart des exécutables et du texte sont très bien compressés. De plus, les fichiers écrits séquentiellement, comme les journaux, ne sont pas tellement fragmentés encore compressés. Et, bien sûr, les images système compressées sont parfaitement restaurables, faites cela plusieurs fois, et vous n'avez pas besoin de les "étendre" explicitement, cela est évidemment fait automatiquement par le bloc par pilote NTFS en mémoire.
LogicDaemon

1
Je ne peux pas vraiment discuter avec les résultats (et pour mémoire, j'ai énoncé les résultats des tests réels, qui étaient similaires aux vôtres, et mon expérience personnelle, qui semble datée). Le lien que j'ai donné en commentaire contient des informations sur les raisons pour lesquelles il n'est pas possible d'éviter le problème de fragmentation. Également dans l'article de Wikipedia, il indique qu'au démarrage, Windows n'a pas encore chargé la bibliothèque de compression pour NTFS, pas sûr du processus de récupération également. Cela pourrait fournir un aperçu.
Doktoro Reichard

Merci alors, mais ce n'est pas la réponse que je voulais obtenir :) J'espérais qu'il y aurait un moyen d'obtenir un fichier compressé mais pas fragmenté, en l'écrivant séquentiellement ou par des blocs de taille identique à la compression. Ou il existe un programme de défragmentation vraiment efficace, qui peut rapidement défragmenter des fichiers uniques lorsqu'il y a suffisamment d'espace libre continu pour lui.
LogicDaemon

0

Bien que ce ne soit pas exactement ce que OP a demandé, j'ai une bonne expérience avec un logiciel tiers nommé Paragon. NTFS par définition détruit horriblement votre système de fichiers lorsque vous compressez (ou parfois même écrivez) des fichiers. Cela s'étend à la consommation de plusieurs entrées MFT, et ... c'est mauvais. Le pilote NTFS de Microsoft ne nettoie même pas cela lorsqu'un fichier est défragmenté. Par conséquent, des outils tiers sont requis. Paragon vous permet de le démarrer en tant que système d'exploitation en lui-même (image ISO) ou de l'installer dans un autre système d'exploitation Windows avec accès au système de fichiers cible. Ensuite, vous pouvez défragmenter à la fois le MFT et les fichiers. C'est à ma connaissance le seul moyen de corriger cette lacune dans NTFS, à moins de reformater le volume.

(Je n'ai aucun rapport avec l'outil ou son créateur autre que c'est la seule chose que j'ai trouvée pour fonctionner réellement)

Aujourd'hui, 2 ans après que la question ait été posée, je recommanderais plutôt la déduplication - cela peut vous permettre d'économiser jusqu'à 90% de disque si les images sont juste "un peu" différentes. Un Nano Server W2016 à l'intérieur d'une VM fonctionne très bien, mais je soupçonne que même FreeNAS ou tout autre élément utilisant ZFS pourrait le gérer.


une URL ou un nom plus précis que simplement "Paragon"? Google ne me comprend pas. Je connais une société de logiciels nommée Paragon, mais je ne sais rien de ses produits qui défragmenteront les fichiers NTFS (il existe un outil de défragmentation MFT, mais je n'ai pas de problèmes MFT). Et merci pour la suggestion ZFS, je vais l'examiner, mais encore une fois, j'en ai besoin pour pouvoir démarrer sur le terrain pour une récupération rapide sur place.
LogicDaemon

-1

Windows a récemment traité les fichiers ZIP comme des dossiers. Les fichiers ZIP peuvent être plus compressés que les fichiers compressés NTFS et ne sont pas intrinsèquement fragmentés, contrairement à NTFS.

Pourquoi ne pas tester une de vos images disque en compressant avec 7-zip au format ZIP et voir si elle est directement utilisable pour la restauration?

Sinon, jouez avec les paramètres de compression 7-zip pour maximiser la compression en utilisant le format le mieux adapté, par exemple 7z. Vous pouvez augmenter la compression bien au-delà de NTFS et donc rendre beaucoup plus d' espace disponible sur votre disque - bien qu'il serait plus rapide de décompresser vers un 2ème disque physique ou RAM, de préférence sur un autre contrôleur et câble d'E / S.

FWIW, la compression est payante pour les SSD non-sandman pour les disques système et pour les fichiers non multimédias - moins d'usure sur le SSD, plus d'espace et des E / S plus rapides pour les fichiers non compressés. Voir http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

Les vidéos, graphiques et autres fichiers de données compressés (comme .XLSX) sont déjà très compressés, donc aucun avantage pour la compression NTFS là-bas. Ni pour les bases de données ou le courrier Outlook avec des mises à jour aléatoires. Mais les fichiers exécutables, txt, html, etc., bénéficient grandement.

La compression est également toujours gagnante pour les petits fichiers, par exemple, si <64 Ko compressés, un seul fragment. Seul problème serait la récupération s'il y a des problèmes de disque.


1
Vous vous trompez à bien des égards ... Windows n'a jamais traité les fichiers ZIP comme des dossiers. Il y a des raisons techniques pour lesquelles cela ne se produira même pas (en gros, seulement un accès séquentiel au contenu des fichiers). Explorer, bien qu'il permette de gérer les zips de la même manière que les dossiers (mais de manière très limitée, il n'extrait même pas d'autres fichiers lorsque j'ouvre un html à partir de zip), n'est pas Windows. Et à la question, j'ai expliqué pourquoi les utilitaires séparés, que ce soit Explorer ou 7-Zip, ne conviennent pas (voir "Remarques basées sur les commentaires / réponses")
LogicDaemon

btw, notez "moins d'usure sur le SSD": si le SSD n'a pas suffisamment de cache, c'est 2 fois plus d'usure. Parce que, lors de l'enregistrement d'un fichier compressé, Windows enregistre d'abord les clusters non compressés, puis les compresse et enregistre ceux compressés (puis supprime les non compressés). C'est ce qui cause la fragmentation dans le sujet de ma question, après tout. Les SSD Samsung sur le lien (btw cassé, supprimez "les" de la queue) ont en effet un cache suffisamment grand.
LogicDaemon

non, Windows ne traite jamais les fichiers zip et cab comme des dossiers. Vous pouvez afficher leur contenu (noms de fichier / dossier) directement sur mon ordinateur, mais vous ne pouvez pas y accéder de manière transparente comme une image disque ou un fichier NTFS compressé. Vous devez encore extraire le fichier dans l'archive où le voir / le modifier
phuclv
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.