DRBD - кластер дисків (v 0.7.* переклад: бета версія)

ІМ'Я

drbd.conf - Конфігураційний файл для пристроїв DRBD.

ВСТУП

Файл /etc/drbd.conf використовується програмами /etc/init.d/drbd та /etc/ha.d/resource.d/drbddisk котрі є частиною пакету DRBD.

Формат файлу розроблений так, що дозволяє нам мати ідентичні копії файлу на обох вузлах кластеру. Настирливо рекомендується цим скористатись для забезпечення нормального управління конфігурацією. Файл /etc/drbd.conf повинен бути однаковий на обох вузлах кластеру. Зміни в /etc/drbd.conf не вступають в силу негайно.

Маленький приклад файлу /etc/drbd.conf

  resource drbd0 {
      protocol C;
      incon-degr-cmd "halt -f";

     on primarydhcp {
          device    /dev/drbd1;
          disk      /dev/hda7;
          address   10.0.0.10:7789;
          meta-disk  internal;
      }

      on secondarydhcp {
          device    /dev/drbd1;
          disk      /dev/hda7;
          address   10.0.0.11:7789;
          meta-disk  internal;
      }
   }

В цьому прикладі є тільки один ресурс DRBD (названий drbd0) котрий використовує протокол C для зв'язку між його пристроями. Пристрій, що працює на вузлі primarydhcp використовує /dev/drbd1 як блочний пристрій для своїх програм, і /dev/hda7 як низькорівневий масив збереження даних. IP адрес використовується для вказання мережевого з'єднання.

Можна визначати багато розділів з ресурсами в одному файлі drbd.conf.

СТРУКТУРА ФАЙЛУ

Файл складається з розділів і параметрів. Розділ починається з ключового слова, часом з додаткового імені та відкриває дужки ({). Розділ закінчується закриванням дужки (}). Між дужками містяться параметри.

section [name] { parameter value; [...] }

Параметри починаються з імені параметру відділеного від значення пробілом. Кожний символ, що слідує за пробілом вважається частиною значення параметру. Виключенням є логічний (Boolean) параметр котрий містить тільки ідентифікатор. Параметр закінчується символом крапка з комою (;).

Деякі значення параметру мають визначені символи: K, M or G. котрі визначаються у звичний спосіб (K = 210 = 1024, M = 1024 K, G = 1024 M).

