Os arquivos da área de trabalhoA verdade sobre a desfragmentação

Wes Miller

Enquanto houver discos rígidos, haverá fragmentação de disco. Para manter o bom funcionamento dos seus sistemas, procure desfragmentá-los regularmente. Isso o faz lembrar daquela conversa com seu dentista sobre a importância do uso do fio dental? Pois é, a desfragmentação também deve fazer parte da sua rotina.

A menos que seu computador esteja jogado em um canto qualquer e desligado, ele ficará cada vez mais fragmentado. Daqui a pouco, mostrarei como isso ocorre, mas primeiro vamos conhecer um pouco da história da desfragmentação.

A desfragmentação e o Windows NT

O Windows NT® não tinha um utilitário interno de desfragmentação e, na época, acreditava-se que ele não era necessário. Afinal, o NTFS foi criado visando a otimização, e ele não foi tão afetado pela fragmentação quanto um volume semelhante de FAT. Mas, com o tempo, até mesmo o desempenho do NTFS pode ser afetado devido ao posicionamento de arquivos aquém do ideal. Isso deu origem a um mercado próspero de ferramentas de desfragmentação de terceiros. Um dos produtos mais conhecidos entre os profissionais de TI era o Executive Software, da Diskeeper (hoje Diskeeper Corporation). Quando o Windows 2000 incorporou a funcionalidade de desfragmentação, a Microsoft licenciou a tecnologia do Executive Software. A funcionalidade de desfragmentação do Windows® 2000 estava disponível no seu próprio snap-in (dfrg.msc) do MMC (Microsoft® Management Console). Para chamá-lo, bastava clicar em um volume ou executar manualmente o defrag.exe da linha de comando. Apesar de não dispor de uma programação e só ter uma linha de comando restrita, muitos profissionais de TI conseguiam criar scripts funcionais para automatizar a desfragmentação através desta versão interna. O defrag.exe no Windows XP e no Windows Server® 2003 foi um avanço em relação à versão anterior, mas oferecia automatização limitada, ou seja, ainda exigia a criação de um script.

Vários fornecedores, inclusive a Winternals Software (meu empregador anterior), produziam software para atender à demanda de desfragmentação em empresas. A maioria desses produtos funcionavam da mesma forma, com um console centralizado, um agente de algum tipo que reside em sistemas de clientes (às vezes, o tempo todo; outras vezes, apenas sob demanda), e uma estrutura para indicar quando e como ocorre uma tarefa de desfragmentação.

O Windows Vista® segue a tendência de desfragmentação de um único sistema, além de otimizar o desfragmentador e incluir opções como a desfragmentação de pequenos fragmentos de arquivos (64MB ou menor). Isso agiliza a desfragmentação, mas deixa vários fragmentos de arquivos maiores no disco. O próprio mecanismo de desfragmentação é mais poderoso no Windows Vista e no Windows Server 2008 do que nas versões anteriores do Windows. Ele também é executado automaticamente e não requer programação manual. Mas se você comanda uma empresa de grande porte ou deseja otimizar seus sistemas de uma forma que, por padrão, a desfragmentação não oferece, talvez precise adquirir licença de um software de terceiros. Como nas versões anteriores, talvez você encontre dificuldade para desfragmentar um volume em que a compactação NTFS esteja ativada e tenha sido amplamente utilizada. Nesse caso, uma ferramenta de terceiros também pode ser útil.

Como ocorre a fragmentação?

A fragmentação ocorre porque os arquivos mudam com o tempo. O ideal é que os arquivos do próprio Windows não mudem. Ou, pelo menos, que eles não mudem tantas vezes - apenas com as instalações do pacote de serviços e das atualizações de software. Caso contrário, os arquivos do sistema permanecem relativamente constantes. Após uma grande atualização, como a instalação de um pacote de serviços, a fragmentação ocorre naturalmente pois, em geral, não é possível substituir o local dos arquivos atualizados em disco. E talvez seja necessário reinicializar a máquina para que eles sejam atualizados, o que resulta em mais fragmentação.

Arquivos e dados do usuário (e o registro do Windows), por outro lado, estão sujeitos a constantes mudanças. Ações como ler, gravar, editar, copiar e excluir arquivos o tempo todo levam a um grande volume de fragmentação, especialmente quando a unidade atinge sua capacidade máxima.

