Estou usando o ZFS no Linux e estou tendo um sintoma bastante estranho: quando adiciono mais discos ao sistema, a velocidade na qual cada unidade grava é reduzida, negando efetivamente os eixos adicionais para o desempenho de gravação sequencial.
Os discos são conectados ao host por meio de um HBA (LSI 9300-8E) nas prateleiras de disco SAS
Durante o teste abaixo, corri o seguinte comando no IO Zone
iozone -i 0 -s 10000000 -r 1024 -t 10
Aqui estão os resultados dos meus testes:
No meu primeiro teste, criei um espelho com 12 discos, que mostram um desempenho esperado de gravação de cerca de 100 MB / s por segundo em cada disco.
zpool create -o ashift=12 -f PoolA mirror S1_D0 S2_D0 mirror S1_D1 S2_D1 mirror
S1_D2 S2_D2 mirror S1_D3 S2_D3 mirror S1_D4 S2_D4 mirror S1_D5 S2_D5
capacity operations bandwidth
pool alloc free read write read write
---------- ----- ----- ----- ----- ----- -----
PoolA 3.60G 10.9T 0 5.06K 0 638M
mirror 612M 1.81T 0 863 0 106M
S1_D0 - - 0 862 0 106M
S2_D0 - - 0 943 0 116M
mirror 617M 1.81T 0 865 0 107M
S1_D1 - - 0 865 0 107M
S2_D1 - - 0 939 0 116M
mirror 613M 1.81T 0 860 0 106M
S1_D2 - - 0 860 0 106M
S2_D2 - - 0 948 0 117M
mirror 611M 1.81T 0 868 0 107M
S1_D3 - - 0 868 0 107M
S2_D3 - - 0 1.02K 0 129M
mirror 617M 1.81T 0 868 0 107M
S1_D4 - - 0 868 0 107M
S2_D4 - - 0 939 0 116M
mirror 616M 1.81T 0 856 0 106M
S1_D5 - - 0 856 0 106M
S2_D5 - - 0 939 0 116M
---------- ----- ----- ----- ----- ----- -----
No próximo teste, adiciono mais 12 discos para um total de 24 discos e efetivamente reduzimos a largura de banda para cada disco pela metade.
zpool create -o ashift=12 -f PoolA mirror S1_D0 S2_D0 mirror S1_D1 S2_D1
mirror S1_D2 S2_D2 mirror S1_D3 S2_D3 mirror S1_D4 S2_D4
mirror S1_D5 S2_D5 mirror S1_D6 S2_D6 mirror S1_D7 S2_D7
mirror S1_D8 S2_D8 mirror S1_D9 S2_D9 mirror S1_D10 S2_D10
mirror S1_D11 S2_D11
capacity operations bandwidth
pool alloc free read write read write
----------- ----- ----- ----- ----- ----- -----
PoolA 65.2M 21.7T 0 4.67K 0 588M
mirror 6.56M 1.81T 0 399 0 49.0M
S1_D0 - - 0 399 0 49.0M
S2_D0 - - 0 513 0 63.1M
mirror 5.71M 1.81T 0 400 0 48.7M
S1_D1 - - 0 400 0 48.7M
S2_D1 - - 0 515 0 62.6M
mirror 6.03M 1.81T 0 396 0 49.1M
S1_D2 - - 0 396 0 49.1M
S2_D2 - - 0 509 0 62.9M
mirror 5.89M 1.81T 0 394 0 49.0M
S1_D3 - - 0 394 0 49.0M
S2_D3 - - 0 412 0 51.3M
mirror 5.60M 1.81T 0 400 0 49.0M
S1_D4 - - 0 400 0 49.0M
S2_D4 - - 0 511 0 62.9M
mirror 4.65M 1.81T 0 401 0 48.9M
S1_D5 - - 0 401 0 48.9M
S2_D5 - - 0 511 0 62.3M
mirror 5.36M 1.81T 0 397 0 49.2M
S1_D6 - - 0 397 0 49.2M
S2_D6 - - 0 506 0 62.5M
mirror 4.88M 1.81T 0 395 0 49.2M
S1_D7 - - 0 395 0 49.2M
S2_D7 - - 0 509 0 63.3M
mirror 5.01M 1.81T 0 393 0 48.2M
S1_D8 - - 0 393 0 48.2M
S2_D8 - - 0 513 0 63.0M
mirror 5.00M 1.81T 0 399 0 48.7M
S1_D9 - - 0 399 0 48.7M
S2_D9 - - 0 513 0 62.5M
mirror 5.00M 1.81T 0 398 0 49.2M
S1_D10 - - 0 398 0 49.2M
S2_D10 - - 0 509 0 62.8M
mirror 5.55M 1.81T 0 401 0 50.0M
S1_D11 - - 0 401 0 50.0M
S2_D11 - - 0 506 0 63.1M
----------- ----- ----- ----- ----- ----- -----
Esperando que alguém possa esclarecer por que adicionar mais discos efetivamente reduziria o desempenho a cada disco.
INFORMAÇÕES ADICIONAIS REQUERIDAS
Resumo do hardware
Servidor
Lenovo ThinkServer RD550, único 10 Core Xeon, 256 GB de RAM, SO em RAID 1 no controlador 720ix.
HBA do servidor
LSI 9300-8e
mpt3sas_cm0: LSISAS3008: FWVersion (12.00.00.00), ChipRevision (0x02), BiosVersion (06.00.00.00)
Prateleiras de disco
As prateleiras de disco são o Lenovo ThinkServer SA120 com controladores SAS duplos, fontes de alimentação duplas cabeadas de forma redundante com dois caminhos para cada disco.
Conectividade da prateleira de disco
As prateleiras de disco são conectadas através de cabos SAS de 5 metros e conectadas em margarida através das prateleiras com um loop de volta ao controlador no final.
Informações da unidade
Unidades SAS de 48 x 2 TB, modelo Seagate # ST2000NM0023
As unidades são configuradas por meio do multipath e cada unidade possui caminhos redundantes.
Resumo do software
Sistema Operacional / Kernel
CentOS 7.3
Saída de "uname -a"
Linux 4.9.9-1.el7.elrepo.x86_64 # 1 SMP Qui Fev 9 11:43:40 EST 2017 x86_64 x86_64 x86_64 GNU / Linux
Ajuste do ZFS
/etc/modprobe.d/zfs.conf é um arquivo em branco atualmente, eu não tentei muito aqui, o desempenho de gravação seqüencial parece que deve aumentar com mais discos.