Рейтинг:0

DRBD с внешним метадиском

флаг ru

Я пытаюсь создать отработку отказа с помощью DRBD, и у меня есть два раздела.

Раздел 1) /dev/sda4 настроен для KVM, которые я буду создавать. Раздел 2) /dev/sda5 предназначен для метаданных DRBD.

Мой файл конфигурации ниже

ресурс r0 {
    протокол С;
    запускать {
            wfc-тайм-аут 15;
            degr-wfc-тайм-аут 60;
    }
    сеть {
            крам-хмак-алг ша1;
            общий секрет "SECRET_KEY";
    }
    на сервере1{
            устройство /dev/drbd0;
            диск /dev/sda4;
            адрес IP:7788;
            метадиск /dev/sda5;
    }
    на сервере2{
            устройство /dev/drbd0;
            диск /dev/sda4;
            адрес IP:7788;
            метадиск /dev/sda5;
    }

}

Когда я запускаю drbdadm create-md r0, он работает успешно, но создает /dev/drbd0 на обоих разделах.

    ââsda4 8:4 0 7.2T 0 часть
    â ââdrbd0 147:0 0 7.2T 1 диск
    ââsda5 8:5 0 399M 0 часть
      ââdrbd0 147:0 0 7.2T 1 диск

Насколько я понимаю, он должен создавать его только на метадиске /dev/sda5. Причина, по которой я устанавливаю метадиск, заключается в том, чтобы избежать записи в sda4. Я прав в этих рассуждениях или я что-то упускаю.

Рейтинг:2
флаг nr

Я подтвердил, вот как лсблк вывод выглядит на AlmaLinux 8.5 при использовании внешних метаданных с DRBD. Устройство DRBD — это всего лишь одно виртуальное блочное устройство, расположенное над обоими разделами в вашей установке.

Он работает так, как ожидалось. Если вы проверите блочные устройства, используя другие методы/утилиты, вы увидите, что у вас есть только один /dev/drbd0, а созданный вами раздел метаданных имеет ожидаемый размер.

Например, моя конфигурация с использованием двух томов LVM:

ресурс r0 {
    протокол С;
    запускать {
            wfc-тайм-аут 15;
            degr-wfc-тайм-аут 60;
    }
    сеть {
            крам-хмак-алг ша1;
            общий секрет "SECRET_KEY";
    }
    на сервере1{
            устройство /dev/drbd0;
            диск /dev/drbdpool/data; # 1GiB lvm в /dev/sdb
            метадиск /dev/drbdpool/meta; # 4 МБ lvm в /dev/sdb
            192.168.1.11:7788;
    }
    на сервере2{
            устройство /dev/drbd0;
            диск /dev/drbdpool/data; # 1GiB lvm в /dev/sdb
            метадиск /dev/drbdpool/meta; # 4 МБ lvm в /dev/sdb
            192.168.1.12:7788;
    }

Показывает именно то, что я ожидал в /прок/разделы:

# кот /proc/разделы 
мажор минор #блоки имя

   8 0 20480000 сд
   8 1 2048000 sda1
   8 2 18430976 сда2
   8 16 8388608 сдб
 253 0 4096 дм-0
 253 1 1048576 дм-1
 147 0 1048576 дрбд0

blockdev --отчет тоже неплохо выглядит:

# blockdev --отчет /dev/drbd0
РО РА ССЗ БСЗ Размер StartSec Устройство
rw 256 512 4096 0 1073741824 /dev/drbd0
# blockdev --report /dev/drbdpool/meta 
РО РА ССЗ БСЗ Размер StartSec Устройство
rw 8192 512 4096 0 4194304 /dev/drbdpool/meta
# blockdev --report /dev/drbdpool/data
РО РА ССЗ БСЗ Размер StartSec Устройство
rw 8192 512 4096 0 1073741824 /dev/drbdpool/данные

Это, вероятно, где лсблк путается:

# кошка /sys/блок/drbd0/размер 
2097152
# кошка /sys/блок/dm-0/размер 
8192
# кошка /sys/блок/дм-1/размер 
2097152
# кошка /sys/block/dm-0/держатели/drbd0/size 
2097152
# кошка /sys/block/dm-1/держатели/drbd0/size 
2097152
флаг ru
Хорошо... тогда я не понимаю, почему DRB0 занимает весь диск SDA4. Почему-то выделено 7.2T. Почему это так, если метаданные должны быть на SDA5?
Matt Kereczman avatar
флаг nr
Вы настроили DRBD для этого, установив `disk /dev/sda4;`. Вот как работает DRBD: вы передаете весь диск/раздел в DRBD, а затем используете получившееся устройство DRBD так же, как и любой другой диск/раздел. Я предполагаю, что вы захотите отформатировать `/dev/drbd0` с любой файловой системой, которую вы хотите использовать, и `смонтировать /dev/drbd0 /var/lib/libvirt/images`, или там, где вы настроили libvirt для хранения ваших образов виртуальных машин. . Поскольку вы смонтировали устройство DRBD, все, что вы записываете в эту точку монтирования, будет реплицировано на одноранговый узел через устройство DRBD. Метаданные DRBD находятся в `/dev/sda5`...
флаг ru
Хорошо... Это имеет смысл. Я предполагал, что DRB0 и виртуальные машины будут находиться рядом на SDA4, но вы говорите, что любые данные, которые я использую, должны быть поверх DRBD0, правильно?
Рейтинг:-1
флаг ru

Наконец понял это. Поместив группу томов поверх DRBD0, теперь все работает.

Я столкнулся с проблемой при создании группы томов на устройстве, и мне пришлось добавить фильтр в lvm.conf.

Я получил сообщение об ошибке

Невозможно использовать устройство /dev/drbd/ с дубликатами

Я просто добавил это в раздел устройств

filter = [ "r|/dev/sda4|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]

Теперь все отлично работает

Matt Kereczman avatar
флаг nr
Наложение LVM поверх DRBD ничего существенного не изменило. Вы могли бы использовать его таким, какой он был, поскольку не было никаких проблем в том виде, в котором он был у вас. Чаще всего помещают LVM под DRBD, чтобы потом было легче наращивать устройство. Кроме того, с этой настройкой вам придется активировать/деактивировать виртуальные группы при отработке отказа.
флаг ru
Была проблема, как у меня было. Это не сработало. Я не мог создать LVM так, как он был настроен.
Matt Kereczman avatar
флаг nr
Вы впервые упомянули LVM в качестве требования. Вы запутаете людей, которые наткнутся на ваши посты в будущем, если упустите такие детали.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.