Para visualizar isso, imagine um disco bem organizado, em que arquivos ocupem espaço de forma contígua, sem espaço entre eles. Digamos que você abra um arquivo, edite-o e, depois, tente salvá-lo. Se o arquivo ficar maior, o Windows precisará salvar o arquivo inteiro em outro local do disco (digamos, após o arquivo N) ou salvar os novos dados após o arquivo N. Isso significa que o arquivo 2 agora está fragmentado. Se você editar o arquivo 1, terá dois arquivos fragmentados. Se repetir esse procedimento várias vezes, seu sistema acabará fragmentado demais e a unidade precisará fazer uma busca em diversos locais para acessar um único arquivo. Com arquivos de bancos de dados grandes, arquivos de disco rígido extensos para tecnologias de computação virtual, e grandes volumes de vídeo e áudio armazenados em média no disco, é normal que ocorra a fragmentação. É claro que o tamanho cada vez maior dos discos rígidos atuais reduz o problema de fragmentação, mas não o elimina completamente. E laptops mais antigos, com discos rígidos menores, terão capacidade de resposta cada vez menor, inicialização cada vez mais lenta, e demorarão mais para abrir e salvar arquivos.

A principal preocupação não é necessariamente o nível de fragmentação do sistema, mas sim o nível de fragmentação de cada arquivo. Desde o aparecimento dos primeiros desfragmentadores de disco, com visuais multicoloridos, usuários pensaram: "Gostaria de ter uma barra sólida de cores". Mas, na verdade, essa é a última coisa que você poderia desejar. Alguns produtos tentam fazer com que seus discos pareçam dois blocos – um colorido (dados do arquivo) e outro que costuma ser branco (espaço livre). Infelizmente, esta é uma das piores coisas que você pode fazer com um disco quando sua intenção é minimizar a freqüência e o custo da desfragmentação. Se, ao fazer mais edições em um arquivo, você compactar todos os dados do arquivo na parte frontal do disco e remover grande parte do espaço livre, precisará gravar todas essas edições no final dos dados do arquivo. Então, ao desfragmentar dessa forma, na verdade você causou a fragmentação, começando pela próxima edição de arquivo. Em vez de gerar dois blocos de dados de arquivo bem organizados, uma boa desfragmentação resulta em uma imagem que não é necessariamente perfeita. Para obter um exemplo, veja a Figura 1 que mostra meu sistema de teste antes da desfragmentação. Depois, veja a Figura 2 que mostra o mesmo sistema após a completa desfragmentação pelo Windows.

Figura 1 Minha unidade antes da desfragmentação

Figura 1** Minha unidade antes da desfragmentação **(Clique na imagem para aumentar a exibição)

Figura 2 Minha unidade após a desfragmentação

Figura 2** Minha unidade após a desfragmentação **(Clique na imagem para aumentar a exibição)

Observe que o Windows não se concentra na fragmentação dos arquivos no disco, mas sim na fragmentação de cada arquivo separado (veja a Figura 3 para obter a seção do relatório de desfragmentação em Arquivos mais fragmentados, antes da desfragmentação deste sistema).

Figura 3 Relatório de desfragmentação

Figura 3** Relatório de desfragmentação **

Como resultado, mesmo após a desfragmentação, o Windows mostra um conjunto de dados de arquivos totalmente compactados na parte frontal do disco. Observe também o grande trecho com dados destacados em verde nas Figuras 1 e 2. Esse trecho corresponde ao arquivo de paginação do Windows, sobre o qual discutiremos em breve. Se a hibernação estiver ativada no seu sistema Windows, ela também aparecerá em uma desfragmentação.

A desfragmentação periódica é essencial

Assim como o hábito de passar o fio dental, é importante se lembrar de executar a desfragmentação. A desfragmentação periódica se torna ainda mais fundamental em sistemas que são utilizados com freqüência, como servidores, pois, se você aguardar, o processo poderá ser demorado, e seu servidor poderá ficar indisponível ou deixar de responder (pois a desfragmentação pode ser demorada e determinadas fases da desfragmentação podem exigir muito da CPU).

