Введение
Распределенная реплицированная система хранения для Linux. Distributed Replicated Block Device (DRBD) – это распределенная реплицированная система хранения для платформы Linux. Она реализована как драйвер ядра, несколько приложений управления в пользовательском пространстве и набор скриптов командной оболочки. DRBD традиционно используется в высокодоступных (HA) компьютерных кластерах, но, начиная с версии DRBD 9, её также можно использовать для создания более крупных программно-определяемых пулов хранения данных с акцентом на интеграцию с облачными технологиями. DRBD-устройство – это блочное устройство DRBD, которое ссылается на логическое блочное устройство в схеме логических томов. Программное обеспечение DRBD является свободным программным обеспечением, распространяемым по лицензии GNU General Public License версии 2. DRBD входит в состав инициативы Lisog по разработке стека программного обеспечения с открытым исходным кодом.
Distributed Replicated Block Device (DRBD) is a distributed replicated storage system for the Linux platform. It is implemented as a kernel driver, several userspace management applications, and some shell scripts. DRBD is traditionally used in high availability (HA) computer clusters, but beginning with DRBD version 9, it can also be used to create larger software defined storage pools with a focus on cloud integration. A DRBD device is a DRBD block device that refers to a logical block device in a logical volume schema. The DRBD software is free software released under the terms of the GNU General Public License version 2. DRBD is part of the Lisog open source stack initiative.
Режим работы
DRBD накладывает устройства логических блоков (обычно называемые /dev/drbdX, где X – побочный номер устройства) на существующие локальные блочные устройства на участвующих узлах кластера. Записи в основной узел передаются на блочное устройство нижнего уровня и одновременно распространяются на вторичный(е) узел(ы). Вторичный(е) узел(ы) затем передает данные на соответствующее блочное устройство нижнего уровня. Все операции чтения выполняются локально, если не настроено балансирование нагрузки чтения. В случае отказа основного узла, процесс управления кластером повышает вторичный узел до основного состояния. Этот переход может потребовать последующей проверки целостности файловой системы, расположенной поверх DRBD, посредством проверки файловой системы или воспроизведения журнала. Когда отказавший бывший основной узел возвращается, система может (или не может) снова назначить его основным после повторной синхронизации данных устройства. Алгоритм синхронизации DRBD эффективен тем, что повторной синхронизации подлежат только те блоки, которые были изменены во время простоя, а не устройство целиком. DRBD часто развертывается совместно с менеджерами ресурсов кластера Pacemaker или Heartbeat, хотя он также интегрируется с другими структурами управления кластерами. Он интегрируется с решениями виртуализации, такими как Xen, и может использоваться как ниже, так и выше стека Linux LVM. DRBD позволяет настраивать балансировку нагрузки, позволяя обоим узлам получать доступ к определенному DRBD в режиме чтения/записи с семантикой общего хранилища. Конфигурация множественного основного (множественных узлов чтения/записи) требует использования распределенного менеджера блокировок. С 2018 года DRBD также может использоваться в программном обеспечении для управления блочным хранилищем LINSTOR для репликации между различными узлами и для предоставления блочных устройств хранения пользователям и приложениям.
Сравнение общего кластерного хранения
Обычные компьютерные кластерные системы обычно используют общее хранилище для данных, используемых кластерными ресурсами. Этот подход имеет ряд недостатков, которые DRBD может помочь смягчить: доступ к ресурсам общего хранилища обычно осуществляется через сеть хранения (SAN) или сервер сетевого хранения (NAS), что создает дополнительную нагрузку при операциях чтения. В DRBD эта нагрузка снижается, поскольку все операции чтения выполняются локально. Общее хранилище обычно дорогостоящее и требует больше места (2U и более) и электроэнергии. DRBD позволяет организовать высокодоступную (HA) конфигурацию всего из двух машин. Общее хранилище не всегда обеспечивает высокую доступность. Например, единая сеть хранения, к которой обращаются несколько хостов виртуализации, считается общим хранилищем, но не считается высокодоступным на уровне хранилища – в случае отказа этой сети хранения ни один хост в кластере не сможет получить доступ к общему хранилищу. DRBD позволяет использовать целевое хранилище, которое одновременно является общим и высокодоступным. Недостатком является то, что запись непосредственно на общее устройство хранения выполняется быстрее, чем маршрутизация записи через другой узел.
Shared storage resources must typically be accessed over a storage area network or on a network attached storage server, which creates some overhead in read I/O. In DRBD that overhead is reduced as all read operations are carried out locally. Shared storage is usually expensive and consumes more space (2U and more) and power. DRBD allows for an HA setup with only 2 machines. Shared storage is not necessarily highly available. For example, a single storage area network accessed by multiple virtualization hosts is considered shared storage, but is not considered highly available at the storage level if that single storage area network fails, neither host within the cluster can access the shared storage. DRBD allows for a storage target that is both shared and highly available. A disadvantage is the lower time required to write directly to a shared storage device than to route the write through the other node.
Сравнение с RAID-1
DRBD имеет некоторое сходство с RAID 1, поскольку предполагает наличие копии данных на двух устройствах хранения, так что в случае отказа одного из них данные с другого можно использовать. Однако принцип его работы существенно отличается от RAID и даже сетевого RAID. В RAID избыточность реализована на уровне, прозрачном для использующего приложения. Несмотря на наличие двух устройств хранения, существует только один экземпляр приложения, который не знает о наличии нескольких копий данных. При чтении данных RAID-уровень выбирает устройство хранения, с которого будет производиться чтение. В случае отказа устройства хранения, RAID-уровень переключается на другое устройство, не уведомляя об этом экземпляр приложения. В отличие от этого, в DRBD существует два экземпляра приложения, и каждый из них может читать данные только с одного из двух устройств хранения. Если одно из устройств хранения выходит из строя, экземпляр приложения, связанный с этим устройством, теряет возможность чтения данных. В результате, этот экземпляр приложения завершает работу, а другой экземпляр приложения, связанный с сохранившейся копией данных, берет на себя управление. И наоборот, в RAID, в случае отказа единственного экземпляра приложения, информация на двух устройствах хранения становится фактически недоступной, в то время как в DRBD другой экземпляр приложения может продолжить работу.
Включение в ядро Linux
Авторы DRBD впервые представили программное обеспечение сообществу разработчиков ядра Linux в июле 2007 года с предложением включить его в официальную версию ядра Linux. После продолжительного рассмотрения и нескольких обсуждений Линус Торвальдс одобрил включение DRBD в состав официального ядра Linux. DRBD был включен в ядро 8 декабря 2009 года в период "окна слияния" для версии ядра Linux 2.6.33.