Conselhos para criar o software RAID6 do CentOS mdadm

1

EDIT: as soluções para meu problema estão abaixo

Eu quero criar uma matriz RAID6 bem otimizada com o mdadm com uma partição XFS em um sistema CentOS. Ele envolverá dez unidades ST3000DM001 Seagate 3TB e gravarei alguns terabytes de cada vez, tudo em arquivos com mais de 100 MB, em uma conexão Ethernet gigabit. Quanto mais eu leio sobre a configuração de RAIDs (tornando as coisas alinhadas umas com as outras, etc.), mais eu sinto que não sei o que estou fazendo.

Especificamente, eu adoraria alguma ajuda com meus comandos mdadm --create e mkfs.xfs, e conselhos sobre se preciso alterar qualquer outra coisa no hardware ou sistema operacional.

Ao analisar os recursos on-line, meu melhor palpite é

RAID6 Tamanho do pedaço: 2 MiB (isso é apenas um palpite)

Tamanho do bloco XFS: 4KiB (suponho que seja o tamanho do site para o meu sistema e percebo que não posso ir mais alto)

XFC agcount: 64 (isto é apenas um palpite)

sunit = 4096, swidth = 32768

Então parece que meus comandos devem ser:

# mdadm --create /dev/md0 --chunk=2048 --level=6 --raid-devices=10 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdj /dev/sdk
# parted /dev/md0
    mklabel gpt
    mkpart primary 0.00TB 27.00TB
# mkfs.xfs -L /big_raid -b size=4096 -d agcount=64,sunit=4096,swidth=32768 /dev/md0p1

Mas eu adoraria qualquer conselho. Eu criei uma matriz RAID5 com configurações semelhantes e foi bem lenta, escrevendo a 20 MB / s (que era 1/5 da velocidade que eu consegui com uma única unidade)

EDITAR:

Então eu descobri que o Seagate ST3000DM001 pode ter sido o pior drive que eu poderia ter escolhido de acordo com o Backblaze, então a primeira coisa: não os compre! Eu tive eu acho que 4 de 10 falham em um ano e meio

Eu criei o RAID6 com as seguintes alterações e ele funcionou a 5 vezes a velocidade, mas não tenho certeza de quanto cada alteração individual fez diferença

  • Crie partições alinhadas em cada unidade e construa o RAID a partir deles, como mencionado pela resposta abaixo

De esta página

  • Desative o NCQ em cada unidade. Para cada unidade

    # echo 1 > /sys/block/sd[driveletterhere]/device/queue_depth

  • Definir leitura antecipada

    # blockdev --setra 65536 /dev/md[raidnumberhere]

  • Defina stripe-cache_size para o RAID

    # echo 16384 > /sys/block/md[raidnumberhere]/md/stripe_cache_size

Espero que ajude quem acha isso procurando a mesma coisa que eu era! Para o registro meu processador é AMD A4-5300 e eu tenho 8GB de RAM e esta configuração mal toca em qualquer um

    
por greg Luce 10.11.2015 / 20:13

1 resposta

0

Eu concordo. Exceto que você não precisa executar o parted no md0, basta criar uma partição.

# mdadm --create /dev/md0 --chunk=2048 --level=6 --raid-devices=10 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdh /dev/sdi /dev/sdj /dev/sdk
# mkfs.xfs -L /big_raid -b size=4096 -d agcount=64,sunit=4096,swidth=32768 /dev/md0

Pela minha experiência, alterar o tamanho do bloco não melhora muito o desempenho. É sempre tão pouco quanto 1-2%, não é grande coisa.

A criação de raid on drives diretamente pode causar alguns problemas em alguns sistemas, pior ainda se você quiser usá-lo como uma unidade de boot. Portanto, eu usaria parted em drives, para criar uma partição de gpt em cada. A parte seria bom para ser alinhado - que parted suporta (por favor, siga link ) e que criar md0 em / dev / sda1, / dev / sdb1, ...

    
por 10.11.2015 / 20:23