Desfragmentação - Defragmentation

Visualização da fragmentação e depois da desfragmentação

Na manutenção de sistemas de arquivos , a desfragmentação é um processo que reduz o grau de fragmentação . Ele faz isso organizando fisicamente o conteúdo do dispositivo de armazenamento em massa usado para armazenar arquivos no menor número de regiões contíguas (fragmentos, extensões ). Ele também tenta criar regiões maiores de espaço livre usando compactação para impedir o retorno da fragmentação. Alguns utilitários de desfragmentação tentam manter arquivos menores em um único diretório juntos, já que são frequentemente acessados ​​em sequência.

A desfragmentação é vantajosa e relevante para sistemas de arquivos em unidades de disco eletromecânicas ( unidades de disco rígido , unidades de disquete e mídia de disco óptico ). O movimento das cabeças de leitura / gravação do disco rígido sobre diferentes áreas do disco ao acessar arquivos fragmentados é mais lento, em comparação com o acesso sequencial de todo o conteúdo de um arquivo não fragmentado sem mover as cabeças de leitura / gravação para buscar outros fragmentos.

Causas de fragmentação

A fragmentação ocorre quando o sistema de arquivos não pode ou não alocará espaço contíguo suficiente para armazenar um arquivo completo como uma unidade, mas, em vez disso, coloca partes dele em lacunas entre os arquivos existentes (geralmente essas lacunas existem porque anteriormente continham um arquivo que o sistema de arquivos possui subsequentemente excluído ou porque o sistema de arquivos alocou espaço em excesso para o arquivo em primeiro lugar). Arquivos que são frequentemente anexados (como com arquivos de log), bem como a adição e exclusão frequente de arquivos (como com e-mails e cache do navegador da web), arquivos maiores (como com vídeos) e maior número de arquivos contribuem para a fragmentação e consequente desempenho perda. A desfragmentação tenta aliviar esses problemas.

Exemplo

Exemplos de cinco estados de fragmentação

Um disco vazio tem cinco arquivos, de A a E, cada um usando 10 blocos de espaço (para esta seção, um bloco é uma unidade de alocação do sistema de arquivos ; o tamanho do bloco é definido quando o disco é formatado e pode ser de qualquer tamanho suportado por o sistema de arquivos). Em um disco vazio, todos esses arquivos seriam alocados um após o outro (veja o exemplo 1 na imagem). Se o arquivo B fosse excluído, haveria duas opções: marcar o espaço para o arquivo B como vazio para ser usado novamente mais tarde, ou mover todos os arquivos após B para que o espaço vazio fique no final. Visto que mover os arquivos pode ser demorado se houver muitos arquivos que precisam ser movidos, geralmente o espaço vazio é simplesmente deixado lá, marcado em uma tabela como disponível para novos arquivos (veja o exemplo 2 na imagem). Quando um novo arquivo, F, é alocado exigindo 6 blocos de espaço, ele pode ser colocado nos primeiros 6 blocos do espaço que anteriormente continha o arquivo B, e os 4 blocos seguintes permanecerão disponíveis (ver exemplo 3 na imagem) . Se outro novo arquivo, G, for adicionado e precisar de apenas 4 blocos, ele poderá ocupar o espaço após F e antes de C (exemplo 4 na imagem).

No entanto, se o arquivo F precisar ser expandido, existem três opções, uma vez que o espaço imediatamente seguinte não está mais disponível:

  1. Mova o arquivo F para onde ele possa ser criado como um arquivo contíguo do novo tamanho maior. Isso não seria possível se o arquivo fosse maior do que o maior espaço contíguo disponível. O arquivo também pode ser tão grande que a operação levaria um período de tempo indesejavelmente longo.
  2. Mova todos os arquivos após F até que um abra espaço suficiente para torná-lo contíguo novamente. Isso apresenta o mesmo problema do exemplo anterior: se houver um pequeno número de arquivos ou poucos dados para mover, não é um grande problema, mas se houver milhares ou mesmo dezenas de milhares de arquivos, não haverá t tempo suficiente para mover todos esses arquivos.
  3. Adicione um novo bloco em outro lugar e indique que F tem uma segunda extensão (veja o exemplo 5 na imagem). Repita isso centenas de vezes e o sistema de arquivos terá uma série de pequenos segmentos livres espalhados em muitos lugares, e alguns arquivos terão várias extensões. Quando um arquivo tem muitas extensões como essa, o tempo de acesso para esse arquivo pode se tornar excessivamente longo por causa de todas as buscas aleatórias que o disco terá que fazer ao lê-lo.

