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