Fazer download / copiar arquivos simultaneamente promove a fragmentação?

10

A gravação de mais de um arquivo simultaneamente em uma partição do disco rígido promove a fragmentação? Esses arquivos seriam gravados entrelaçados no disco rígido?

Exemplos:

  • Download de vários arquivos simultaneamente da web
  • Copiando arquivos de várias origens para a mesma partição
  • Download de vários torrents

Isso é diferente entre vários sistemas operacionais? A alocação de espaço a priori para o arquivo inteiro é um recurso específico do aplicativo?

    
por Jonathan 13.08.2010 / 22:59

1 resposta

7

Depende muito do sistema de arquivos em uso, até certo ponto do sistema operacional, bem como do programa que está abrindo o arquivo. Cabe ao aplicativo solicitar a quantidade correta de armazenamento ao criar um novo arquivo, e são os recursos do sistema operacional e do sistema de arquivos que afetam o comportamento de abertura e extensão que esses aplicativos seguem quando não sabem quanto espaço para pedir.

Se um programa solicitar ao sistema operacional um arquivo de 4.2GB, o SO encontrará um pedaço de espaço com 4.2GB livres. Caso isso não dê ao programa fragmentos de espaço livre suficientes para salvar o arquivo. Existem algumas variáveis aqui, isso é simplificado.

Se um programa solicitar ao sistema operacional um arquivo 4KB, o sistema operacional o fornecerá. Se o programa continuar pedindo novos segmentos contíguos de 4KB (você está baixando um arquivo, e o programa não sabia o quão grande ele era) até obter 4,2 GB de espaço, o sistema operacional terá prazer em dar espaço. Este é o caso onde o sistema de arquivos e o SO fazem diferenças.

O XFS, por exemplo, é baseado em extensão, portanto, o espaço adicionado será contíguo até que não seja possível. Além disso, o XFS pode ser configurado para pré-alocar novos arquivos com uma certa quantidade de espaço que pode minimizar ainda mais a fragmentação (útil nos volumes de armazenamento da Máquina Virtual, bem como nos volumes ISO do DVD).

EXT2 / 3, NTFS, e acredito que o Reiser, irá alocar contíguo até que não possa mais. Então vai começar novos fragmentos. Cada fragmento pode ter 4KB de tamanho.

Vamos pegar o pior caso. Dois arquivos paralelos de 4.2GB sendo salvos em 4KB simultaneamente, no mesmo diretório. A coisa do 'mesmo diretório' é parte do pior caso, já que algumas combinações do OS / FS tentam manter os arquivos no mesmo diretório próximos uns dos outros. Para algumas combinações de OS / FS isso resultará em dois arquivos sendo completamente intercalados no disco. Para outros que tentam manter novos arquivos abertos em diferentes segmentos livres, pode não haver fragmentação alguma ou muito pouco.

Um pouco no XFS (acho que ext4 e btrfs também podem fazer isso). Nesse caso, o intercalado não será 4KB, será o valor definido para o tamanho da alocação quando você montar o volume. Configure 256MB e você terá um arquivo de 4.2GB com 17 fragmentos em vez de mais de um milhão. Útil para volumes que armazenam arquivos grandes, como servidores de mídia. Não é útil para volumes que armazenam muitos arquivos bitty itty e alguns grandes.

É por isso que os clientes Bittorrent ou abrem arquivos esparsos ao iniciar um novo download ou simplesmente alocam o tamanho especificado no total antes de iniciar.

Ao copiar arquivos de partes diferentes da mesma partição (ou mesmo de outras partições), o processo de cópia teoricamente sabe o tamanho dos arquivos copiados, de modo que solicita espaço do tamanho apropriado desde o SO desde o início; não há necessidade de acrescentar alocações para novos arquivos.

    
por 13.08.2010 / 23:28