Além disso, o conceito de “fragmentação” não se limita apenas a arquivos individuais que possuem várias extensões no disco. Por exemplo, um grupo de arquivos normalmente lidos em uma sequência específica (como arquivos acessados ​​por um programa durante o carregamento, que pode incluir certas DLLs , vários arquivos de recursos, os arquivos de mídia audiovisual em um jogo) pode ser considerado fragmentado se eles não estão em ordem de carregamento sequencial no disco, mesmo se esses arquivos individuais não estiverem fragmentados; as cabeças de leitura / gravação terão que buscar esses arquivos (não fragmentados) aleatoriamente para acessá-los em sequência. Alguns grupos de arquivos podem ter sido originalmente instalados na sequência correta, mas se distanciam com o tempo à medida que certos arquivos dentro do grupo são excluídos. As atualizações são uma causa comum disso, porque para atualizar um arquivo, a maioria dos atualizadores geralmente exclui o arquivo antigo primeiro e, em seguida, grava um novo e atualizado em seu lugar. No entanto, a maioria dos sistemas de arquivos não grava o novo arquivo no mesmo local físico do disco. Isso permite que arquivos não relacionados preencham os espaços vazios deixados para trás.

Mitigação

A desfragmentação é a operação de mover extensões de arquivo (blocos de alocação física) para que eles eventualmente se fundam, de preferência em um. Isso geralmente requer pelo menos duas operações de cópia: uma para mover os blocos para algum espaço de trabalho livre no disco para que mais movimento possa acontecer e outra para finalmente mover os blocos para o lugar pretendido. Nesse paradigma, nenhum dado é removido do disco, de modo que a operação pode ser interrompida com segurança, mesmo em caso de queda de energia. A imagem do artigo mostra um exemplo.

Para desfragmentar um disco, o software de desfragmentação (também conhecido como "desfragmentador") só pode mover arquivos dentro do espaço livre disponível. Esta é uma operação intensiva e não pode ser executada em um sistema de arquivos com pouco ou nenhum espaço livre. Durante a desfragmentação, o desempenho do sistema será degradado e é melhor deixar o computador sozinho durante o processo para que o desfragmentador não seja confundido por alterações inesperadas no sistema de arquivos. Dependendo do algoritmo usado, pode ou não ser vantajoso realizar várias passagens. A reorganização envolvida na desfragmentação não altera a localização lógica dos arquivos (definida como sua localização na estrutura de diretório ).

Além de desfragmentar arquivos de programa, a ferramenta de desfragmentação também pode reduzir o tempo que leva para carregar programas e abrir arquivos. Por exemplo, o desfragmentador do Windows 9x incluía o Intel Application Launch Accelerator, que otimizava programas no disco, colocando os arquivos de programa desfragmentados e suas dependências lado a lado, na ordem em que o programa os carrega, para carregar esses programas mais rapidamente. No Windows, um bom desfragmentador lerá os arquivos de pré - busca para identificar o maior número possível desses grupos de arquivos e colocar os arquivos dentro deles na sequência de acesso.

No início do disco rígido, as trilhas externas têm uma taxa de transferência de dados mais alta do que as trilhas internas. Colocar arquivos acessados ​​com frequência nas trilhas externas aumenta o desempenho. Desfragmentadores de terceiros, como o MyDefrag, moverão os arquivos acessados ​​com frequência para as trilhas externas e desfragmentarão esses arquivos.

Melhorias em discos rígidos modernos, como cache de RAM , velocidade de rotação de prato mais rápida, enfileiramento de comandos ( SCSI / ATA TCQ ou SATA NCQ ) e maior densidade de dados reduzem o impacto negativo da fragmentação no desempenho do sistema em algum grau, embora aumente nos dados comumente usados as quantidades compensam esses benefícios. No entanto, os sistemas modernos lucram enormemente com as enormes capacidades de disco disponíveis atualmente, uma vez que os discos parcialmente cheios se fragmentam muito menos do que os discos cheios e, em um HDD de alta capacidade, a mesma partição ocupa um intervalo menor de cilindros, resultando em buscas mais rápidas. No entanto, o tempo médio de acesso nunca pode ser inferior a meia rotação dos pratos, e a rotação do prato (medida em rpm) é a característica de velocidade dos HDDs que experimentou o crescimento mais lento ao longo das décadas (em comparação com a taxa de transferência de dados e tempo de busca ), portanto, minimizar o número de buscas continua sendo benéfico na maioria das aplicações de armazenamento pesado. A desfragmentação é apenas isso: garantir que haja no máximo uma busca por arquivo, contando apenas as buscas em trilhas não adjacentes.

