O download / cópia de arquivos promove simultaneamente 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:

  • Baixando vários arquivos simultaneamente da Web
  • Copiando arquivos de várias fontes para a mesma partição
  • Baixando 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?

Jonathan
fonte
Boa pergunta. Posso apenas observar que isso depende da implementação exata do driver do sistema de arquivos, que é mais estreita que o SO.
whitequark
4
Essa será uma resposta complexa ... Sim, é específica do sistema operacional e do aplicativo. Alguns aplicativos alocam espaço e outros não. Às vezes, não há como saber antecipadamente quanto espaço alocado é necessário, para que o tipo de aplicativo possa fragmentar mais. Também vai ser sistema de arquivos específico (você pode estar usando FAT32 ou NTFS no Windows)
Jarvin

Respostas:

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 pedir.

Se um programa solicitar ao sistema operacional um arquivo de 4,2 GB, o sistema operacional encontrará um pedaço de espaço com 4,2 GB de espaço livre. Se isso não for possível, o programa fornecerá 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 solicitando novos segmentos contíguos de 4KB (você está baixando um arquivo e o programa não sabia o tamanho dele) até obter 4,2 GB de espaço, o sistema operacional terá prazer em fornecer espaço. Este é o caso em que 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 possa ser. Além disso, o XFS pode ser configurado para pré-alocar novos arquivos com uma certa quantidade de espaço, o que pode minimizar ainda mais a fragmentação (útil nos volumes de armazenamento da Máquina Virtual e nos volumes ISO do DVD).

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

Vamos pegar o pior caso. Dois arquivos paralelos de 4,2 GB sendo salvos em 4KB por vez em paralelo, no mesmo diretório. A coisa 'mesmo diretório' faz parte do pior caso, pois algumas combinações de OS / FS tentam manter os arquivos no mesmo diretório próximos um do outro. Para algumas combinações de OS / FS, isso resultará na intercalação total dos dois arquivos no disco. Para outros que tentam manter novos arquivos abertos em diferentes segmentos livres, pode não haver fragmentação ou muito pouco.

Um pouco sobre o XFS (acho que ext4 e btrfs também podem fazer isso). Nesse caso, a intercalação não será de 4KB, será o valor que você definir para o tamanho do alocação ao montar o volume. Defina-o para 256 MB e você obterá um arquivo de 4,2 GB 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 itty bitty e alguns grandes.

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

Ao copiar arquivos de diferentes partes da mesma partição (ou mesmo, de outras partições), o processo de cópia sabe teoricamente o tamanho dos arquivos copiados, solicitando espaço do tamanho apropriado ao sistema operacional desde o início; não é necessário anexar alocações para novos arquivos.

SysAdmin1138
fonte