2007/08/21

OCFS - Oracle cluster file system

OCFS - кластерная файловая система, разработанная Oracle, с учетом кластеризации баз данных. Проста в установке и использовании - всё, что необходимо - модули для используемого ядра и набор утилит для работы с файловой системой.
Для установки в среде CentOS5 можно использовать бинарники, предназначенные для RHEL5:
ocfs2 modules - http://oss.oracle.com/projects/ocfs2/files/
ocfs2-tools - http://oss.oracle.com/projects/ocfs2-tools/files/
В Debian-репозитарии также имеется пакет ocfs2-tools с данными утилитами. А вот ядро, наверняка, придется пересобрать с включенными ocfs-модулями.

Лог действий достаточно прозрачен:
# wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL5/x86_64/1.2.6-1/2.6.18-8.1.8.el5/ocfs2-2.6.18-8.1.8.el5-1.2.6-1.el5.x86_64.rpm
# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.2.6-1/ocfs2-tools-1.2.6-1.el5.x86_64.rpm
# rpm -Uvh ocfs2-2.6.18-8.1.8.el5-1.2.6-1.el5.x86_64.rpm ocfs2-tools-1.2.6-1.el5.x86_64.rpm


Теперь все необходимые модули должны появиться в каталоге /lib/modules/KERNEL_VERSION/kernel/fs/ocfs2. Осталось только подготовить конфигурационный файл для сервиса блокировок o2cb:

# mkdir /etc/ocfs2
# vi /etc/ocfs2/cluster.conf
cluster:
node_count = 2

name = fc

node:

ip_port = 7777

ip_address = 192.168.2.15

number = 1

name = centos1

cluster = fc

node:

ip_port = 7777

ip_address = 192.168.2.16
number = 22
name = centos2
cluster = fc


На данном этапе необходимо скопировать данный файл на все ноды и запустить сервис o2cb:
# /etc/init.d/o2cb start

Теперь можно форматировать доступное блочное устройство /dev/sdb в формат ocfs и монтировать ее для дальнейшей работы:
# mkfs.ocfs2 -b 4K -C 128K -N 2 -L ocfs1 /dev/sdb
# mount -t ocfs2 /dev/sdb /mnt


Ссылки:
  1. OCFS2 - FAQ
  2. Xen with DRBD, GNBD and OCFS2 HOWTO
  3. Install & Configure OCFS2 for Oracle RAC

Собираем кластер. Часть 2: Storage

Для функционирования кластерной системы, необходимо наличие единой дисковой подсистемы, доступной для всех серверов (node), работающих внутри кластера.

С дисковой подсистемой (storage) можно общаться на уровне:
- сервиса (примеры - NFS-директория, примонтированная на всех нодах, DNBD)
- блочного устройства, доступного всем нодам (SAN)
Самым простым решением является использование сетевой файловой системы - NFS. В данном случае все проблемы по обслуживанию блокировок при совместной работе с данными NFS-служба берет на себя. Статья [1] прекрасно описывает пример создания storage на основе NFS. Я попробовал на Debian 4.0 - все отлично работает. Но присутствие уровня сервиса накладывает некоторый отрицательный отпечаток на производительность.
Более низкий уровень общения с дисковой системой - уровень обычного блочного устройства (block device). В этом случае Вы имете в системе дополнительный диск (/dev/sdb, /dev/hdb), с которым работаете как с обычным жестким диском, но есть несколько "но":
  • если данный диск доступен нескольким нодам в режиме записи (RW), Вы должны обеспечить на нем функционирование кластерной файловой системы, которая позволит работать одновременно с одними и теми же данными с разных нодов.
  • Вам придется раскошелиться на приобретение SAN (на основе Fibre Channel или более дешевого - iSCSI. Точных цен я не знаю, но это недешевая покупка :)
Перед написанием этих строк я попробовал две кластерные файловые системы - GFS и OCFS2. Если сравнивать "на глаз" производительность, то можно сказать, что обе файловые системы работают более менее одинакого быстро. Но GFS по сравнению с OCFS на первых порах более сложен в запуске, так как требует установки и настройки Red Hat Cluster Suite. Данный Suite включает в себя все необходимые "примочки" для работы кластера, начиная от heartbeat'а, поддержки множества сетевых служб, заканчивая фенсингом кластерной файловой системы (fencing). Информации по GFS доступно достаточно, чего не скажешь об OCFS. Обе данные кластерные файловые системы опробованы на CentOS 5, все работает стабильно без каких-либо оговорок, лог действий скоро выложу.


Ссылки:
  1. Setting Up A Highly Available NFS Server
  2. Distributed filesystem for Debian clusters? (discussion)
  3. DRBD/NFS: Linux HA
  4. Обзор сетевых и кластерных ФС: Lustre, GFS, AFS, GFarm