Particionamento

Uma estratégia comum para otimizar a desfragmentação e reduzir o impacto da fragmentação é particionar o (s) disco (s) rígido (s) de forma a separar as partições do sistema de arquivos que apresentam muito mais leituras do que gravações das zonas mais voláteis onde os arquivos são criados e excluídos freqüentemente. Os diretórios que contêm os perfis dos usuários são modificados constantemente (especialmente com o diretório Temp e o cache do navegador da web criando milhares de arquivos que são excluídos em poucos dias). Se os arquivos dos perfis de usuário são mantidos em uma partição dedicada (como é comumente feito em sistemas de arquivos UNIX recomendados , onde normalmente são armazenados na partição / var), o desfragmentador funciona melhor, pois não precisa lidar com todos os arquivos estáticos de outros diretórios. (Como alternativa, um desfragmentador pode ser instruído a simplesmente excluir certos caminhos de arquivo.) Para partições com relativamente pouca atividade de gravação, o tempo de desfragmentação melhora muito após a primeira desfragmentação, uma vez que o desfragmentador precisará desfragmentar apenas um pequeno número de novos arquivos no futuro .

Desfragmentação offline

A presença de arquivos de sistema imóveis, especialmente um arquivo de troca , pode impedir a desfragmentação. Esses arquivos podem ser movidos com segurança quando o sistema operacional não está em uso. Por exemplo, ntfsresize move esses arquivos para redimensionar uma partição NTFS . A ferramenta PageDefrag pode desfragmentar os arquivos de sistema do Windows, como o arquivo de troca e os arquivos que armazenam o registro do Windows , executando no momento da inicialização, antes que a GUI seja carregada. Desde o Windows Vista, o recurso não é totalmente compatível e não foi atualizado.

No NTFS, à medida que os arquivos são adicionados ao disco, a Tabela de arquivos mestre (MFT) deve crescer para armazenar as informações dos novos arquivos. Cada vez que o MFT não pode ser estendido devido a algum arquivo estar no caminho, o MFT ganhará um fragmento. Nas primeiras versões do Windows, ele não podia ser desfragmentado com segurança enquanto a partição estava montada, então a Microsoft escreveu um hardblock na API de desfragmentação . No entanto, desde o Windows XP , um número crescente de desfragmentadores agora é capaz de desfragmentar o MFT, porque a API de desfragmentação do Windows foi aprimorada e agora oferece suporte a essa operação de movimentação. Mesmo com as melhorias, os primeiros quatro clusters do MFT permanecem imóveis pela API de desfragmentação do Windows, resultando no fato de que alguns desfragmentadores armazenarão o MFT em dois fragmentos: os primeiros quatro clusters onde quer que tenham sido colocados quando o disco foi formatado, e em seguida, o resto do MFT no início do disco (ou onde quer que a estratégia do desfragmentador considere ser o melhor lugar).

Discos de estado sólido

Ao ler dados de uma unidade de disco rígido eletromecânica convencional, o controlador de disco deve primeiro posicionar a cabeça, relativamente lentamente, na trilha onde reside um determinado fragmento, e então esperar enquanto o prato do disco gira até que o fragmento alcance a cabeça. Uma unidade de estado sólido (SSD) é baseada em memória flash sem partes móveis, portanto, o acesso aleatório de um fragmento de arquivo na memória flash não sofre esse atraso, tornando desnecessária a desfragmentação para otimizar a velocidade de acesso. Além disso, como a memória flash pode ser gravada apenas um número limitado de vezes antes de falhar, a desfragmentação é realmente prejudicial (exceto na mitigação de falha catastrófica ). No entanto, o Windows ainda desfragmenta um SSD automaticamente (embora com menos vigor) para evitar que o sistema de arquivos alcance sua tolerância máxima de fragmentação. Quando o limite máximo de fragmentação é atingido, as tentativas subsequentes de gravação no disco falham.

Abordagem e desfragmentadores por tipo de sistema de arquivos

