Este grupo de especialistas despúes de muchos días de investigación y de juntar de datos, dieron con la respuesta, deseamos que resulte de utilidad en tu plan.
Solución:
Solución 1:
En las versiones más recientes de DRBD (8.3.9 y posteriores) hay un controlador de resincronización dinámica que necesita ajuste. En versiones anteriores de DRBD configurando el syncer rate;
fue suficiente; ahora se usa más como un punto de partida ligeramente sugerido para la velocidad de resincronización dinámica.
El controlador de sincronización dinámica se sintoniza con la “configuración c” en la sección de disco de la configuración de DRBD (ver $ man drbd.conf
para obtener detalles sobre cada una de estas configuraciones).
Con 10 Gbe entre estos nodos y suponiendo una latencia baja ya que se usa el protocolo C, la siguiente configuración debería hacer que las cosas se muevan más rápido:
resource rd0 protocol C; disk c-fill-target 10M; c-max-rate 700M; c-plan-ahead 7; c-min-rate 4M; on cl1 device /dev/drbd0; disk /dev/sda4; address 192.168.42.1:7788; meta-disk internal; on cl2 device /dev/drbd0; disk /dev/sda4; address 192.168.42.2:7788; meta-disk internal;
Si aún no está satisfecho, intente convertir max-buffers
hasta 12k. Si aún no estás feliz, puedes intentar aparecer c-fill-target
en incrementos de 2M.
Solución 2:
Alguien en otro lugar sugirió que use esta configuración:
disk
on-io-error detach;
c-plan-ahead 0;
net
max-epoch-size 20000;
max-buffers 131072;
Y el rendimiento es excelente.
Editar:
Según @Matt Kereczman y otras sugerencias, finalmente cambié a esto:
disk
on-io-error detach;
no-disk-flushes ;
no-disk-barrier;
c-plan-ahead 0;
c-fill-target 24M;
c-min-rate 80M;
c-max-rate 720M;
net
# max-epoch-size 20000;
max-buffers 36k;
sndbuf-size 1024k ;
rcvbuf-size 2048k;
La velocidad de resincronización es alta:
cat /proc/drbd
version: 8.4.5 (api:1/proto:86-101)
srcversion: EDE19BAA3D4D4A0BEFD8CDE
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
ns:133246146 nr:0 dw:2087494 dr:131187797 al:530 bm:0 lo:0 pe:5 ua:106 ap:0 ep:1 wo:d oos:4602377004
[>....................] sync'ed: 2.8% (4494508/4622592)M
finish: 1:52:27 speed: 682,064 (646,096) K/sec
La velocidad de escritura es excelente durante la resincronización con esta configuración (80 % de la velocidad de escritura local, velocidad máxima del cable):
# dd if=/dev/zero of=./testdd bs=1M count=20k
20480+0 enregistrements lus
20480+0 enregistrements écrits
21474836480 octets (21 GB) copiés, 29,3731 s, 731 MB/s
La velocidad de lectura está bien:
# dd if=testdd bs=1M count=20k of=/dev/null
20480+0 enregistrements lus
20480+0 enregistrements écrits
21474836480 octets (21 GB) copiés, 29,4538 s, 729 MB/s
Edición posterior:
Después de una resincronización completa, el rendimiento es muy bueno (escritura a velocidad de cable, lectura a velocidad local). La resincronización es rápida (5/6 horas) y no daña demasiado el rendimiento (lectura a velocidad de cable, escritura a velocidad de cable). Definitivamente me quedaré con c-plan-ahead en cero. Con valores distintos de cero, la resincronización es demasiado larga.
Solución 3:
c-plan-ahead tiene que establecer un valor positivo para habilitar el controlador de velocidad de sincronización dinámica. disco
c-plan-ahead 15; // 5 * RTT / 0.1s unit,in my case is 15
c-fill-target 24;
c-max-rate 720M;
valoraciones y comentarios
No se te olvide dar difusión a esta división si si solucionó tu problema.