Evitando a fragmentação extrema de imagens de sistema compactadas no NTFS

8

Explicação do problema

Eu estou armazenando imagens de disco do Windows criadas com wbadmin na unidade NTFS, e eu encontrei a compactação, em seguida, com a compactação NTFS oferece 1,5-2 × de conservação de espaço, ainda dando total disponibilidade para a restauração.

Mas no processo de compactação, o arquivo fica insanamente fragmentado, geralmente acima de 100.000 fragmentos para a imagem de disco do sistema.

Com essa fragmentação, a desfragmentação demora muito tempo (várias horas por imagem). Alguns desfragmentadores ainda não conseguem lidar com isso, eles simplesmente pulam o arquivo ou travam.

A origem do problema é, penso eu, que o arquivo é compactado por blocos que são salvos separadamente.

A questão

Existe uma maneira boa (rápida) de obter o arquivo de imagem desfragmentado e mantê-lo compactado (ou compactá-lo sem causar extrema fragmentação)? Pode ser algum utilitário para desfragmentar rapidamente o arquivo para o espaço livre contínuo ou algum utilitário (ou método) para criar um arquivo compactado não fragmentado a partir de um arquivo não compactado existente?

Comentários baseados em comentários / respostas:

  1. Ferramentas de compressão externas (para o kernel do Windows) não são uma opção no meu caso. Eles não podem descompactar arquivos on-the-fly (para descompactar arquivo de 10 Gb eu preciso de 10 Gb grátis, o que nem sempre está à mão; também, leva muito tempo); eles não estão acessíveis quando o sistema é inicializado a partir do DVD para recuperação (é exatamente quando eu preciso da imagem disponível). Por favor, pare de oferecê-los a menos que eles criem arquivos compactados transaprentemente em ntfs, como compact.exe.
  2. A compactação NTFS não é tão ruim para imagens do sistema. É bom, exceto pela fragmentação. E a descompactação não demanda muito tempo de CPU, reduzindo ainda o gargalo de E / S, o que aumenta o desempenho em casos apropriados (arquivo compactado não fragmentado com proporção significativa).
  3. Utilitários de desfragmentação desfragmentar arquivos sem qualquer respeito se eles são compactados. O único problema é o número de fragmentos, o que causa uma falha de desfragmentação, não importando se o arquivo fragmentado está compactado ou não. Se o número de fragmentos não for alto (cerca de 10000 já está ok), o arquivo compactado será desfragmentado e permanecerá compactado e intacto.
  4. A taxa de compactação NTFS pode ser boa, dependendo dos arquivos. As imagens do sistema são geralmente compactadas para no máximo 70% do tamanho original.

    Par de screenshots para aqueles que não acreditam, mas ofc, você pode fazer seus próprios testes.

  5. Eu realmente fiz restaurações de imagens compactadas com NTFS, fragmentadas e não fragmentadas, funciona, por favor, confie em mim ou apenas verifique você mesmo. rem: como eu encontrei em torno de um ano atrás, ele não funciona no Windows 8.1. Até agora funciona no Windows 7, 8 e 10.

Resposta esperada:

um método de trabalho ou um programa para o Windows para:

  1. comprimir arquivo (com compactação NTFS, e mantê-lo acessível para recuperação do Windows) sem criar um monte de fragmentos (talvez para outra partição ou fazer uma cópia compactada; deve ser pelo menos 3x mais rápido no disco rígido do que compact + defrag )

    ou

  2. para rapidamente (pelo menos 3x mais rápido do que a desfragmentação do Windows no HDD) desfragmentar arquivo devastadamente fragmentado, como um contendo 100K + fragmentos (ele deve permanecer compactado após a desfragmentação).

