Fragmentação e ext4

6

Suponha que eu tenha um arquivo esparso F em um sistema de arquivos ext4 do Linux, e o processo P1 está gravando em um subconjunto separado de 50% F enquanto P2 grava nos outros 50% de F . Eu gostaria de minimizar a fragmentação enquanto o arquivo "cresce". (Eu coloco "cresce" entre aspas porque o arquivo é pré-alocado como um arquivo esparso, mas à medida que os blocos são escritos, eles preenchem blocos fantasmas com dados reais.)

Entendo que P1 e P2 estão sendo executados em paralelo para que um possa ficar à frente do outro, mas, salvo isso, é melhor ter P1 blocos de gravação 1,3,5,7, .. enquanto P2 escreve 2,4,6, ...? Ou melhor ter P1 escrever 1,2,3,4, ... n / 2 e P2 escrever n / 2 + 1, ...., n?

    
por Fixee 21.10.2011 / 01:06

1 resposta

2

O kernel armazena em cache as gravações e as libera suavemente para o disco em segundo plano, alocando espaço em disco da mesma forma que minimiza a fragmentação. Em outras palavras, você está pensando demais - não se preocupe com isso.

Mais especificamente, quando se trata de liberar alguns buffers de cache sujos, o ext4 vai alocar espaço em disco suficiente para armazenar todos os buffers sujos no cache, além de reservar espaço adicional para crescimento adicional.

A carga que você está descrevendo parece muito com bit torrent. Eu baixei recentemente o Ubuntu 11.10 iso via bit torrent e verificá-lo com filefrag mostra que ele só é dividido em 3 fragmentos, o que não é ruim para um arquivo de 700mb.

    
por 22.10.2011 / 03:54