20 июн. 2013 г.

Настройка кластерной фаловой системы OCFS2 поверх DRBD

В предыдущей статье было показано как настроить DRBD.
Здесь будет показано как создать и настроить файловую систему OCFS2.
Мы будем использовать устройство /dev/drbd1. Действия выполняются на обеих нодах.
Создаем наш конфиг для ocfs:

~: vim /etc/ocfs2/cluster.conf

node:
       name = oxygen
       cluster = ocfs2
       number = 0  
       ip_address = 10.3.1.4
       ip_port = 7777

node:
       name = oxygen2
       cluster = ocfs2
       number = 1
       ip_address = 10.3.1.5
       ip_port = 7777

cluster:
       name = ocfs2
       node_count = 2

Вызываем конфигуратор для ocfs :
~: dpkg-reconfigure ocfs2-tools

После этого подключаются модули ядра и запускается демон. После чего на первом ноде создаем фаловую систему:
~: mkfs.ocfs2 -N 2 /dev/drbd1
Для проверки статуса ocfs2:
~: /etc/init.d/o2cb status

Driver for "configfs": Loaded
Filesystem "configfs": Mounted
Stack glue driver: Loaded
Stack plugin "o2cb": Loaded
Driver for "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Not active
Последняя строка Not active. Это потому что мы не монтировали раздел.

18 июн. 2013 г.

Создание DRDB устройства

Система будет развернута на debian wheezy, на данный момент стабильный.
Версии пакетов: ocfs2-tools:1.6.4, drbd8-utils:8.3.13
Устанавливаем пакеты:
apt-get install ocfs2-tools drbd8-utils


Создание DRBD устройства

В обоих нодах требуется чтобы была одинаковая разметка диска. Для создания сетевого хранилища был выбран раздел с размером 200 гб. Можно разбить диск на 2 части - один для метаданных и  другой блочное устройство. Но мы обойдемся без этого (будем хранить метаданные и данные на одном диске).


oxygen1# gdisk -l /dev/md0
GPT fdisk (gdisk) version 0.8.5

Disk /dev/md0: 1464784000 sectors, 698.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 3BE3DE93-D88B-4BFA-A324-36D66AB2ED8E
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1464783966
Partitions will be aligned on 2048-sector boundaries
Total free space is 1045353533 sectors (498.5 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       419432447   200.0 GiB   8300  Linux filesystem


В файле /etc/drbd.conf удалите первую строчку. Далее Создаем конфиг для drbd:

#vim /etc/drbd.d/r0.res
global {
        usage-count yes;
}   

common {

        syncer {
                rate 40m;
                al-extents 320;
        }
}

resource r0{

protocol c;

        startup{
                wfc-timeout             20;
                degr-wfc-timeout        10;
                become-primary-on       both;
        }
        disk {
                on-io-error     detach;
        }
        net{
                cram-hmac-alg   sha1;
                shared-secret   "secret";
                allow-two-primaries;
                after-sb-0pri   discard-zero-changes;
                after-sb-1pri   violently-as0p;
                after-sb-2pri   violently-as0p;
                max-buffers     2048;
        }
        on oxygen {
                device          /dev/drbd1;
                disk            /dev/md0p1;
                address         10.3.1.4:7789;
                meta-disk       internal;
        }
        on oxygen2 {
                device          /dev/drbd1;
                disk            /dev/sdb1;
                address         10.3.1.5:7789;
                meta-disk       internal;
        }
}


Желательно почистить заголовки дисков:
dd if=/dev/zero of=/dev/md0p1 bs=1M count=20
Прописываем хосты:
vim /etc/hosts
10.3.1.4 oxygen
10.3.1.5 oxygen2
Проверяем включен ли модуль ядра drbd. если нет то подключаем.
lsmod | grep drbd
modprobe drbd
Первая инициализация:
drbd create-md r0 # r0 название нашего ресурса
drbd up r0
Смортим статус нашего диска:
watch cat /proc/drbd
Должен показать что то типа:
0: cs:WFConnection ro:Secondary/Unknown
Это значит что второй диск еще не подключен. Идем на вторую ноду и повторяем все действия. Настройки drbd должны быть одинаковыми, так что лучше закинуть r0.res через scp. Только на основном ноде выолняем:
drbdadm -- --overwrite-data-of-peer primary netdisk
После выполнения этой команды начинается полная синхронизация дисков. теперь на обоих нодах выполняем:
drbdadm primary r0
watch "cat /proc/drbd"
1: cs:SyncSource ro:Primary/Primary ds:UpToDate/Inconsistent C r-----
ns:71352888 nr:0 dw:0 dr:76727332 al:0 bm:4676 lo:0 pe:281 ua:122 ap:0 ep:1 wo:f oos:133021916
[======>.............] synced: 35.0% (129904/199564)Mfinish: 0:59:06 speed: 37,484 (38,064) K/sec
При возникновении проблем с синхронизацией: на основной ноде:
drbdadm connect r0 
на второй ноде:
drbdadm -- --discard-my-data connect all