Nem mesmo os melhores desfragmentadores online conseguem desfragmentar tudo. Por exemplo, nem sempre eles desfragmentam arquivos abertos ou bloqueados (tais como arquivos de paginação ou arquivos de registro) e devem trabalhar em função do arquivo de hibernação, caso exista (que é tão grande quanto a RAM em uso no seu sistema). Para otimizar arquivos bloqueados, consulte a seção que aborda truques de desfragmentação.

É importante compreender os mitos e fatos associados à desfragmentação. A Figura 4 e a Figura 5 listam alguns tópicos comuns abordados em discussões sobre desfragmentação e explicam as chances reais de tais problemas ocorrerem.

Figure 5 Mitos sobre a desfragmentação

Mito Probabilidade
Há falhas nos sistemas. Improvável – Falhas costumam ocorrer em função de problemas no driver ou no hardware (corrupção de memória, problemas térmicos que causam reinicializações ou falhas no disco devido ao abuso térmico no disco).
Os aplicativos falham. Improvável – Assim como ocorre no sistema inteiro, um aplicativo bem projetado não costuma falhar devido à fragmentação; então, a menos que essa seja a real causa, não pressuponha que a fragmentação esteja provocando isso.
Há corrupção de registro. Improvável (ver justificativa anterior) – A fragmentação não causa nem leva à corrupção de registro.
A desfragmentação deve resultar em uma barra sólida em qualquer representação visual do disco. Improvável – procure não espremer todos os arquivos no sistema, a menos que pretenda especificamente incluir imagens no sistema, com a ferramenta de criação de imagens baseada em setores, que não exclui espaço livre, nem faz reduções ou divisão de partições. Mova os arquivos para a frente do disco; caso contrário, a consolidação agressiva de arquivos levará a uma maior fragmentação.
   

Figure 4 Preocupações comuns sobre a desfragmentação

Preocupação Probabilidade
O desempenho do sistema é afetado. Alta – Depende especificamente da utilização do sistema.
A recuperação de arquivos excluídos acidentalmente pode se tornar difícil ou impossível. Alta – A maioria das ferramentas de recuperação de arquivos depende da heurística (para determinar os tipos de dados) e da proximidade do cluster de arquivos. Arquivos espalhados resultam em uma operação de recuperação mais complexa ou impossível.
A desfragmentação do sistema será cara. Média – Há uma correlação direta entre o nível de utilização do sistema e o nível de alteração dos arquivos no sistema com o tempo. Se os usuários editarem muito os arquivos, mas só os salvarem em compartilhamentos do servidor, por exemplo, você não encontrará muita degradação com o tempo.
O disco será danificado. Baixa – Pouco provável. Novamente, quanto mais você abusa de um sistema (deixe-o ligado,com os discos ativados o tempo todo, ao editar, modificar ou excluir arquivos), maior é a probabilidade. Mas, com o tipo de hardware atual, é provável que isso não ocorra, em função da edição de arquivos.
   

A desfragmentação como parte da sua infra-estrutura

Procure fazer a desfragmentação periódica em todos os seus sistemas. Você pode utilizar o desfragmentador interno do Windows ou buscar opções de terceiros. Basicamente, é importante saber quanta engenharia você empregará. O Windows XP e as versões posteriores permitem que você adicione o defrag.exe, conforme mostrado no artigo Scheduled Task—the Knowledge Base em support.microsoft.com/kb/555098. Observe que a desfragmentação do laptop vem acompanhada de algumas considerações especiais. Você quer desfragmentar o sistema de um usuário quando ele está ligado, preferencialmente via corrente alternada, mas não quer utilizar a CPU ou ciclos de disco enquanto um usuário móvel está tentando concluir um trabalho. Infelizmente, contudo, quando um usuário móvel não está trabalhando no seu sistema, é bem provável que ele esteja desconectado da corrente alternada, em espera ou hibernação (desligado do ponto de vista de gerenciamento de energia e Tarefas Agendadas). Na Winternals (e, provavelmente, em qualquer outro local), passamos muito tempo tentando projetar um cenário de usuário móvel ideal. Se você estiver empregando o Windows Vista, que utiliza o desfragmentador interno e Tarefas Programadas, a consciência da potência será bem melhor do que em versões anteriores e, provavelmente, essa será uma boa solução. Caso contrário, talvez seja necessário recorrer a uma solução de terceiros para sistemas móveis. Algumas dessas soluções de fato disparam uma tarefa de desfragmentação, permitindo que você detecte onde, quando (e com que freqüência) e por quanto tempo ela foi executada.

