Por que desfragmentar a unidade C aumentou meu espaço livre em disco em 10 GB?

27

Usei o Defraggler para desfragmentar o espaço livre na minha unidade de 100 GB C: \, com 85 GB de capacidade. Após a desfragmentação, a unidade mostrou apenas 75 GB completos. Como 10 GB de espaço livre apareceram magicamente? Perdi alguns dados?

Fiz uma limpeza de disco antes da desfragmentação e meu lixo tinha apenas 11 MB, portanto não pode ser por causa da limpeza dos arquivos temporários. Observe que eu desfragmentei o "espaço livre", o que significa que ele deveria ter reorganizado os blocos vazios para serem contíguos.

goweon
fonte
1
Provavelmente uma interação com a cópia de sombra: veja por exemplo ( piriform.com/docs/defraggler/technical-information/… )
horatio
2
Além disso, o desfragmentador tem a opção de esvaziar a lixeira antes de desfragmentar.
oKtosiTe

Respostas:

14

O que provavelmente aconteceu é que a operação de desfragmentação forçou o Windows a lançar alguns instantâneos de restauração do sistema. Seria um caso patológico de fragmentação para causar sobrecarga de metadados em 10% do espaço em sua unidade, além do que o Windows normalmente usa. mesmo assim, não tenho certeza se é possível.

Não vejo nada no histórico de versões ou na documentação do Defraggler que indique que ele pode desfragmentar corretamente os arquivos para impedir a remoção de cópias de sombra. De fato, esse tópico do fórum de suporte do Defraggler indica que eles sabem o que está acontecendo (há uma postagem de um administrador do fórum chamada "Oficial Piriform Bug Fixer" no tópico), mas não indicam se eles vão ou não consertá-lo.

As cópias de sombra podem ser perdidas quando você desfragmenta um volume : o motivo é que, por padrão, o VSS opera com clusters de 16 KB por padrão, enquanto a maioria dos volumes NTFS é formatada com clusters de 4 KB. Portanto, se uma operação de desfragmentação estiver movendo dados que não são múltiplos de um cluster de 16 KB (ou a "distância" movida não for um múltiplo de 16 KB), o VSS o rastreará como uma alteração e poderá limpar todos os seus dados. instantâneos.

MSDN: desfragmentando arquivos :

Quando possível, mova os dados em blocos alinhados entre si em incrementos de 16 kilobytes (KB). Isso reduz a sobrecarga de cópia na gravação quando as cópias de sombra estão ativadas, porque o espaço da cópia de sombra aumenta e o desempenho é reduzido quando ocorrem as seguintes condições:

  • O tamanho do bloco de solicitação de movimentação é menor ou igual a 16 KB.
  • O delta da movimentação não está em incrementos de 16 KB.

A desfragmentação integrada do Vista não faz isso :

Uma mudança que não é óbvia para os usuários é a otimização de cópias de sombra durante a desfragmentação. O Defrag possui heurísticas especiais para mover os blocos de arquivos de maneira a minimizar a atividade de copiar na gravação e o consumo da área de armazenamento de cópias de sombra. Sem essa otimização, o processo de desfragmentação aceleraria a exclusão de cópias de sombra mais antigas.

afrazier
fonte
Não sei sobre os snapshots como parte dessa resposta, mas não estou convencido de que a desfragmentação tenha liberado o espaço. O desfragmentador pode ter esvaziado sua Lixeira? Em um sistema de arquivos que não combina arquivos pequenos em um único cluster, não vejo como a desfragmentação resultaria em um ganho de espaço. Eu poderia imaginar que você tinha 10G de espaço disponível em blocos tão pequenos que o Windows não estava contando, mas eu nunca tinha ouvido falar desse comportamento antes.
Slartibartfast
@Slartibartfast: é um problema se o aplicativo não for escrito corretamente. Atualizarei minha resposta com mais evidências, agora que não estou no meu telefone. :-)
afrazier
@afrazier - embora eu ache que a resposta atualizada do ThouArtNotDoc ​​é uma resposta geral melhor. Eu tenho que concordar que as cópias de sombra provavelmente estão desempenhando um papel na situação do OP. Também encontrei o seguinte: "Se você planeja desfragmentar volumes nos quais as cópias de sombra estão ativadas, é recomendável usar um cluster (ou unidade de alocação) de tamanho de 16 KB ou maior. Caso contrário, o número de alterações causadas pelo processo de desfragmentação pode fazer com que as cópias de sombra sejam excluídas mais rapidamente do que o esperado. " - MS: "Projetando um Shadow Copy Strategy" technet.microsoft.com/en-us/library/cc728305(WS.10).aspx
Ƭᴇcʜιᴇ007
@afrazier: confirmado. Todos os pontos de restauração do sistema anteriores se foram. Na configuração, eu tenho 12% definido como o espaço máximo permitido para cópias de sombra, portanto, 10 GB não é razoável. Por outro lado, acabei de instalar um jogo de 9 GB, que poderia simplesmente substituir os pontos de restauração anteriores.
goweon
@firebat: o espaço usado pela Restauração do sistema é para rastrear alterações nos arquivos existentes (instantâneos), não nos novos. Instalar um novo jogo não afetaria o espaço de restauração do sistema, mas um patch grande poderia.
afrazier 8/07
23

