Перейти к содержимому

16.08.2013

Настройка shared-storage раздела с OCFS2 файловой системой на RHEL/OEL/CentOS

Довльно-таки часто приходится ставить и настраивать оракловые кластеры из нескольких нод с использованием внешних хранилищ. И конечно же, для заливки дампов нужны расшаренные папки, то есть папка в БД создается на уровне кластера, а значит она должна быть доступна со всех нод кластера. В таких случаях идеальным решением является использование кластерных файловых систем, и конечно же, одним из самых подходящих вариантов является использование кластерной файловой системы от Oracle — OCFS2.

Небольшая инструкция, как просто поднять ocfs2 под CentOS/RHEL/OEL на расшаренном дисковом массиве. Под расшаренным я понимаю то, что массив подключен одновременно ко всем нодам, и lun доступен как блочное устройство на всех нодах.

Первым делом смотрим на версию нашего ядра. Это важно, потому как ocfs2 работает как модуль ядра и важно скачать модули именно той версии, что и ваше ядро.

И качаем соответствующие пакеты с oss.oracle.com/projects/ocfs2/. Так же надо скачать утилиты для работы с ocfs2. Качаем их тут: oss.oracle.com/projects/ocfs2-tools/.

Далее устанавливаем все скачанные пакеты. В новых версиях ocfs2console уже не актуальна и она даже не поставится. Но это не страшно. Это всего лишь GUI-консоль, которая и делать-то ничего кроме первоначальной правки конфига не умеет.

В случае, если вы используете OEL, то скорее всего у вас эти пакеты уже стоят. Только обратите внимание, если вы меняли дефолтное ядро, то версии ocfs2-пакетов не будут соответствовать вашему новому ядру.

Следующий шаг — конфигурация O2CB cluster stack’а.

Настройки стека хранятся в /etc/ocfs2/cluster.conf. Если хочется, можно сконфигурить стек через GUI-утилитку ocfs2console, а затем скопировать конфиг на все ноды. Правда эта утилитка уже стала obsolete после версии 1.6. Но в любом случае, здесь есть одна тонкость — названия нод должны совпадать с именами хостов. Это важно. Так же рекомендуется использовать интерконнект-сеть вместо публичной сети. Подробнее про формат и параметры конфига можно прочитать в документации. После создания конфиг-файла, надо скопировать его на все ноды кластера.

Вот как выглядит мой cluster.conf:

Теперь надо сконфигурить o2cb сервис. И снова это нужно проделать на каждой ноде.

Текущий статус кластера можно проверить так:

Теперь пришло время подготовить файловую систему.

Первым делом отформатируем наш раздел. Тут тоже есть один тонкий момент. Заключается он в том, что в свежих версиях ocfs2 некоторые возможности включены по умолчанию, а поддержка этих самых возможностей есть только в свежих ядрах. Например, опция sparse включена по умолчанию в ocfs2-tools начиная с версии 1.3.9, но для работы этой опции необходимо ядро, начиная с 2.6.22. У меня же стоит ванильное ядро от RedHat 2.6.18. Для таких случаев, при форматировании раздела можно указать опцию —fs-feature-level=max-compat которая включит по умолчанию только те опции, которые поддерживаются текущим ядром. Или же можете сами указать какие конкретные опции вы хотите использовать.
В начале я конечно же отформатировал без этой опции и получил вот такую ошибку при монтировании:

Если же включить эту опцию, то все будет хорошо.

Далее смонтируем наш раздел. А чтобы он монтировался автоматом при старте системы, пропишем его в fstab. Здесь следует обратить внимание на флаг _netdev, потому как для корректной работы кластерной фс необходима сетевая подсистема.

Вот и все. Теперь можете попробовать создать файлик/папку на одной ноде и не успеете вы переключиться на другую, как она будет уже доступна там 😉

Узнайте больше из Администрирование