Além de cenários móveis, você tem interesse na fragmentação fora do sistema de arquivos. Em geral, você não precisa se preocupar com esse tipo de coisa quando utiliza a área de trabalho ou sistemas móveis. Mas servidores, o Microsoft Exchange, o SQL ServerTM ou outros armazenamentos de dados podem exigir suas próprias desfragmentações. Nesses casos, você precisa decidir se isso deve ser feito antes ou após a desfragmentação de um sistema de arquivos.

Se estiver utilizando um desfragmentador de terceiros, certifique-se de que ele utilize a API de desfragmentação do Windows. Desde o Windows NT 4.0, o Windows possui sua própria API de desfragmentação para evitar a perda inesperada de dados. Por exemplo, quando você está transferindo um arquivo e seu sistema perde a potência, a última coisa que você deseja é a transferência de um fragmento incompleto, que pode resultar na perda de dados ou até mesmo em um sistema não inicializável.

Finalmente, se você estiver empregando uma tecnologia de computação virtual, talvez queira considerar como gerencia a desfragmentação de seus discos virtuais. Eles estão tão propensos à fragmentação quanto um eixo físico e, em muitos casos, isso pode ser mais problemático devido às restrições de tamanho. Além disso, se sua solução de virtualização permite reduzir discos ou partições, talvez você precise desfragmentar primeiro para liberar espaço (ou, pelo menos, reduzir a duração de uma operação de redução).

Ferramentas adicionais

Acho que você já deve ter percebido que a desfragmentação é uma função importante e valiosa. Mesmo que você não utilize uma ferramenta de terceiros para a própria desfragmentação, talvez pense em empregar uma ferramenta de Mark Russinovich chamada PageDefrag, que pode ser obtida no site de ferramentas Microsoft Sysinternals (ver microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx). Conforme dito anteriormente, não é possível desfragmentar um arquivo de página do Windows enquanto o Windows está online. Na verdade, o mesmo vale para arquivos de registro do Windows e para os registros de eventos. O PageDefrag permite que você desfragmente esses arquivos bloqueados antes de o Windows concluir a inicialização e bloquear esses arquivos, através de um pequeno driver. Para utilizá-lo, basta executar o PageDefrag e definir que ele seja executado na próxima reinicialização ou a cada reinicialização. Quando o sistema é reinicializado (no ponto do processo de reinicialização em que você já deve ter visto uma verificação de disco), ele desfragmenta os arquivos especificados na lista (ver a Figura 6).

Figura 6 Arquivos a serem desfragmentados no PageDefrag

Figura 6** Arquivos a serem desfragmentados no PageDefrag **

Quando o PageDefrag é concluído, o sistema termina a reinicialização normalmente. Para mais informações sobre o PageDefrag, leia o que Lance Whitney escreveu sobre ele na instalação de setembro do Destaque de utilitário (ver technetmagazine.com/issues/2007/09/UtilitySpotlight). Observe que o PageDefrag só tem suporte no Windows NT 4.0, no Windows 2000, no Windows XP e no Windows Server 2003. No momento, ele não tem suporte no Windows Vista.

Além do PageDefrag, há outra ferramenta disponível no Sysinternals chamada Contig, que permite desfragmentar manualmente um arquivo específico (ver microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx). Isso pode ser útil quando não é possível desfragmentar um arquivo específico através de uma tarefa de desfragmentação comum ou quando ele se torna fragmentado (mas o restante do volume não ficou tão fragmentado).

O Contig também desfragmenta um diretório inteiro ou subdiretórios através de curingas. Observe a seguir um exemplo em que todos os arquivos são desfragmentados no diretório Windows, independente da sua localização.

Contig –s c:\Windows\*.*

A aplicação da opção –v faz a operação ser executada no modo detalhado; –q faz a operação ser executada no modo silencioso.

Wes Miller é gerente de desenvolvimento da Pluck (www.pluck.com) em Austin, no Texas. Ele já trabalhou na Winternals Software, em Austin, e na Microsoft, como gerente de programas e gerente de produtos do Windows. Ele pode ser contatado pelo email technet@getwired.com.

© 2008 Microsoft Corporation e CMP Media, LLC. Todos os direitos reservados. A reprodução parcial ou completa sem autorização é proibida..