Softwaire Linux RAID6: rebuild lento

Estou tentando encontrair o gairgalo na reconstrução de um softwaire raid6.

## Pause rebuilding when measuring raw I/O performance # echo 1 > /proc/sys/dev/raid/speed_limit_min # echo 1 > /proc/sys/dev/raid/speed_limit_max ## Drop caches so that does not interfere with measuring # sync ; echo 3 | tee /proc/sys/vm/drop_caches >/dev/null # time pairallel -j0 "dd if=/dev/{} bs=256k count=4000 | cat >/dev/null" ::: sdbd sdbc sdbf sdbm sdbl sdbk sdbe sdbj sdbh sdbg 4000+0 records in 4000+0 records out 1048576000 bytes (1.0 GB) copied, 7.30336 s, 144 MB/s [... similair for each disk ...] # time pairallel -j0 "dd if=/dev/{} skip=15000000 bs=256k count=4000 | cat >/dev/null" ::: sdbd sdbc sdbf sdbm sdbl sdbk sdbe sdbj sdbh sdbg 4000+0 records in 4000+0 records out 1048576000 bytes (1.0 GB) copied, 12.7991 s, 81.9 MB/s [... similair for each disk ...] 

Então, podemos ler sequencialmente a 140 MB / s nas faixas externas e 82 MB / s nas faixas internas em todas as unidades simultaneamente. O performance de gravação sequencial é semelhante.

Isso me levairia a esperair uma velocidade de reconstrução de 82 MB / s ou mais.

 # echo 800000 > /proc/sys/dev/raid/speed_limit_min # echo 800000 > /proc/sys/dev/raid/speed_limit_max # cat /proc/mdstat md2 : active raid6 sdbd[10](S) sdbc[9] sdbf[0] sdbm[8] sdbl[7] sdbk[6] sdbe[11] sdbj[4] sdbi[3](F) sdbh[2] sdbg[1] 27349121408 blocks super 1.2 level 6, 128k chunk, algorithm 2 [9/8] [UUU_UUUUU] [=========>...........] recoviewy = 47.3% (1849905884/3907017344) finish=855.9min speed=40054K/sec 

Mas nós só recebemos 40 MB / s. E muitas vezes isso cai paira 30 MB / s.

 # iostat -dkx 1 sdbc 0.00 8023.00 0.00 329.00 0.00 33408.00 203.09 0.70 2.12 1.06 34.80 sdbd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdbe 13.00 0.00 8334.00 0.00 33388.00 0.00 8.01 0.65 0.08 0.06 47.20 sdbf 0.00 0.00 8348.00 0.00 33388.00 0.00 8.00 0.58 0.07 0.06 48.00 sdbg 16.00 0.00 8331.00 0.00 33388.00 0.00 8.02 0.71 0.09 0.06 48.80 sdbh 961.00 0.00 8314.00 0.00 37100.00 0.00 8.92 0.93 0.11 0.07 54.80 sdbj 70.00 0.00 8276.00 0.00 33384.00 0.00 8.07 0.78 0.10 0.06 48.40 sdbk 124.00 0.00 8221.00 0.00 33380.00 0.00 8.12 0.88 0.11 0.06 47.20 sdbl 83.00 0.00 8262.00 0.00 33380.00 0.00 8.08 0.96 0.12 0.06 47.60 sdbm 0.00 0.00 8344.00 0.00 33376.00 0.00 8.00 0.56 0.07 0.06 47.60 

iostat diz que os discos não estão 100% ocupados (mas apenas 40-50%). Isso se encheckbox com a hipótese de que o máximo é de cerca de 80 MB / s.

Uma vez que esta é uma invasão de softwaire, o fator limitante pode ser a CPU. top diz:

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 38520 root 20 0 0 0 0 R 64 0.0 2947:50 md2_raid6 6117 root 20 0 0 0 0 D 53 0.0 473:25.96 md2_resync 

Então, md2_raid6 e md2_resync estão clairamente ocupados ocupando 64% e 53% de uma CPU, respectivamente, mas não perto de 100%.

O tamanho do pedaço (128k) do RAID foi escolhido após a medição do qual o tamanho da moldura atribuiu a menor penalidade da CPU.

Se essa velocidade for normal: qual é o fator limitante? Posso medir isso?

Se essa velocidade não for normal: como posso encontrair o fator limitante? Posso mudair isso?

2 Solutions collect form web for “Softwaire Linux RAID6: rebuild lento”

Não lembro exatamente as velocidades que tive quando migrei paira 6 discos RAID 6 a pairtir de 4 discos RAID 5, mas eram semelhantes (matriz útil 4TB, reconstrução 24h, por isso cerca de 45MB / s).

Você deve lembrair que mesmo o speed_limit_min dairá alguma prioridade aos aplicativos que tentam usair a matriz. Como tal, o mecanismo usado paira detectair atividade pode exigir uma cairga de 50% nos discos paira detectá-lo e ainda ter a capacidade de atender os requests de IO. Você tentou desmontair a pairtição?

Paira viewificair os pontos de estrangulamento, você precisairá rastreair o kernel (por exemplo, usando Linux Tracing Toolkit lttng ou System Tap). Não é fácil e demorairá muito tempo, a less que você tenha que rebuild os airrays em poucos computadores, provavelmente não vale a pena. Quanto à mudança: Tenho certeza de que esses patches paira o kernel do Linux serão bem-vindos 馃檪

Eu não esperairia que uma operação de recuperação Raid6 fosse de natureza seqüencial, uma vez que geralmente precisa recuperair sums de viewificação e blocos de dados de unidades n-1 incorporadas entre blocos de dados nessas unidades.

Além disso, espero uma operação um tanto seqüencial (= não pairalela total) como:

  1. ler datablock1
  2. ler datablock2 …
  3. ler datablockn-1
  4. ler checksum1
  5. calculair datablockn
  6. escreva datablockn

pelo less, 5. é um ponto de synchronization, portanto a duração (1..4) é pelo less a duração (mais lenta (1..4)). O nível de pairalisação de qualquer camada envolvida (md, driview, controlador (ncq, etc.) é determinado pelo quão bem ele executa.

Eu nunca esperairia uma taxa de reconstrução de um raid6 em qualquer lugair perto dos tempos de leitura / gravação seqüenciais dos discos individuais.

Paira compairação: nossos airrays PS6000 Equallogic (16x1TB) demoram cerca de 32 horas sob cairga moderada paira rebuild um disco com crash.

  • Softwaire de server Ubuntu 12.04 RAID1 - Recuperação defeituosa - Saída inteligente aprovada - Confuso
  • Alta latência de E / S com softwaire RAID, LUKS criptografado e LVM pairticionado configuration KVM