третьей статье данной серии.
Прочтите данный раздел статьи параллельно с документацией по GPFS (см. раздел «Ресурсы«), в частности, следующие материалы:
- Справочник по администрированию и программированию GPFS V2.3, содержащий подробную информацию о многих административных задачах и GPFS-командах.
- Руководство по концепциям, планированию и установке GPFS V2.3, содержащее подробное обсуждение планирования GPFS-кластера и действий при установке нового кластера.
- Руководство по разрешению проблем GPFS V2., содержащее описание действий при устранении проблем и список сообщений об ошибках GPFS.
Распределение уровня переносимости GPFS«).
Это корректный метод, поскольку все компьютеры имеют одинаковую
архитектуру и используют одно и то же ядро. Инструкции по компоновке
GPFS PL можно найти в файле /usr/lpp/mmfs/src/README
. Для нашего примера кластера процедура состоит из следующих действий:
- Выполните экспорт
SHARKCLONEROOT=/usr/lpp/mmfs/src
. - Выполните команды
cd /usr/lpp/mmfs/src/config, cp site.mcr.proto
.
site.mcr - Измените
новый файл site.mcr так, чтобы он соответствовал используемой
конфигурации. Оставьте следующие строки не закомментированными:-
#define GPFS_LINUX
-
#define GPFS_ARCH_X86_64
-
LINUX_DISTRIBUTION = REDHAT_AS_LINUX
-
#define LINUX_DISTRIBUTION_LEVEL 34
-
#define LINUX_KERNEL_VERSION 2042127
Обратите внимание на то, что символ
#
не обозначает комментарий. -
- Выполните команду
cd /usr/lpp/mmfs/src
. - Создайте GPFS PL, используя команду
make World
. - Скопируйте GPFS PL в каталог
/usr/lpp/mmfs/bin
, используя командуmake InstallImages
. GPFS PL состоит из следующих четырех файлов:-
tracedev
-
mmfslinux
-
lxtrace
-
dumpconv
-
- Скопируйте набор этих файлов, по одному на каждое используемое ядро, в CSM-структуру для распределения при помощи CFM.
В
данном примере GPFS-кластер создается при помощи нескольких отдельных
действий. Хотя все они не являются необходимыми, это хороший метод
работы с различными типами узлов в кластере (узлами системы хранения
данных или другими).
Первый шаг — создание
кластера, содержащего только узлы системы хранения данных и узел
кворума: всего пять узлов. Используйте файлы дескрипторов узла при
создании кластера, которые содержат краткое имя хостов интерфейса
системы хранения данных всех включаемых узлов, за которым указывается
следующая информация:
- Manager
или client: Определяет, должен ли узел формировать часть пула, из
которого извлекаются менеджеры конфигурации и файловой системы. Пример
кластера в этом пуле содержит только узлы хранения данных. - Quorum
или nonquorum: Определяет, должен ли узел учитываться как узел кворума.
Узлами кворума в примере кластера являются узлы системы хранения данных
и узел разрешения конфликтовquor001
.
Для создания кластера используется следующая команда:
mmcrcluster -n stor.nodes -C gpfs1 -p stor001_s -s stor002_s -r /usr/bin/ssh -R |
- Флаг
-C
указывает имя кластера. -
-p
указывает узел сервера первичной конфигурации. -
-s
указывает узел сервера вторичной конфигурации. -
-r
указывает полный путь для удаленного командного процессора, используемого GPFS. -
-R
указывает программу удаленного копирования файлов, используемую GPFS.
Ниже приведен файл-дескриптор узла stor.nodes
, используемый в примере:
stor001_s:manager-quorum |
Используйте записи, аналогичные <nodename>_s:client-nonquorum
,
на более поздних шагах для всех остальных узлов, добавляемых в кластер,
таких как вычислительные узлы, пользовательские узлы и управляющие узлы.
Разрешение unmountOnDiskFail на узлах кворума
Следующим действием является разрешение параметра unmountOnDiskFail
на узле разрешения конфликтов с использованием команды mmchconfig unmountOnDiskFail-yes quor001_s
. Это предотвращает выдачу отчета о ложных дисковых ошибках менеджеру файловой системы.
Определение сетевых дисков с совместным доступом
Следующим действием является создание дисков, используемых GPFS, при помощи команды mmcrnsd –F disc#.desc
.
Выполнение этой команды создает глобальное имя для каждого диска, что
является необходимым шагом, поскольку диски могут иметь различные имена
/dev на каждом узле в GPFS-кластере. Выполните эту команду на всех
дисках, используемых для файловой системы GPFS. На данном этапе
определите первичный и вторичный NSD-серверы для каждого диска; они
используются для операций ввода/вывода (I/O) от имени NSD-клиентов, не
имеющих локального доступа к системе хранения данных SAN.
Флаг -F
используется для указания файла, содержащего дескрипторы диска для
дисков, определяемых как NSD. Для удобства обслуживания в примере
кластера выполните этот процесс один раз на LUN, представленных каждой
системой DS4500, и один раз на диске сервера разрешения конфликтов.
Каждый массив или LUN на каждой системе DS4500 имеет дескриптор в
используемых файлах. Ниже приведен пример строки из disk1.desc
:
sdc:stor001_s:stor002_s:dataAndMetadata:1:disk01_array01S |
Ниже перечислены поля данной строки по порядку:
- Имя локального диска на первичном NSD-сервере
- Первичный NSD-сервер
- Вторичный NSD-сервер
- Тип данных
- Аварийная группа
- Имя получающегося NSD
Используя описанные выше файлы, определите следующие три аварийные группы в конфигурации:
- Диски в первом контроллере DS4500, то есть
disk01
. - Диски во втором контроллере DS4500, то есть
disk02
. - Диск сервера разрешения конфликтов на узле кворума.
Следующий шаг — запуск GPFS-кластера путем выполнения следующих действий:
- Запустите
GPFS на всех NSD-серверах одновременно для предотвращения маркировки
NSD как находящихся в неактивном состоянии. Используйте следующую
команду:mmstartup -w
.
stor001_s,stor002_s,stor003_s,stor004_s - Запустите
GPFS на всех остальных узлах, не являющихся NSD-серверами (в том числе
на узле сервера разрешения конфликтов). Используйте следующую команду:mmstartup -w quor001_s,mgmt001_s,...
- Запустите GPFS на всех вычислительных узлах с управляющего узла. Используйте следующую команду:
dsh -N ComputeNodes /usr/lpp/mmfs/bin/mmstartup
. - Проверьте состояние всех узлов, просматривая файл
/var/adm/log/mmfs.log.latest
текущего менеджера файловой системы (обнаруживаемого при помощи командыmmlsmgr <filesystem>
) и выводимую информацию из следующей команды:
mmgetstate -w <nodenames>
.
dsh -N ComputeNodes /usr/lpp/mmfs/bin/mmgetstate
Этот метод может показаться чрезмерно предусмотрительным, но он выбран
в качестве масштабируемого метода, который будет работать для очень
большого кластера. Альтернативой указанному выше методу является
использование команды mmstartup –a
.
Это работает для кластеров меньшего размера, но может пройти немало
времени до возврата из команды для большого кластера, в котором узлы
могут быть недоступны по различным причинам, например, при проблемах в
сети.
Создание файловой системы GPFS
Для
примера создается одна большая файловая система GPFS с использованием
всех NSD, определенных для GPFS. Обратите внимание на то, что
использованная команда, в отличие от указанной выше команды mmcrnsd
,
принимала в качестве аргумента измененные файлы дескрипторов дисков.
Это требует объединения в один файл информации, выводимой на каждом
шаге при создании NSD.
Пример кластера использует следующие настройки:
- Все NSD (устанавливается при помощи
-F
). - Точка монтирования:
/gpfs
- Автоматическое монтирование: yes (устанавливается при помощи
-A
). - Размер блока: 256KB (устанавливается при помощи
-B
). - Репликация: две копии данных и метаданных (устанавливается при помощи
-m
,-M
,-r
,-R
). - Предположительное число узлов, монтирующих файловую систему 1200 (устанавливается при помощи
-n
). - Квоты разрешены (устанавливается при помощи
-Q
).
Вот полная команда:
mmcrfs /gpfs /dev/gpfs -F disk_all.desc -A yes -B 256K -m 2 -M 2 |
В первый раз после создания /gpfs
она монтируется вручную. Затем, с разрешенным параметром automount, она монтируется автоматически при запуске узлом GPFS.
Флаг -Q
в приведенной выше команде mmcrfs
разрешает использование квот (quotas) в файловой системе /gpfs
.
Квоты могут быть определены для отдельных пользователей или групп
пользователей. Устанавливается также уровень квот по умолчанию, который
применяется к каждому новому пользователю или группе. Квоты по
умолчанию включаются при помощи команды mmdefquotaon
. Изменяются квоты по умолчанию при помощи команды mmdefedquota
. Эта команда открывает окно редактора, в котором можно указать их границы. Ниже приведен пример установки границ для квот:
gpfs: blocks in use: 0K, limits (soft = 1048576K, hard = 2097152K) |
Можно изменить отдельные квоты для пользователя или группы, используя команду mmedquota –u <username>
. Пользователь может отобразить свою квоту при помощи команды mmlsquota
. Пользователь superuser
может отобразить состояние квот файловой системы при помощи команды mmrepquota gpfs
.
Данный
кластер настроен так, чтобы GPFS запускался автоматически при каждой
начальной загрузке сервера, путем добавления записи в /etc/inittab
при помощи команды mmchconfig autoload=yes
.
Используйте pagepool
(пул страницы) GPFS для кэширования данных пользователя и метаданных файловой системы. Механизм pagepool
позволяет GPFS реализовать запросы на чтение (а также запись) асинхронно. Увеличение размера pagepool
увеличивает объем данных или метаданных, которые GPFS может кэшировать,
не требуя синхронных операций ввода/вывода. Значением по умолчанию для pagepool
является 64 MB. Максимальное значение GPFS pagepool
равно 8 GB. Минимальное разрешенное значение равно 4 MB. На Linux-системах максимальный размер pagepool
равен половине физической памяти компьютера.
Оптимальный размер pagepool
зависит от требований приложения и эффективного кэширования его данных,
к которым производится повторный доступ. Для систем с приложениями,
обращающимися к большим файлам, повторно использующим данные,
использующим преимущества функциональности GPFS предвыборки
(prefetching) данных или работающим по схеме случайных операций
ввода/вывода, увеличение значения pagepool
может повысить эффективность. Однако, если значение слишком велико, GPFS не запустится.
Для нашего примера кластера используйте значение pagepool
512 MB для всех узлов в кластере.
Оптимизация при помощи сетевых настроек
Для
оптимизации производительности сети и, следовательно, GPFS, разрешите
jumbo-фреймы путем установки размера MTU для адаптера сети хранения
данных в 9000. Оставьте параметр /proc/sys/net/ipv4/tcp_window_scaling
разрешенным, поскольку это настройка по умолчанию. Настройки TCP-окна
подгоняются при помощи CSM-сценариев во время установок, добавляющих
следующие строки в файл /etc/sysctl.conf
как на NSD-серверах, так и на NSD-клиентах:
# увеличить границы TCP-буфера Linux |
Настройки
кэша сервера хранения данных при неправильной их установке могут
повлиять на производительность GPFS. Пример использует следующие
настройки контроллеров DS4500, рекомендованные в документации по GPFS:
- Read cache: enabled
- Read ahead multiplier: 0
- Write cache: disabled
- Write cache mirroring: disabled
- Cache block size: 16K
|
Все!
Вы должны были успешно установить большой Linux-кластер, следуя примеру
из данной серии статей. Примените эти принципы для успешной установки
вашего собственного большого Linux-кластера.
Грэхем Уайт (Graham White) |