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

ІМ'Я

drbdsetup - інструмент для встановлення DRBD

СИНТАКСИС

drbdsetup device disk lower_dev meta_data_dev meta_data_index [ -d size ] [ -e err_handler ]
drbdsetup device net local_addr [ :port ] remote_addr [ :port ] protocol [ -c time  ]  [  -i time ] [ -t val ] [ -S size ] [ -k count ] [ -d discon_handler ]
drbdsetup device syncer [ -k ] [ -g group ] [ -r rate ] [ -e extents ]
drbdsetup device disconnect
drbdsetup device detach
drbdsetup device down
drbdsetup device primary [ -h ] [ -t ] [ -d ]
drbdsetup device secondary
drbdsetup device on_primary [ -h ] [ -t ]
drbdsetup device invalidate
drbdsetup device invalidate_remote
drbdsetup device wait_connect [ -t wfc_timeout ] [ -d degr_wfc_timeout ]
drbdsetup device wait_sync [ -t wfc_timeout ] [ -d degr_wfc_timeout ]
drbdsetup device state
drbdsetup device cstate
drbdsetup device resize [ -d size ]
drbdsetup device show

ОПИС

drbdsetup використовується для встановлення асоціації між DRBD пристроєм та його низькорівневими блочним пристроєм, для встановлення пар DRBD пристроїв, щоб здійснювати дзеркальне відображення їх низькорівневих блочних пристроїв і для перевірки налаштування працюючого DRBD кластеру.

ПРИМІТКА

drbdsetup є низькорівневий інструмент до DRBD кластеру. Він використовується datadisk, drbdadm та drbd скриптом для зв'язку з драйвером пристрою.

КОМАНДИ

Кожна підкоманда drbdsetup потребує аргументів і має свою власну порцію опцій. Усі значення мають свою розмірність по замовчуванню, яку можна змінити суфіксами K, M or G. Їх розмірність визначається звичним шляхом (тобто: K = 210 = 1024)