Cada fragmento deve ser rastreado em algum lugar. Isso ocupa espaço de armazenamento (no encanamento do sistema de arquivos, não nas coisas que você deve acessar diretamente).

Um exemplo: suponha que você tenha um único arquivo com 1000 fragmentos. Assim, seu arquivo é armazenado através de uma coleção de blocos aleatórios. Em vez de em um único bloco contínuo. Isso significa que o arquivo fragmentado requer 1000x mais espaço de armazenamento no encanamento do sistema de arquivos, mesmo que apenas para armazenar endereços para cada fragmento. O encanamento do sistema de arquivos mantém pequenos dicionários / bancos de dados / mapas / tabelas / lista no local de cada fragmento do arquivo. Portanto, para o encanamento do sistema de arquivos, armazenar uma lista de um ponteiro de fragmento único não precisa de muito espaço, em comparação com uma lista de 1000 ponteiros de fragmento.

Mas ei, talvez eu esteja errado ...

Editar: informações de suporte a partir daqui :

Quando um fluxo de dados não residente é muito fragmentado, para que seu mapa de alocação efetivo não possa caber inteiramente no registro MFT, o mapa de alocação também pode ser armazenado como um fluxo não residente, com apenas um pequeno fluxo residente contendo a alocação indireta mapear para o mapa efetivo de alocação de não residentes do fluxo de dados não residentes.

Tradução: se você tiver uma fragmentação pesada, as suposições gerais de caso do encanamento do sistema de arquivos não serão aplicadas. Como tal, o FS deve tomar medidas para acomodar a fragmentação e acabar custando espaço de armazenamento extra, apenas para gerenciar os fragmentos. Exatamente meu palpite desde o início.


Edit: Dado o exposto, ainda parece que 10 GB sendo perdidos apenas para fragmentação de arquivos é uma loucura. Aposto que, durante a desfragmentação, você teve uma corrupção comum no sistema de arquivos que foi corrigida automaticamente. Penso que você não apenas teve uma fragmentação maciça, mas também arquivos parcialmente excluídos, ocupando espaço de armazenamento. Seria bom ver um log do scandisk desse desfragmentador (ou uma execução do scandisk antes do desfragmentador)

James T Snell
fonte
3
PS - isso deve ter sido uma fragmentação grave.
James T Snell
Não sei se é uma razão válida para esse aumento no consumo de armazenamento após a desfragmentação. Mas notei isso muitas vezes: se você tem um ponto de restauração do sistema bastante antigo (geralmente não acontece se você executa regularmente o utilitário de limpeza de disco) e desfragmenta depois que muitos dados são reunidos na unidade C, o consumo de memória aumenta do nada, mas se você excluir esse ponto de restauração, ele limpará o armazenamento ocupado. Bem, tecnicamente, pode não fazer sentido, mas aconteceu comigo muitas vezes, desde horas extras, os pontos de restauração ocupam memória.
Kushal 10/07
Não sei, 10G parece muito, mas IME, discos muito cheios tendem a se fragmentar muito mais rapidamente do que discos menos fragmentados. Se ele estivesse em> 85% antes (já que ele provavelmente significava 85GiB, mas 100GB de disco), e possivelmente mais cheio nesse meio tempo, ele poderia ter uma fragmentação espetacularmente alta e um desempenho horrível.
Bernd Haug
3
A menos que o tamanho do bloco desse volume seja obscenamente alto, eu pessoalmente não acredito em 10 GB de espaço sendo liberado apenas por não rastrear fragmentos. Com um tamanho de bloco de 4096k e assumindo que cada fragmento requer um bloco completo apenas para rastrear (o que é falso), seriam necessários 2,5 milhões de fragmentos rastreados anteriormente, mas não mais para liberar tanto espaço.
194 CarlF
1
@ Doc - um ponteiro não aceita um bloco inteiro. Se (como é provável) cada bloco de alocação é de vários setores, você precisa de menos ponteiros, pois há menos blocos para rastrear seus dados - portanto, a sobrecarga máxima possível para rastrear todos os fragmentos será muito menor que 3%. Não sei os detalhes exatos do NTFS, mas com os sistemas de arquivamento (relativamente ineficientes) do FAT, você ainda não conseguiu obter 10% de sobrecarga para a Tabela de Alocação de Arquivos (os indicadores de rastreamento de fragmentos) que o FAT recebeu o nome.
Steve314