mkfs A operação demora muito no Linux Software Raid 5

8

Configurei um nível 5 de ataque ao software Linux, que consiste em discos de 4 x 2 TB. A matriz de disco foi criada com um tamanho de faixa de 64k e nenhum outro parâmetro de configuração. Após a reconstrução inicial, tentei criar um sistema de arquivos e essa etapa demora muito (cerca de meia hora ou mais). Eu tentei criar um sistema de arquivos xfs e ext3, ambos demoraram muito tempo, com o mkfs.ext3 eu observei o seguinte comportamento, que pode ser útil:

  • escrever tabelas de inode é executado rapidamente até atingir 1053 (~ 1 segundo), depois escreve cerca de 50, espera por dois segundos e, em seguida, os próximos 50 são gravados (de acordo com a exibição do console)
  • quando tento cancelar a operação com Control + C, ela fica parada por meio minuto antes de ser realmente cancelada

O desempenho dos discos individualmente é muito bom, eu executei o bonnie ++ em cada um deles separadamente com valores de escrita / leitura de cerca de 95 / 110MB / s. Mesmo quando executo o bonnie ++ em todas as unidades em paralelo, os valores são reduzidos apenas em cerca de 10 MB. Então, estou excluindo o hardware / programação de E / S em geral como uma fonte de problemas.

Eu tentei diferentes parâmetros de configuração para stripe_cache_size e readahead size sem sucesso, mas não acho que eles sejam tão relevantes para a operação de criação do sistema de arquivos.

Os detalhes do servidor:

  • Servidor Linux 2.6.35-27-genérico # 48-Ubuntu SMP x86_64 GNU / Linux
  • mdadm - v2.6.7.1

Alguém tem uma sugestão sobre como depurar ainda mais isso?

    
por Elmar Weber 20.03.2011 / 15:10

3 respostas

3

Concordo que isso pode estar relacionado ao alinhamento de faixas. Da minha experiência, a criação de XFS desalinhado em 3 * 2TB RAID-0 leva ~ 5 minutos, mas se for alinhado ao tamanho da faixa, ele será ~ 10 a 15 segundos. Aqui está um comando para alinhar o XFS ao tamanho da faixa de 256KB:

mkfs.xfs -l internal,lazy-count=1,sunit=512 -d agsize=64g,sunit=512,swidth=1536 -b size=4096 /dev/vg10/lv00

BTW, largura da faixa no meu caso é de 3 unidades, que será o mesmo para você com 4 unidades, mas no RAID-5.

Obviamente, isso também melhora o desempenho do FS, então é melhor mantê-lo alinhado.

    
por 21.03.2011 / 06:13
6

Suspeito que você esteja enfrentando o típico problema de gravação pequena do RAID5. Para gravações sob o tamanho de um tamanho de faixa, ele precisa fazer uma leitura-modificação-gravação para os dados e a paridade. Se a gravação for do mesmo tamanho que a faixa, ela pode simplesmente sobrescrever a paridade, pois ela sabe qual é o valor e não precisa recalculá-la.

    
por 20.03.2011 / 16:17
3

O seu mkfs e o desempenho subsequente do sistema de arquivos podem melhorar se você especificar a largura da passada e da faixa ao criar o sistema de arquivos. Se você estiver usando os blocos padrão de 4k, seu passo é 16 (faixa RAID de 64k dividida por bloco de sistema de 4k) e sua largura de faixa é 48 (passo do sistema de arquivos de 16 multiplicado pelos 3 discos de dados em sua matriz). >

mkfs.ext3 -E stride=16 stripe-width=48 /dev/your_raid_device
    
por 21.03.2011 / 00:11