LogicDaemon
fonte
Eu acho bastante estranho para o NTFS compactar muito (como testes do mundo real mostram apenas uma redução de 2 a 5%). Além disso, o NTFS tem algumas salvaguardas relacionadas à fragmentação de arquivos (como o registro no diário). Quão grandes são os arquivos (antes e depois)? Além disso, a partir da imagem, parece Defraggler não pode desfragmentar arquivos compactados.
Doktoro Reichard
1
1. Você pode fazer a imagem do Windows e compactá-lo. É realmente facilmente comprimido pelo menos 1,5x (60-70% ou tamanho original). 2. Sim, Defraggler e outros defragmeneters podem desfragmentar arquivos compactados. Esta é uma experiência do mundo real.
LogicDaemon
Além disso, a taxa de compactação está fora do tópico, mas aqui estão imagens reais de sistemas Windows 7 Professional recém-instalados, (na maioria das vezes 32 bits, 3 ou 4 de 64 bits) com conjunto padrão de software: i.imgur.com/C4XnUUl.png
LogicDaemon
@DoktoroReichard depende do conteúdo dos arquivos. Arquivos de texto e arquivos esparsos terão uma taxa de compactação muito boa. Normalmente, eu evito arquivos que já estão comprimidos, como arquivos zip, imagens, arquivos de áudio / vídeo ... e depois de compactar, muitas vezes acho 10-20% menor em tamanho
phuclv

Respostas:

4

Evitando a fragmentação

O segredo é não escrever arquivos descompactados no disco para começar.

Na verdade, depois de compactar um arquivo grande já existente, ele se tornará terrivelmente fragmentado devido à natureza do algoritmo de compactação no local do NTFS.

Em vez disso, você pode evitar completamente essa desvantagem fazendo o OS compactar o conteúdo de um arquivo rapidamente, antes de gravá-lo no disco. Dessa forma, os arquivos compactados serão gravados no disco como qualquer arquivo normal - sem intervalos não intencionais. Para este efeito, você precisa criar uma pasta compactada. (Da mesma forma que você marca os arquivos a serem compactados, é possível marcar as pastas a serem compactadas.) Em seguida, todos os arquivos gravados nessa pasta serão compactados dinamicamente (ou seja, gravados como fluxos de blocos compactados). Os arquivos compactados dessa forma ainda podem ficar fragmentados, mas estarão muito longe da confusão criada pela compactação NTFS.

Exemplo

NTFS comprimido 232 Imagem do sistema Mb para 125 Mb:

  • Compressão no local criada 2680 fragmentos!
  • Compressão on-the-fly criada 19 fragmentos.

Desfragmentação

É verdade que arquivos compactados NTFS podem representar um problema para algumas ferramentas de desfragmentação. Por exemplo, uma ferramenta que eu normalmente uso não pode lidar com eles de forma eficiente - ela diminui a velocidade para um rastreamento. Não se preocupe, o velho fiel Contig de Sysinternals faz o trabalho de desfragmentar arquivos compactados NTFS rapidamente e sem esforço!

Slider2k
fonte
2

Lendo o artigo na Wikipedia sobre Compressão NTFS :

Os arquivos são compactados em blocos de 16 clusters. Com clusters de 4 kB, os arquivos são compactados em blocos de 64 kB. Se a compactação reduzir 64 kB de dados a 60 kB ou menos, o NTFS tratará as páginas desnecessárias de 4 kB como clusters vazios de arquivos esparsos - eles não são gravados.

Isso permite tempos razoáveis ​​de acesso aleatório - o SO só precisa seguir a cadeia de fragmentos.

No entanto, grandes arquivos compactáveis ​​tornam-se altamente fragmentados, já que cada pedaço & lt; 64 KB torna-se um fragmento.

Primeiras coisas primeiro. WBAdmin é essencialmente um utilitário de backup que permite restaurar um sistema completo. Portanto, espera-se que o arquivo de saída seja grande (& gt; 4 Gb). Conforme mostrado pela citação, arquivos grandes se tornam rapidamente fragmentados. Isso ocorre devido à maneira como o NTFS é compactado: não por arquivos, mas por setores.

Uma boa analogia é a de um bolo ser dividido em várias caixas, algumas das quais não estão vazias. Este é o arquivo inicial. A parte de compressão aperta os pedaços de bolo, deixando um espaço nas caixas. Como os pedaços de bolo não estão juntos, por causa do espaço criado, as peças que compõem o bolo se tornam fragmentadas.

