Назад | Перейти на главную страницу

DRBD странные провалы скорости

Пару недель назад я сделал тестовую настройку DRBD на паре серверов. Скорость была фиксированной 90 МБ / 800 МБ в соответствии с моей конфигурацией для начальной синхронизации. Теперь я переустановил ОС (CentOS 7.4), чтобы выполнить окончательную установку на серверах, и вижу проблему со скоростью (как показано ниже). Единственное отличие, о котором я могу думать прямо сейчас, - это установка кардиостимулятора + corosync, оба из которых отключены для начальной синхронизации. Я несколько раз переустанавливал ОС и пытался изменить параметры скорости и т. Д. В конфигурации, но ничего не изменилось. Вот мой конфиг:

[root@storage2 ~]# cat /etc/drbd.d/global_common.conf
global {
    usage-count yes;
    udev-always-use-vnr;
}
common {
    net {
        protocol C;
    }
}
[root@storage2 ~]# cat /etc/drbd.d/nfs.res
resource r0 {

    syncer {
        c-plan-ahead 20;
        c-fill-target 50k;
        c-min-rate 25M;
        al-extents 3833;
        rate 90M;
    }
    disk {
        no-md-flushes;
        #fencing resource-only;
    }
    handlers {
        fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
        after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
    }
    net {
        sndbuf-size 512k;
        max-buffers 8000;
        max-epoch-size 8000;
        after-sb-0pri discard-least-changes;
        after-sb-1pri consensus;
        after-sb-2pri call-pri-lost-after-sb;

    }
    device /dev/drbd0;
    disk /dev/sda4;
    meta-disk internal;

    on storage1 {
        address 172.30.1.11:7790;
    }
    on storage2 {
        address 172.30.1.12:7790;
    }
}

Хорошо, я внес некоторые изменения в конфигурацию, и на этот раз все изменилось. Хотя это не совсем так, как было раньше (все еще есть провалы), и кажется немного вынужденным, но производительность улучшилась.
Новый конфиг:

[root@storage1 ~]# cat /etc/drbd.d/nfs.res
resource r0 {

        ...  
        c-plan-ahead 2;
        c-fill-target 2M;
        c-min-rate 25M;
        c-max-rate 100M;
        al-extents 3833;
        rate 100M; 
        ...

        sndbuf-size 0;
        ...

}

В последних версиях DRBD выше 8.3.9 скорость повторной синхронизации по умолчанию настраивается динамически. Если теперь у вас есть что-то, что сидит на DRBD, записывающее данные и, следовательно, реплицирующее данные, или что-то еще (Corosync & Pacemaker), использующее ссылку репликации, скорости повторной синхронизации будут регулироваться на лету.

Я вижу изменения, которые вы внесли в свой «ответ», и, вероятно, увеличилось c-fill-target это сделало вашу ресинхронизацию более насыщенной.

Попробуйте настроить свой c-plan-ahead к 0 и посмотрите, выровняется ли он. Это должно эффективно отключить динамический контроллер и оставить синхронизацию со статической скоростью.