Файл може містити коментарі, які мусять починатись з (#). Після символу (#) дані ігноруються до кінця стрічки.

РОЗДІЛИ

 skip {
            resource [name] {...} 
         }

просто помістивши їх між дужки skip.

skip : Коментує текстове сміття, якщо воно навіть займає більш ніж одну стрічку. Символи між ключовим словом skip та відкритою дужкою ({) ігноруються. Все поміщене між дужки пропускається. Це допомагає коментувати цілі розділи:

global : Вказує деякі глобальні параметри. Поки що дозволеними є minor-count, dialog-refresh та disable-io-hints. Можна використовувати тільки один розділ global, бажано самий перший.

resource name : Визначає сам ресурс DRBD. Кожний розділ, визначаючий ресурс, мусить містити дві секції "on ім'я-вузла" і може мати також секції startup, syncer, net та disk. Обов'язковим параметром розділу є protocol. Не обов'язковим: incon-degr-cmd.

on host-name : Поєднує необхідні параметри конфіґурації DRBD пристрою для включених ресурсів. host-name є обов'язковим і мусить відповідати імені Лінукс компа (uname -n) одного з вузлів. Обов'язковими параметрами секції є: device, disk, address, meta-disk.

disk : Цей розділ використовується для оптимізації DRBD пристроїв, а саме властивостей пов'язаних з низькорівневим обладнанням. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковим параметром є: on-io-error.

net : Розділ використовують для оптимізації мережевих властивостей DRBD. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: sndbuf-size, timeout, connect-int, ping-int, max-buffers, max-epoch-size, ko-count, on-disconnect.

startup : Розділ використовують для оптимізації властивостей запуску DRBD. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: wfc-timeout, degr-wfc-timeout.

syncer : Розділ використовують для оптимізації пристрою синхронізаційного сервісу. Для детальної інформації про параметри читайте drbdsetup(8). Необов'язковими параметрами є: rate, group, al-extents.

ПАРАМЕТРИ

minor-count count : count може бути числом від 1 до 255.

Використовуйте minor-count, якщо бажаєте визначити більше ресурсів потім без перевантаження DRBD модуля ядра. По замовчуванню модуль вантажиться стільки раз скільки пристроїв визначено в конфігураційному файлі. По замовчуванню модуль збирається з 2, а монолітне ядро з 8. Для монолітного ядра параметр minor-count ігнорується, для зміни потрібно вказати параметр завантаження ядра drbd.minor_count=count.

dialog-refresh time : час може бути >=0

Час в секундах і кількість разів скільки виводиться користувацьке застереження (не виводиться коли 0). По замовчуванню 1.

disable-io-hints : Використовуйте disable-io-hints якщо бажаєте встановити DRBD пристрій через зворотню петлю, чи між двома віртуальними серверами на одній машині, для тестування чи презентації. Не потрібна з ядром 2.6.*

protocol prot-id : По верх TCP/IP використовується спеціальний протокол. Допустимі протоколи: A, В, та C.

Протокол А: операція запису вважається завершеною, якщо дані досягли локального диску та локальної вихідної черги tcp.

Протокол В: операція запису вважається завершеною, якщо дані досягли локального диску та віддаленого буферу.

Протокол С: операція запису вважається завершеною, якщо дані досягли обох, локального та віддаленого, дисків.

incon-degr-cmd command : У випадку коли при включенні вузла він вантажиться у виродженому режимі (inittimeout включений) і якщо локальна реплікація даних не є повна, запускається command. Якщо команда виконується без помилок drbddisk вважає що DRBD пристрій є в основному стані (primary).

device name : Ім'я блочного пристрою вузла, що описується в розділі resource. Ви мусите використовувати саме цей пристрій для роботи з програмами (файловими системами) і ніколи не використовуйте низькорівневий блочний пристрій котрий вказаний з параметром disk.

Пристрій вузла мусить мати той самий головний номер, як і пристрій DRBD. В поточній реалізації використовується головний номер 147 і відповідні пристрої вузла називають /dev/drbd0, /dev/drbd1,...

При встановлені DRBD пакету скрипт створює /dev/drbd0 ... /dev/drbd8. Для переконання пошукайте за /dev/drbd*.

disk name : DRBD використовує цей пристрій для запису та зчитування даних. НІКОЛИ не користуйтесь цим пристроєм коли поверх нього працює DRBD. Це також відноситься до ?dumpe2fs(8) та подібних команд.

address IP : port :ресурс потребує вказати по парі IP:port адрес на кожний пристрій, котрий використовується для очікування вхідного зв'язку від пристрою іншого вузла, для встановлення з ним зв'язку.

Кожний DRBD ресурс потребує TCP порт котрий використовують для зв'язку з пристроєм партнерського вузла. Два різні DRBD ресурси не можуть використовувати ту саму пару IP:port на одному вузлі.

meta-disk internal :

meta-disk device [index] : internal означає що останні 128 MB низькорівневого пристрою використовуються для службових даних. Не можна використовувати [index] разом з internal.

Можна використовувати єдиний блочний пристрій для зберігання службових даних багатьох DRBD пристроїв. Тобто використовуйте meta-disk /dev/hde6[0]; та meta-disk /dev/hde6[1]; для двох різних ресурсів. В цьому випадку мінімальний розмір для meta-disk мусить бути 256 MB.

on-io-error handler : handler включається, коли низькорівневий пристрій посилає помилку зчитування/запису на верхній рівень.

handler може бути : pass_on, panic, чи detach.

pass_on: Повідомляє помилку зчитування/запису на верхній рівень. На основному вузлі повідомляє примонтовану файлову систему. На другорядному ігнорує.

panic: Вузол залишає кластер створюючи паніку ядра.

detach: Вузол ігнорує низькорівневий пристрій та продовжує роботу в бездисковому режимі.

sndbuf-size size : size є розміром вихідної черги TCP. По замовчуванню 128K. Можна вказати більше чи менше значення. Більше значення краще для збільшення пропускної здатності при використанні протоколу А через дуже стабільну мережу. Дуже великі значення ~1M можуть привести до проблем. А значення менші 32K не доречні.

timeout time : Якщо партнерський вузол не може відіслати пакет з відповіддю протягом time десятих секунди, партнерський вузол вважається не робочим і тому TCP/IP зв'язок до нього розривається. Це значення мусить бути меншим ніж connect-int та ping-int. По замовчуванню є 60 = 6 секунд, крок 0.1 секунди.

connect-int time : У випадку неможливості зв'язку з віддаленим DRBD пристроєм негайно, DRBD продовжує спроби зв'язатись. З допомогою цього параметру можна вказати час між двома спробами. По замовчуванню значення є 10 секунд, крок 1 секунда.

ping-int time : Якщо зв'язок TCP/IP між парою пристроїв DRBD є вільним більш ніж time секунд, DRBD буде генерувати пакети keep-alive, для перевірки справної роботи партнера. По замовчуванню є 10 секунд, крок 1 секунда.

max-buffers number : Максимальне число запитів, що приймається DRBD. Крок є PAGE_SIZE, котрий становіть 4 KB в більшості систем. Нижня грань 32 (=128 KB). Для забезпечення високої продуктивності допомагає збільшення number. Ця черга використовується для утримування даних поки вони записуються на диск.

max-epoch-size number : Найвище число блоків даних між двома бар'єрами запису. Якщо встановити меншим за 10 може значно зменшити продуктивність.

ko-count count : У випадку зупинки другорядного вузла під час спроби завершити один запит запису count разів з часовими інтервалами timeout, вузол виключається з кластеру. (Тобто основний вузол переходить у вироджений режим.) По замовчуванню 0, що виключає цю властивість.

on-disconnect handler : Коли зв'язок з партнером пропав, DRBD може або перейти у вироджений режим, або намагатись відновити з'єднання з партнером, або заморозити всі майбутні операції вводу/виводу (подумайте про жорстко примонтований том NFS). Можливими значення є: stand_alone, reconnect і freeze_io. По замовчуванню reconnect.

stand_alone: Не відновлювати зв'язок і перейти у вироджений режим.

reconnect: Старатись відновити зв'язок.

freeze_io: Намагатись відновити зв'язок, але заморозити ввід/вивід поки зв'язок не відновиться знов.

wfc-timeout time : Чекати на з'єднання протягом часу time. init скрипт drbd(8) блокує завантажувальний процес поки DRBD ресурси не зв'яжуться. Це буває коли управління кластером стартує пізніше, внутрішні пов'язані з цим ресурси залишаються невидимі. У випадку бажання обмежити час очікування зробіть це тут. По замовчуванню 0, що значить необмежено. Крок 1 секунда.

degr-wfc-timeout time : Очікування для відновленням з'єднання протягом time, якщо вузол був виродженим кластером. У випадку перевантаження виродженого кластера (= кластер в котрого залишивсь тільки один вузол), цей час очікування використовується замість wfc-timeout, тому що партнер навряд чи включиться в цей проміжок, коли вийшов з ладу перед тим. По замовчуванню 60, крок 1 секунда. Значення 0 означає без обмежень.

rate rate : Для гарантування стабільної роботи програм поверху DRBD, є можливим обмежити розмір каналу що використовується для синхронізації блочних пристроїв між вузлами кластеру. По замовчуванню 250KB/sec, по замовчуванню крок KB/sec. Можливі суфікси: K, M, G.

group number : Десинхронізація пристроїв однієї групи виконується паралельно. Групи отримують доступ послідовно. Потрібно не дозволяти пристроям які поділяють один фізичний пристрій синхронізуватись паралельно. По замовчуванню всі пристрої є в групі 0 тобто будуть синхронізуватись паралельно. Дозволяються від'ємні та позитивні значення.

al-extents extents : DRBD автоматично визначає робочої області. Цим параметром контролюється скільки місця виділяється для роботи (=active set). Кожна одиниця відповідає 4M робочого диску (=низькорівневого пристрою). У випадку неочікуваної зупинки основного вузла, розмір даних визначений опцією, мусить бути розсинхронізований до приєднання вузла. Структура даних зберігається в області службових даних, тому кожна зміна робочої області приводить до операції запису на пристрій з службовими даними. Велике число extents дає довший період десинхронізації але менші поновлення до службових даних. По замовчуванню extents є 127. (Мінімум 7, максимум 3843.)

ВЕРСІЯ

Цей документ коректний для версії 0.7.5 пакету DRBD.

АВТОРИ

Написаний Филипом Рейзнером (Philipp Reisner) philipp.reisner@linbit.com.

Сторінка підручника була переглянута та переписана Гелмутом Воллмерсдорфером (Helmut Wollmersdorfer) helmut.wollmersdorfer@linbit.com.

ПОВІДОМЛЕННЯ ПОМИЛОК

Повідомляйте помилки на drbd-user@lists.linbit.com.

АВТОРСЬКІ ПРАВА

Copyright (c) 2001 Philipp Reisner. Це вільні програми; дивіться джерельні коди для встановлення прав копіювання. Нема ніяких гарантій; навіть для зручності використання в конкретному випадку.

ПОДІБНІ ТЕМИ

?drbd - кластер дисків, drbd(8), ?drbddisk(8), drbdsetup(8), drbdadm(8).