Eu ainda sou cético sobre o NTFS dando esse tipo de taxa de compressão. De acordo com um teste feito por Compressão máxima em vários arquivos, o NTFS obtém a pontuação mais baixa na taxa de compactação, um mísero 40%. Pela experiência pessoal, posso dizer que é muito mais baixo do que isso, de fato tão baixo que nunca me preocupei em usá-lo nem vi seus efeitos.

A melhor maneira de evitar a fragmentação é parar de depender do NTFS. A maioria dos desfragmentadores não expandirá nem moverá os arquivos compactados. Se de alguma forma o fizessem, o NTFS não conseguiria expandir os arquivos, ou se pudesse, como o processo de desfragmentação preencheria o espaço restante da compactação (o 4kB), a expansão fragmentaria os arquivos, já que o arquivo não ser escrito nos clusters antes contíguos.

Dito isto, e se você não precisa ler o arquivo constantemente, use alguns dos formatos recomendados no link acima. 7z e rar são bastante eficientes (isto é, comprimem com altas taxas em um tempo decente). Se você se preocupa com espaço e não com o tempo, escolha um algoritmo do tipo PAQ (embora você gaste muito tempo comprimindo e descompactando os arquivos). Existem também algoritmos rápidos disponíveis.

Se você precisar ler o arquivo constantemente, não o comprima. O NTFS é muito bagunçado.

Doktoro Reichard
fonte
este (ref. na Wikipédia) fonte realmente contém boas, ainda que técnicas, informações sobre todo o processo.
Doktoro Reichard
A taxa de compactação é off-topic, mas aqui estão imagens reais de sistemas Windows 7 Professional recém-instalados, (na maioria das vezes 32 bits, 3 ou 4 de 64 bits) com conjunto padrão de software: i.imgur.com/C4XnUUl.png Com a compactação, eu realmente economizo espaço em disco. E eu posso desfragmentar arquivos depois, mas demora muito.
LogicDaemon
E sobre "evitar" a compactação NTFS: estou fazendo isso há anos e funciona quase sem falhas, exceto pela fragmentação. Ele realmente não deve ser usado para arquivos acessados ​​com freqüência devido a problemas de desempenho, mas a maioria dos executáveis ​​e texto é compactada muito bem. Além disso, arquivos sequencialmente gravados, como logs, não ficam fragmentados e muito ainda estão sendo compactados. E, é claro, imagens de sistema compactadas são perfeitamente restauráveis, feitas muitas vezes, e você não precisa explicitamente "expandi-las", isso obviamente é feito automaticamente pelo driver NTFS por bloco na memória.
LogicDaemon
1
Eu não posso realmente argumentar com resultados (e para o registro, eu indiquei os resultados reais dos testes, que eram similares aos seus, e minha experiência pessoal, que parece ser datada). O link que eu forneci no comentário contém informações sobre por que não é possível evitar o problema de fragmentação. Também no artigo da Wikipedia afirma que na inicialização, o Windows ainda tem que carregar a biblioteca de compressão para NTFS, não tenho certeza sobre o processo de recuperação também. este pode fornecer insight.
Doktoro Reichard
Obrigado, então, mas não é a resposta que eu queria obter :) Eu estava esperando que houvesse uma maneira de obter arquivos compactados, mas não fragmentados, escrevendo-os sequencialmente ou por blocos de tamanho igual ao bloco de compactação. Ou existe um programa de desfragmentação realmente eficiente, que pode rapidamente desfragmentar arquivos individuais quando houver espaço livre contínuo suficiente para isso.
LogicDaemon
0

Embora não seja exatamente o que o OP pediu, tive uma boa experiência com um software de terceiros chamado Paragon. NTFS por definição trashes seu sistema de arquivos algo horrivelmente quando você compactar (ou às vezes até mesmo escrever) arquivos. Isso se estende ao consumo de várias entradas da MFT e ... É ruim. O driver NTFS da Microsoft nem limpa isso quando um arquivo é desfragmentado. Portanto, ferramentas de terceiros são necessárias. O Paragon permite que você inicialize como um sistema operacional em si (imagem ISO) ou instale em outro sistema operacional Windows com acesso ao sistema de arquivos de destino. Então você pode desfragmentar a MFT e os arquivos. Isso é do meu conhecimento a única maneira de corrigir essa deficiência em NTFS, a não ser reformatar o volume.