**DISK** Зв'язує пристрій з низькорівневим пристроєм для збереження на ньому блоків даних. Опція **-d** (чи **--disk-size**) повинна вживатись тільки тоді коли не бажаєте використовувати максимально можливий розмір зумовлений розміром низькорівневих дисків. Якщо не вживати **-d** пристрій буде готовий до використання одразу після під'єднання до свого партнера. (Дивіться команду **NET**.) -d, --disk-size size : Ця опція може змінити метод яким DRBD визначає розмір. Якщо ви бажаєте використовувати пристрій перед першим з'єднанням з партнером використайте цю опцію для вказання розміру DRBD пристрою. По замовчуванню в KB (1 KB = 1024 bytes). -e, --on-io-error err_handler : Якщо низькорівневий пристрій повідомляє помилку до DRBD, DRBD може послати помилку до верхнього рівня операційної системи, створити паніку ядра, чи від'єднати пристрій і проводити всі наступні операції запису/зчитування використовуючи партнера. Допустимі значення err_handler: **pass_on**, **panic** і **detach**.
**NET** Встановлює пристрій для прослуховування local_addr:port очікуючи з'єднання і для намагання встановити зв'язок з remote_addr:port. Якщо порт пропущений по замовчуванню використовується 7788.
Поверх TCP/IP з'єднання використовуються спеціальні протоколи. Допустимими протоколами є: А, В та С.
Протокол А: операція запису вважається завершеною, якщо дані досягли локального диску та локальної вихідної черги tcp.
Протокол В: операція запису вважається завершеною, якщо дані досягли локального диску та віддаленої вхідної черги.
Протокол С: операція запису вважається завершеною, якщо дані досягли локального та віддаленого диску. -c, --connect-int time : У випадку неможливості зв'язку з віддаленим DRBD пристроєм негайно, DRBD буде продовжувати спроби зв'язатись. З допомогою цього параметру можна вказати час між двома спробами. По замовчуванню значення є 10 секунд, крок 1 секунда. -i, --ping-int time : Якщо зв'язок TCP/IP між парою пристроїв DRBD є вільним більш ніж time секунд, DRBD буде генерувати пакети keep-alive, для перевірки справної роботи партнера. По замовчуванню 10 секунд, крок 1 секунда. -t, --timeout val : Якщо партнерський вузол не може відіслати пакет з відповіддю через time десятих секунди, партнерський вузол вважається не робочим і тому TCP/IP зв'язок до нього розривається. Це значення мусить бути меншим ніж connect-int та ping-int. По замовчуванню є 60 = 6 секунд, крок 0.1 секунди. -S, --sndbuf-size size : Розмір вихідної черги для зберігання TCP пакетів перед відправкою на другорядний вузол, на котрий з мережевих причин не може передати. Можна вказати більше чи менше значення. Більше значення краще для збільшення пропускної здатності при використанні протоколу А через достатньо постійну мережу. Дуже великі значення ~1M можуть привести до проблем. Пам'ятайте чим більша асинхронність тим більше даних пропаде при втраті основного вузла. А значення менші 32K не доречні. По замовчуванню 128K. По замовчуванню крок K. -k, --ko-count count : У випадку зупинки другорядного вузла і неспосібності завершити один запис після count спроб з інтервалами timeout, він відключається від кластеру. (основний вузол переходить у вироджений стан) По замовчуванню 0, що відключає цю властивість. -e, --max-epoch-size val : З цією опцією максимальне число запитів запису між двома бар'єрами є обмежене. Краще встановити такою ж, як **--max-buffers**. Значення менші 100 істотно зменшують продуктивність. По замовчуванню 2048. -b, --max-buffers val : Опція обмежує максимальне число сторінок черги для прийому запиті запису другорядним вузлом DRBD. Повинно бути встановлене такою ж, як **--max-epoch-size**. Малі значення можуть зменшити продуктивність. (Мінімальне 32). по замовчуванню 2048. -d, --on-disconnect discon_handler : Коли зв'язок з партнером розривається, DRBD може перейти в вироджений режим з одним вузлом, намагатись відновити зв'язок чи припинити ввід/вивід. Допустимі значення **stand_alone**, **reconnect** та **freeze_io**. По замовчуванню відновити зв'язок **reconnect**.
**SYNCER** Змінює синхронізаційні параметри сервісу пристрою під час роботи. Не міняє mentioned параметрів. -r, --rate rate : Для гарантування належної роботи програм поверху DRBD, є можливим обмежити розмір каналу, що використовується для синхронізації. По замовчуванню 250KB/sec, крок по замовчуванню 1KB/sec. -k, --skip-sync : Опція відключає автоматичний старт синхронізаційного процесу, що відбувається одразу після з'єднання DRBD пристроїв. -g, --sync-group group : Синхронізація всіх пристроїв в одній групі проводиться паралельно. Доступ групами здійснюється послідовно. Вам потрібно запобігати, щоб низькорівневі пристрої розміщені на одному фізичному носії синхронізуватись паралельно. По замовчуванню всі належать до групи 0 і синхронізуватимуться паралельно. -e, --al-extents extents : DRBD здійснює автоматично визначення робочої області. Цим параметром контролюється скільки місця виділяється для роботи (=active set). Кожна одиниця відповідає 4M робочого диску (=низькорівневого пристрою). У випадку неочікуваної зупинки основного вузла розмір даних визначений опцією мусить бути розсинхронізований до часу зупинки вузла. Структура даних зберігається в області службових даних, тому кожна зміна робочої області приводить до операції запису на пристрій з службовими даними. Велике число extents дає довший період десинхронізації але менші поновлення до службових даних. По замовчуванню extents є 127. Мінімум 7, максимум 3843.
**PRIMARY** Встановлення пристрою в основний стан, що означає можливість відкриття його програмами (чи файловими системами) для читання та запису. Дані, що пишуться на пристрій в основному стані дзеркально відображаються на пристрій в другорядному стані. Не можливо встановити обидва пристрої з'єднаної DRBD пари в основний стан. -h, --human : Встановлює що стан змінений адміном і при перезавантажені кластеру має перевагу над рішеннями прийнятими іншими партнерами. -t, --timeout-expired : Визначає, що стан змінився по причині того, що вузол був відсутній при старті кластеру (кластер запустивсь в виродженому стані). По відношенню до кластера це переважає рішення зроблене управлінням кластера. -d, --do-what-I-say : Перехід в основний стан не відбувається коли є не завершена локальна реплікація. Використовуючи цю опцію вузол завжди переводиться в основний стан. ВИКОРИСТОВУЙТЕ ЇЇ ТІЛЬКИ КОЛИ ЗНАЄТЕ, ЩО РОБИТЕ.
**SECONDARY** Встановлює пристрій в другорядний стан. Ця команда не виконається коли хоча б одна програма (чи файлова система) має відкритий доступ на запис на цей пристрій.
Однак можливо, що обидва пристрої з'єднані в DRBD пару є в другорядному стані.
**ON_PRIMARY** Це встановлює додаткову опцію, що приводить до наступного переходу в основний стан. Опція дійсна тільки поки пристрій не зв'яжеться з своїм партнером. Можливі опції: **--inc-human** та **--inc-timeout-expired**.
Ця команда є для зручності. Ефект від неї той же, як би вказати цю опцію до команди **primary** напряму. Для детального опису двох опцій дивіться команду **primary**.
**NVALIDATE** Насильно переводить локальний пристрій, пари пристроїв підключених до DRBD в стані їх партнерської синхронізації, що означає копіювання всіх блоків даних з партнера на локальний пристрій.
Ця команда не виконається, коли пристрої не є частиною пари з'єднаних пристроїв.
**INVALIDATE_REMOTE** Насильно переводить локальний пристрій DRBD пристроїв в стан джерела їх синхронізації, що означає копіювання всіх блоків даних з локального пристрою до партнера.
**WAIT_CONNECT** Продовжує тоді коли пристрій може зв'язуватись з своїм партнерським пристроєм. -t, --wfc-timeout wfc_timeout : Команда видасть помилку, коли пристрій не зможе зв'язатись з своїм партнером на протязі timeout секунд. Якщо партнер працював перед перевантаженням вузла, використовується wfc_timeout. Якщо партнер відключивсь перед перевантаженням вузла, використовується degr_wfc_time-out. По замовчуванню значення wfc_timeout рівне 0, що значить чекати вічно. Значення по замовчуванню для degr_wfc_timeout рівне 120 секунд. -d, --degr-wfc-timeout degr_wfc_timeout :
**WAIT_SYNC** Продовжує тоді коли пристрій виходить з будь-якого синхронізаційного стану, і повертається в стан зв'язку. Опції такі ж, як з командою wait_connect.
**DISCONNECT** Видаляє інформацію встановлену командою **NET** з пристрою. Тобто переводить пристрій в від'єднаний стан, що означає не прослуховування більше мережі.
**DETACH** Видаляє інформацію встановлену командою **DISK** з пристрою. Це приводить до від'єднання пристрою від низькорівневого пристрою.
**DOWN** Видаляє всю конфіґураційну інформацію з пристрою і переводить його назад в не налаштований стан.
**STATE** Показує поточний стан пристрою і його партнера (local/peer).
**CSTATE** Показує поточний стан зв'язку пристрою.
**RESIZE** Це приведе до перевірки розміру низькорівневих дисків. Щоб здійснити збільшення диску робочої системи потрібно розширити низькорівневі диски на обох пристроях та викликати команду **resize** на обох вузлах.
**SHOW** Показує всю доступну конфіґураційну інформацію пристрою.

