У меня два узла по 20 жестких дисков (одинакового размера). Оба узла сконфигурированы с 2 группами VG, каждая группа VG была создана с использованием 10 дисков. 1 VG называется SAN, 2-й называется NAS.
Node1- будет предоставлять службы nfs, а данные nfs будут храниться на NAS vg, на LV с именем nfs (он выглядит так же на node2). VG SAN будет резервной копией SAN VG на узле 2.
Node2 - будет предоставлять услуги SAN, и данные будут храниться на LV. Каждый уровень представляет собой lun, и с помощью targetcli я создаю блочные устройства для каждого уровня. Поэтому при запросе lun я создаю LV с нужным размером и создаю backstore (blockdevice) в targetcli, используя этот недавно созданный LV.
VG NAS также присутствует на node2 и используется для резервного копирования данных с VG NAS узла 1. Резервные копии данных не должны быть доступны для вопросов: я думал об использовании drbd для резервного копирования данных с каждого узла на другой, так что в конечном итоге каждый узел 1 будет резервировать узел 2 и наоборот. С NAS VG у меня все в порядке, так как на нем только один уровень, и он статичен. Вопрос в том, что происходит с SAN VG, где я постоянно создаю LV? создаст ли их drbd на другой стороне, а также в результате резервного копирования? Если нет, как я могу сохранить эти группы VG идентичными все время, то есть, когда я создаю LV на узле 2, он будет автоматически создан на узле 1?
btw - ОС на обоих узлах - centos7.1
Большое спасибо за помощь!
DRBD может использовать любое блочное устройство в качестве резервного диска; LVM или сам физический диск будет работать с DRBD. Кроме того, DRBD создает новое виртуальное блочное устройство, которое при желании можно использовать в качестве физического тома для LVM. Любой LV или VG, созданный на DRBD, может быть активирован на одноранговом узле после того, как DRBD будет повышен до первичного там.
Вам нужно будет настроить фильтр LVM, чтобы собирать подписи LVM на устройствах DRBD, и отключить кеширование фильтра LVM в /etc/lvm/lvm.conf
.
filter = ["a|/dev/sd.*|", "a|/dev/drbd.*|", "r|.*|"] write_cache_state = 0
После этого вы сможете использовать LVM «выше и ниже» DRBD. Создайте LVM, который будет использоваться в качестве резервного диска DRBD (пример предполагает, что sdb1 является физическим диском); выполните эти шаги на обоих узлах:
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # vgcreate vg_drbd_back /dev/sdb1 Volume group "vg_drbd_back" successfully created # lvcreate --name r0 --size 100G vg_drbd_back Logical volume "r0" created
Создайте конфигурацию DRBD для r0
на обоих узлах:
resource r0 { device /dev/drbd0; disk /dev/vg_drbd_back/r0; meta-disk internal; on host-a { address x.x.x.x:7789; } on host-b { address x.x.x.x:7789; } }
Инициализируйте DRBD, создав метаданные и подключив устройство к обоим узлам, а затем выберите один узел для повышения до основного (--force только для начальной синхронизации).
Затем на основном узле создайте подписи PV, VG и LVM поверх устройства DRBD:
# pvcreate /dev/drbd0 Physical volume "/dev/drbd0" successfully created # vgcreate vg_drbd_front /dev/drbd0 Volume group "vg_drbd_front" successfully created # lvcreate --name drbd_lvm0 --size 30G vg_drbd_front Logical volume "drbd_lvm0" created # lvcreate --name drbd_lvm1 --size 40G vg_drbd_front Logical volume "drbd_lvm1" created
Чтобы переключить LVM вручную, вам нужно будет деактивировать группу томов на первичном, прежде чем вы сможете понизить его статус до вторичного:
# vgchange -a n vg_drbd_front 0 logical volume(s) in volume group "vg_drbd_front" now active # drbdadm secondary r0
Затем на узле продвиньте DRBD и активируйте группу томов:
# drbdadm primary r0 # vgchange -a y vg_drbd_front 2 logical volume(s) in volume group "vg_drbd_front" now active
Конечно, если вы хотите сделать это автоматически с помощью Pacemaker, вам нужно будет использовать агент ресурсов LVM, который будет обрабатывать активацию / деактивацию указанного VG:
# pcs resource describe ocf:heartbeat:LVM
Кроме того, на веб-сайте LINBIT есть много хороших (и бесплатных) технических руководств и других ресурсов, которые могут быть полезны в вашей кластеризации: http://www.linbit.com
РЕДАКТИРОВАТЬ: Добавлен раздел ниже, касающийся отключения lvmmetad.
CentOS 7 по умолчанию позволяет использовать lvmetad. Вам нужно будет отключить это на обоих узлах, чтобы фильтры работали, как указано выше.
в /etc/lvm/lvm.conf
устанавливать use_lvmetad = 0
, а затем остановитесь lvm2-lvmmetad
сервис и сокет через systemd:
# systemctl stop lvm2-lvmetad.service # systemctl stop lvm2-lvmetad.socket
Вы говорите резервное копирование, но drbd выполняет репликацию немедленно и не считается традиционным автономным резервным копированием. Это больше похоже на RAID 1. По-прежнему существует необходимость копировать данные, которые вам интересны, в другое место, не уязвимое для случайных команд удаления и т.п.
drbd копирует все на блочное устройство, включая метаданные LVM и файловой системы. Вам нужен кластерный LVM для обработки устройств на нескольких узлах. Если да, то LV могут появиться на любом узле. Red Hat поддерживает это в качестве ресурсов кластера Pacemaker HA. Их руководство по администрированию диспетчера логических томов поможет вам начать работу.
Альтернативой является создание распределенной системы хранения, такой как glusterfs. Это не использует clvm, но позволяет распределенные реплицированные тома. Это создает определенный тип совместно используемой файловой системы поверх локальной файловой системы узла. clvm на drbd, напротив, строит файловые системы кластера поверх реплицированных блочных дисковых устройств.