(Eu não tenho nenhuma relação com a ferramenta ou seu criador além de ser a única coisa que eu encontrei para realmente funcionar)

Hoje, dois anos após a pergunta aparentemente ser solicitada, eu prefiro recomendar a desduplicação - isso pode oferecer 90% de economia de disco se as imagens forem "um pouco" diferentes. Um W2016 Nano Server dentro de uma VM funciona muito bem, mas eu suspeito que até mesmo o FreeNAS ou qualquer outra coisa que use o ZFS possa lidar com isso.

Mike
fonte
qualquer URL ou mais nome precice que apenas "Paragon"? O Google não me entende. Eu conheço uma empresa de software chamada Paragon, mas não sei nada sobre seus produtos que desfragmentarão arquivos NTFS (existe uma ferramenta de desfragmentação da MFT, mas eu não tenho problemas com a MFT). E obrigado pela sugestão do ZFS, vou investigar isso, mas, novamente, preciso que ele seja inicializado no campo para uma rápida recuperação no local.
LogicDaemon
-1

Ultimamente, o Windows vem tratando arquivos ZIP como pastas. Os arquivos ZIP podem ser mais compactados do que os arquivos compactados por NTFS e não são fragmentados de forma inerente, ao contrário do NTFS.

Por que não testar uma de suas imagens de disco comprimindo com 7-zip no formato ZIP & amp; ver se é diretamente utilizável para restaurar?

Se não, jogue com os parâmetros de compressão 7-zip para maximizar a compactação usando qualquer formato que seja melhor, por exemplo, 7z. Você pode aumentar a compactação muito além do NTFS e, portanto, muito mais espaço disponível em seu disco - embora seja mais rápido descomprimir para um segundo disco físico ou RAM, de preferência em um controlador & amp; Cabo I-O.

FWIW, a compactação é compensada para SSDs não sandman para discos do sistema & amp; para arquivos que não são de mídia - menos desgaste & amp; rasgo no SSD, mais espaço e E / S mais rápida para arquivos não compactados. Vejo http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

Vídeo, gráficos e outros arquivos de dados compactados (como .XLSX) já estão muito compactados, portanto, não há benefícios para a compactação NTFS. Nem para bancos de dados ou email do Outlook com atualizações aleatórias. Mas arquivos executáveis, txt, html, etc., se beneficiam muito.

A compactação também é sempre um ganho para arquivos pequenos, por exemplo, se & lt; 64K compactado, apenas um fragmento. Apenas aborrecimento seria recuperação se houver problemas de disco.

tOM
fonte
1
Cara, você está errado de muitas maneiras ... Principalmente, o Windows nunca tratou arquivos ZIP como pastas. Existem razões técnicas para que isso não aconteça (basicamente, apenas acesso seqüencial ao conteúdo dos arquivos). O Explorer, apesar de permitir o gerenciamento de zips de forma semelhante a pastas (mas de forma muito limitada, nem sequer extrai outros arquivos quando abro um html do zip), não é o Windows. E em questão eu expliquei, por que utilitários separados, seja Explorer ou 7-Zip, não se encaixam (veja "Comentários baseados em comentários / respostas")
LogicDaemon
btw, note sobre "menos desgaste e rasgo no SSD": se o SSD não tiver cache grande o suficiente, é 2 vezes mais wear & amp; lágrima. Porque, ao salvar o arquivo compactado, o Windows primeiro salva os clusters não compactados, compactando-os e salvando os compactados (em seguida, remove os não compactados). Isso o que causa a fragmentação no assunto da minha pergunta, afinal. Samsung SSDs no link (quebrado btw, remova "les" da cauda) tem cache grande o suficiente.
LogicDaemon
não, o Windows nunca trata os arquivos zip e cab como pastas. Você pode Visão seu conteúdo (nomes de arquivos / pastas) diretamente no meu computador, mas você não pode acessá-los de forma transparente como uma imagem de disco ou um arquivo NTFS compactado. Você ainda tem que extrair o arquivo no arquivo algum onde visualizá-lo / editá-lo
phuclv