Um utilitário de desfragmentação do Windows
  • FAT : Os sistemas MS-DOS 6.xe Windows 9x vêm com um utilitário de desfragmentação chamado Defrag. A versão DOS é uma versão limitada do Norton SpeedDisk. A versão que acompanha o Windows 9x foi licenciada pela Symantec Corporation , e a versão que acompanha o Windows 2000 e XP é licenciada pela Condusiv Technologies .
  • O NTFS foi introduzido com o Windows NT 3.1 , mas o driver do sistema de arquivos NTFS não incluía nenhum recurso de desfragmentação. No Windows NT 4.0 , APIs de desfragmentação foram introduzidas que ferramentas de terceiros poderiam usar para executar tarefas de desfragmentação; no entanto, nenhum software de desfragmentação foi incluído. No Windows 2000 , Windows XP e Windows Server 2003 , a Microsoft incluiu uma ferramenta de desfragmentação baseada no Diskeeper que fazia uso das APIs de desfragmentação e era um snap-in para Gerenciamento do Computador . No Windows Vista , Windows 7 e Windows 8 , a ferramenta foi bastante aprimorada e recebeu uma nova interface sem mapa de disco visual e não faz mais parte do Gerenciamento do Computador. Existem também vários produtos de desfragmentação gratuitos e comerciais de terceiros disponíveis para o Microsoft Windows .
  • O BSD UFS e particularmente o FreeBSD usa um realocador interno que visa reduzir a fragmentação no momento em que as informações são gravadas no disco. Isso controla efetivamente a degradação do sistema após uso prolongado.
  • O Btrfs tem desfragmentação online e automática disponível.
  • Linux ext2 , ext3 e ext4 : muito parecido com o UFS, esses sistemas de arquivos empregam técnicas de alocação projetadas para manter a fragmentação sob controle o tempo todo. Como resultado, a desfragmentação não é necessária na grande maioria dos casos. ext2 usa um desfragmentador offline chamado e2defrag, que não funciona com seu sucessor ext3. No entanto, outros programas, ou independentes do sistema de arquivos, como o defragfs, podem ser usados ​​para desfragmentar um sistema de arquivos ext3. ext4 é um pouco compatível com versões anteriores com ext3 e, portanto, geralmente tem a mesma quantidade de suporte de programas de desfragmentação. Atualmente e4defrag pode ser usado para desfragmentar um sistema de arquivos ext4, incluindo desfragmentação online.
  • VxFS tem o fsadmutilitário que inclui operações de desfragmentação.
  • JFS tem o defragfsutilitário em sistemas operacionais IBM.
  • O HFS Plus lançado em 1998 com o Mac OS 8.1 tem várias otimizações para os algoritmos de alocação em uma tentativa de desfragmentar arquivos enquanto eles estão sendo acessados ​​sem um desfragmentador separado. Existem várias restrições para que os arquivos sejam candidatos à desfragmentação 'em tempo real' (incluindo um tamanho máximo de 20 MB). Existe um utilitário, iDefrag, da Coriolis Systems disponível desde o OS X 10.3. No Mac OS tradicional, a desfragmentação pode ser feita pelo Norton SpeedDisk e TechTool Pro.
  • WAFL no sistema operacional ONTAP 7.2 da NetApp tem um comando chamado reallocateque é projetado para desfragmentar arquivos grandes.
  • O XFS fornece um utilitário de desfragmentação online chamado xfs_fsr.
  • O SFS processa o recurso de desfragmentação de maneira quase completamente sem estado (exceto pelo local em que está trabalhando), portanto, a desfragmentação pode ser interrompida e iniciada instantaneamente.
  • ADFS , o sistema de arquivos usado pelo RISC OS e pelos computadores Acorn anteriores , mantém a fragmentação do arquivo sob controle sem a necessidade de desfragmentação manual.

Veja também

Referências

Origens

  • Norton, Peter (1994) Peter Norton's Complete Guide to DOS 6.22 , página 521 - Sams ( ISBN  067230614X )
  • Woody Leonhard, Justin Leonhard (2005) Windows XP Timesaving Techniques For Dummies, Segunda Edição, página 456 - For Dummies ( ISBN  0-764578-839 ).
  • Jensen, Craig (1994). Fragmentação: a condição, a causa, a cura . Executive Software International ( ISBN  0-9640049-0-9 ).
  • Dave Kleiman , Laura Hunter, Mahesh Satyanarayana, Kimon Andreou, Nancy G Altholz, Lawrence Abrams, Darren Windham, Tony Bradley e Brian Barber (2006) Winternals: Defragmentation, Recovery, and Administration Field Guide - Syngress ( ISBN  1-597490-792 )
  • Robb, Drew (2003) Gerenciamento de disco do servidor em um ambiente Windows Capítulo 7 - AUERBACH ( ISBN  0849324327 )

links externos