ПРИКЛАДИ

ВСТАНОВЛЕННЯ ПАРИ ПРИСТРОЇВ

В цьому прикладі комп'ютери, tc1 і tc2, сполучені прямим кабелем через інтерфейс 192.168.37.2 (tc1) і 192.168.37.3 (tc2). Включимо /dev/hda6 у віртуальний диск.
На tc1 виконуємо

           $ drbdsetup /dev/drbd0 disk /dev/hda6
           $ drbdsetup /dev/drbd0 net 192.168.37.2 192.168.37.3 B

На tc2 виконуємо:

           $ drbdsetup /dev/drbd0 disk /dev/hda6
           $ drbdsetup /dev/drbd0 net 192.168.37.3 192.168.37.2 B
           $ drbdsetup /dev/drbd0 primary
           $ cat /proc/drbd
           version: 0.7.0 (api:xx/proto:yy)

           0: cs:Connected st:Primary/Secondary ns:0 nr:0 dw:0 dr:0 of:0
           1: cs:WFConnection st:Secondary/Unknown ns:0 nr:0 dw:0 dr:0 of:0

Через /proc/drbd ми можемо бачити, що наша пара пристроїв є з'єднана та пристрій є готовий до використання на tc2.
Тепер можна запускати програми поверху віртуального диску:

           $ mkfs -b 4096 /dev/drbd0
           $ mount /dev/drbd0 /mnt/mountpoint

ЗНІМОК ДИСКУ ЗАПИСАТИ НА ТРЕТЮ МАШИНУ

В цьому прикладі комп'ютер, tc1 і tc2, є з'єднані і tc2 є основним вузлом пристрою /dev/drbd0 Знімок цього пристрою потрібно записати на tc3, /dev/hda6.
Нам потрібно підготувати tc3:

           $ drbdsetup /dev/drbd0 disk /dev/hda6
           $ drbdsetup /dev/drbd0 net tc3 tc2 B

На tc2 ми виконуємо

           $ drbdsetup /dev/drbd0 disconnect
           $ drbdsetup /dev/drbd0 net tc2 tc3 B --sync-rate 4M
           $ drbdsetup /dev/drbd0 replicate
           $ drbdsetup /dev/drbd0 wait_sync
           $ drbdsetup /dev/drbd0 disconnect
           $ drbdsetup /dev/drbd0 net tc2 tc1 B
           $ drbdsetup /dev/drbd0 replicate

Так як знімок диску береться без переведення диску в стабільний стан, потрібно виконати на tc3:

           $ drbdsetup /dev/drbd0 down
           $ fsck /dev/hda6
           $ mount /dev/hda6 /some/mountpoint

ВЕРСІЯ

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

АВТОРИ

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

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

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

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

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

ПОДІБНІ ТЕМИ

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