Установка и настройка DRBD на CentOS 6
Важно: это руководство ориентировано на CentOS/Red Hat/Oracle Linux 6 и предполагает наличие свободного блочного устройства (в примере /dev/sdb1) на обоих серверах.
Кому это полезно
- Сисадминам, настраивающим репликацию блочных устройств для высокой доступности или восстановления после отказа.
- Командам, которые хотят простое зеркало между двумя серверами без общего хранилища.
О чем статья (ключевые варианты запроса)
- установка DRBD
- настройка DRBD на CentOS 6
- DRBD failover и репликация блочных устройств
- DRBD руководство по сборке RPM
- DRBD конфигурация s1.res
1. Вступительная заметка
DRBD (Distributed Replicated Block Device) — программное решение для зеркалирования содержимого блочных устройств (диски, разделы, логические тома). Главная цель — обеспечить репликацию на уровне блоков для сценариев высокой доступности (Failover) и Disaster Recovery.
Схема примерной архитектуры, используемой в этом руководстве:
+———————————–+ +—————————–+ | [ DRBD Server A ] | 192.168.43.101 | 192.168.43.102 | [ DRBD Server B ] | | OEL641 +———————-+———————–+ OEL642 | | folderA | folderB | +———————————–+ +—————————–+
Совместимо с любыми версиями CentOS/Red Hat/Oracle Linux 6. Необходимо иметь свободное блочное устройство (в примере /dev/sdb1).
2. Фаза установки
Подготовьте оба сервера: обновите систему и установите зависимости для сборки DRBD.
yum -y update
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
Вывод установщика может содержать строки о уже установленных пакетах. Выполните эти команды на обоих серверах.
Создайте структуру rpmbuild под /root:
mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
Скачайте исходники DRBD (пример с сайта LINBIT):
wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz
Распакуйте архивы:
tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz
Соберите пакет ядрового модуля и RPM для DRBD:
cd drbd-8.4.7-1
make km-rpm
В результате вы увидите созданные RPM в /root/rpmbuild/RPMS/i686, например:
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm
Далее соберите утилиты drbd-utils:
cd ../drbd-utils-8.9.6
./configure
make rpm
После сборки RPM будут доступны в /root/rpmbuild/RPMS/i686, затем установите их:
cd /root/rpmbuild/RPMS/i686
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*
Повторите те же шаги на втором сервере (OEL642).
3. Проверка модулей и hostname
На сервере OEL641 проверьте hostname — имя должно соответствовать используемому в конфигурации DRBD:
uname -n
OEL641
Загрузите модуль drbd и проверьте его наличие в списке модулей:
modprobe drbd
lsmod | grep drbd
drbd 341783 0
libcrc32c 841 1 drbd
4. Разметка диска (пример /dev/sdb -> /dev/sdb1)
В примере используется новый диск /dev/sdb; создаём раздел /dev/sdb1 и используем его как диск для DRBD.
Проверьте диск:
fdisk -l
Запустите fdisk и создайте первичный раздел:
fdisk /dev/sdb
Пример интерактивных команд (последовательно): n, p, 1, [Enter], [Enter], w
После записи таблицы разделов проверьте ещё раз:
fdisk -l
Повторите те же операции на OEL642.
5. Конфигурация DRBD
Создайте файл ресурса в /etc/drbd.d/ и назовите его s1.res. Этот файл должен быть одинаковым на обоих серверах.
cd /etc/drbd.d/
vi s1.res
Пример содержимого s1.res (копируйте ровно так):
resource s1 {
on OEL641 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.101:7799;
meta-disk internal;
}
on OEL642 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.102:7799;
meta-disk internal;
}
}
Скопируйте файл на второй сервер:
scp /etc/drbd.d/s1.res root@OEL642:/etc/drbd.d/s1.res
Инициализируйте метаданные DRBD на обоих серверах:
drbdadm create-md s1
Пример вывода:
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
6. Запуск и синхронизация
На OEL641 проверьте статус и запустите службу DRBD:
/etc/init.d/drbd status
/etc/init.d/drbd start
Скрипт старта будет ждать появления peer — пока порт и служба на другом сервере не запущены, узел будет в состоянии ожидания.
Запустите DRBD также на OEL642. Когда оба запущены, проверка статуса покажет Connected:
/etc/init.d/drbd status
Пример строки статуса в процессе синхронизации:
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C
На OEL641 установите узел как initial primary (перезапись данных на peer):
drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status
На другом сервере статус будет показывать SyncTarget и прогресс синхронизации. После завершения прогресса оба узла будут в состоянии UpToDate.
7. Тестирование DRBD (монтирование, запись и переключение)
На первичном узле OEL641 выполните форматирование устройства DRBD и смонтируйте его:
mkfs.ext3 /dev/drbd1
mkdir /folderA
mount /dev/drbd1 /folderA
df -h
Создайте тестовый файл 30 МБ:
dd if=/dev/zero of=/folderA/testfile bs=1M count=30
ls -lh /folderA
Чтобы переключить примеры: размонтируйте и переведите узел в secondary:
umount /folderA
drbdadm secondary s1
/etc/init.d/drbd status
На OEL642 переведите в primary, смонтируйте и проверьте наличие файла:
mkdir /folderB
drbdadm primary s1
mount /dev/drbd1 /folderB
ls -lh /folderB
Если всё настроено верно, файл testfile, созданный на OEL641, будет присутствовать на OEL642.
Критерии приёмки
- Оба узла показывают статус Connected и UpToDate для ресурса s1.
- /dev/drbd1 можно смонтировать только на одном узле в режиме Primary (single-primary setup в этом руководстве).
- После создания файла на первичном узле файл появляется на вторичном после переключения и монтирования.
Быстрый шаблон s1.res
resource s1 {
on {
device /dev/drbd1;
disk /dev/sdb1;
address :7799;
meta-disk internal;
}
on {
device /dev/drbd1;
disk /dev/sdb1;
address :7799;
meta-disk internal;
}
}
Замените
SOP / Короткий план действий (для оператора)
- Подготовка: обновить оба сервера, установить пакеты сборки.
- Сборка: скачать исходники DRBD, собрать km-rpm и drbd-utils rpm.
- Установка: установить созданные RPM на оба сервера.
- Разметка: создать /dev/sdb1 на обоих серверах.
- Конфигурация: создать /etc/drbd.d/s1.res и распространить на оба узла.
- Инициализация: drbdadm create-md s1 на обоих узлах.
- Запуск: /etc/init.d/drbd start на обоих узлах.
- Первичный: drbdadm – –overwrite-data-of-peer primary s1 на выбранном узле.
- Формат и монтирование: mkfs.ext3 /dev/drbd1; mount /dev/drbd1 /folderA.
- Тест: создать файл, переключить роли и проверить наличие файла на втором узле.
Чек-лист для ролей
Администратор сети:
- Убедиться в доступности IP и открытых портов между узлами (по умолчанию 7799).
- Настроить DNS или /etc/hosts для разрешения имён OEL641/OEL642.
Системный администратор:
- Подготовить свободный диск/раздел на обоих узлах.
- Проверить соответствие версий ядра и установить kernel-devel.
Оператор:
- Выполнить сборку RPM и установить на оба хоста.
- Протестировать сценарии переключения (failover).
Когда DRBD не подходит / Ограничения
- Для сценариев с активным доступом с нескольких узлов в режимах, требующих кластерной файловой системы (multi-primary), нужно дополнительное решение (например, GFS2, OCFS2) и соответствующая настройка DRBD в multi-primary режиме.
- DRBD реплицирует блоки, а не файлы — ошибки на файловой системе (коррупция) тоже будут реплицированы.
- Для больших задержек сети (WAN) возможны проблемы с производительностью и временем отклика.
Альтернативные подходы
- Синхронизация на уровне файлов: rsync/Unison (подходит для нелучших требований к RPO/RTO).
- Репликация на уровне блочных устройств с оборудованием SAN (если доступны).
- Решения на основе распределённых файловых систем (Ceph, GlusterFS) — для масштабируемых кластеров.
Модель принятия решений (упрощённая)
- Нужна ли синхронизация в реальном времени и минимальный RPO? -> DRBD.
- Требуется ли чтение/запись одновременно с нескольких узлов? -> DRBD + кластерная FS или другое решение.
- Ограничена ли сеть по задержке/пропускной способности? -> Рассмотреть асинхронные методы / репликацию на уровне файлов.
flowchart TD
A[Требование HA?] -->|Да| B{Нужен single-primary?}
A -->|Нет| Z[Рассмотреть rsync/backup]
B -->|Да| C[DRBD single-primary]
B -->|Нет| D{Нужен multi-primary?}
D -->|Да| E[DRBD multi-primary + GFS2/OCFS2]
D -->|Нет| Z
Мини-глоссарий (1 строка на термин)
- DRBD: программное зеркалирование блочных устройств между серверами.
- Primary/Secondary: роли DRBD; только Primary может монтировать устройство для записи.
- Meta-disk internal: хранение метаданных DRBD внутри самого диска (в разделе).
Факто-бокс
- Порт по умолчанию: 7799
- Уровень репликации: блочный (block-level)
- Поддерживаемые цели: локальные диски, разделы, LVM
Тестовые сценарии / критерии приёмки
- Инициализация: drbdadm create-md s1 проходит без ошибок на обоих узлах.
- Синхронизация: статус показывает Connected и завершённую синхронизацию (UpToDate).
- Переключение ролей: при переводе первичного узла в secondary и активации primary на другом узле данные доступны и консистентны.
Меры безопасности и рекомендации
- Защитите доступ к службе DRBD через брандмауэр — разрешите только IP узлов-участников.
- Регулярно проверяйте состояние синхронизации и логи (/var/log/messages или системные журналы).
- Тестируйте процедуру failover в тестовом окружении до применения в production.
Итог
Вы установили DRBD, создали ресурс s1, произвели инициализацию метаданных, выполнили старт и синхронизацию, проверили поведение при переключении ролей и протестировали репликацию данных между OEL641 и OEL642. DRBD — надёжный инструмент для зеркалирования блочных устройств в сценариях высокой доступности, но требует внимания к сетевым задержкам, безопасности и процедурам переключения.
Дополнительные материалы: документация LINBIT и man-страницы drbdadm, drbdsetup.
Похожие материалы

Конвертация видео и аудио в VLC — руководство

Собственная аватарка профиля Netflix — как поставить

Смарт‑карты в IPFire: PCSC, CCID, OpenSC

OTRS 5 на CentOS 7 — установка и настройка

Как скачать Netflix и смотреть офлайн
