Кластеры
Введение
Кластер — это логическое объединение хостов, разделяющих один и тот же домен хранилища и имеющих один и тот же тип ЦП (Intel® или AMD). Если на хостах присутствуют разные поколения моделей ЦП, то в работе используются только возможности, общие для всех моделей.
Каждый кластер в системе должен принадлежать дата-центру, а каждый хост в системе должен принадлежать кластеру. Виртуальные машины динамически выделяются каждому хосту в кластере и могут мигрировать между ними, согласно политикам, определённым в кластере, и параметрам ВМ. "Кластер" — это самый высокий из возможных уровней, на которых должны быть настроены политики энергосбережения и распределения нагрузки.
Число хостов и число ВМ, принадлежащих кластеру, отображаются соответственно в списках "Счётчик хостов" и "Количество ВМ".
На кластерах выполняются виртуальные машины или серверы хранилищ Gluster. Эти два назначения являются взаимоисключающими: один кластер не может поддерживать и виртуализацию, и хосты хранилищ.
В процессе установки система виртуализации ROSA Virtualization создаёт кластер по умолчанию в дата-центре по умолчанию.

Рисунок 86 ‒ Кластер в Центре обработки данных
Задачи при работе с кластерами
Примечание — Некоторые параметры кластера не применимы к кластерам Gluster.
Создание нового кластера
В дата-центре может присутствовать несколько кластеров, а кластер может содержать несколько хостов. Все хосты в кластере должны иметь один и тот же тип ЦП (Intel® или AMD). Для обеспечения оптимизации типа ЦП рекомендуется создавать хосты до того, как будет создаваться кластер. Тем не менее хосты можно настроить и позже, с помощью кнопки Пошаговый помощник.
Для создания нового кластера:
- Нажмите "Ресурсы → Кластеры" для открытия формы управления кластерами (рисунок 87).

Рисунок 87 ‒ Список доступных кластеров, форма управления кластерами
- Нажмите Добавить.
- В выпадающем списке выберите "Дата-центр", к которому будет принадлежать кластер (рисунок 88).

Рисунок 88 ‒ Выбор дата-центра для кластера
- Укажите "Имя" и "Описание кластера".
- В выпадающем списке "Сеть управления" выберите сеть, которой нужно присвоить роль сети управления.
- В выпадающих списках выберите "Архитектуру ЦП" и "Тип ЦП" (рисунки 89-90).

Рисунок 89 ‒ Выбор архитектуры ЦП для кластера
Важно, чтобы семейство процессора совпадало с минимальным типом процессора хостов, к которым предполагается присоединить кластер, в противном случае хост будет нерабочим.
Примечание — Как для типа Intel®, так и для типа AMD, указанные в списке модели идут в логическом порядке от самых старых к самым новым. Если в кластер включены хосты с разными моделями ЦП, выбирайте в списке самую старую модель.

Рисунок 90 ‒ Выбор типа ЦП для кластера
- В выпадающем списке выберите "Тип чипсета/микропрограммы" кластера (рисунок 91).

Рисунок 91 ‒ Выбор тип чипсета/микропрограммы кластера.
- В выпадающем списке выберите "Версию совместимости кластера".
- В выпадающем списке выберите "Тип коммутатора" (рисунок 92).

Рисунок 92 ‒ Выбор типа коммутатора кластера
- Для хостов в кластере выберите "Тип брандмауэра" — iptables или firewalld (рисунок 93).

Рисунок 93 ‒ Выбор типа брандмауэра кластера
Примечание — iptables является устаревшим типом межсетевого экрана.
- Установите переключатель в положение "Включить службу Virt" или "Включить службу Gluster", чтобы определить назначение кластера (соответственно кластер будет содержать или виртуальные машины, или узлы с поддержкой Gluster).
- При необходимости установите флажок "Источник /dev/hwrng" (внешнее аппаратное устройство), чтобы указать устройство для создания случайных чисел, которое будут использовать все хосты в кластере. Источник /dev/urandom (устройство Linux) отмечен по умолчанию.
- Перейдите на вкладку "Оптимизация" для выбора порога разделяемых страниц памяти в кластере, а также при необходимости включите обработку потоков ЦП и вытеснение памяти на хостах в кластере (рисунок 94).

Рисунок 94 ‒ Вкладка "Оптимизация" для настройки параметров оптимизации кластера
- Перейдите на вкладку "Политика миграции" для настройки политики миграции ВМ в кластере (рисунок 95).

Рисунок 95 ‒ Вкладка Политика миграции для настройки политики миграции ВМ в кластере.
- Перейдите на вкладку "Политика планирования", чтобы при необходимости настроить политику планирования, указать параметры оптимизации планировщика, включить доверенную службу для хостов в кластере, включить резервирование высокой доступности и добавить частную политику порядковых номеров (рисунок 96).

Рисунок 96 ‒ Вкладку Политика планирования для настройки политики планирования кластера
- Перейдите на вкладку "Консоль", чтобы при необходимости, переопределить глобальные параметры прокси SPICE для хостов в кластере (рисунок 97).

Рисунок 97 ‒ Вкладка Консоль для настройки глобальных параметров прокси SPICE для хостов в кластере
- Перейдите на вкладку "Политика операций блокады", чтобы включить или отключить возможность проведения операций блокады в кластере и выбрать параметры блокады (рисунок 98).

Рисунок 98 ‒ Вкладка Политика операций блокады
- Нажмите "Пул MAC адресов", чтобы указать пул, отличный от пула MAC-адресов по умолчанию (рисунок 99). Подробности о создании, редактировании или удалении пулов MAC-адресов см. в п. Пулы MAC-адресов.

Рисунок 99 ‒ Вкладка Пул MAC адресов
- Нажмите OK, чтобы создать кластер и запустить окно "Кластер — пошаговый помощник" (рисунок 100).

Рисунок 100 ‒ Окно "Кластер" — пошаговый помощник
- В окне "Пошаговый помощник" указан список объектов, для которых необходимо настроить взаимодействие с кластером. Настройте эти объекты или отложите настройку, нажав на кнопку Настроить позже. Процесс настройки можно возобновить позднее, для чего выберите необходимый кластер, затем нажмите на пиктограмму "Больше действий" , после чего выберите "Пошаговый помощник" -
.
Общие параметры кластера
В таблице 33 описываются параметры вкладки "Общее" в окнах "Новый кластер" и "Параметры кластера".
Примечание — При нажатии OK недействительные элементы обводятся оранжевым, запрещая применение изменений. Кроме того, в полях ввода указываются ожидаемые значения или диапазон значений.
Параметры оптимизации
Критерии для памяти
Разделение страниц памяти даёт возможность ВМ использовать до 200% выделенной им памяти, используя свободную память других ВМ. Этот процесс базируется на предположении, что ВМ в окружении системы виртуализации ROSA Virtualization не будут работать на полную мощность все одновременно, что даёт возможность временно выделять неиспользуемую память какой-то одной из ВМ.
Критерии для ЦП
Для рабочей нагрузки без серьёзного потребления ресурсов ЦП виртуальные машины могут работать, имея общее число ядер процессора, превышающее число ядер на хосте. Таким образом активируются следующие возможности:
- Можно запускать большее число ВМ, что снижает требования к аппаратным составляющим.
- Можно настраивать ВМ с топологией ЦП, которая иначе не была бы возможной (например, когда значение количества виртуальных ядер находится между числом ядер хоста и числом потоков хоста).
Для лучшей производительности и особенно для рабочей нагрузки с серьёзным потреблением ресурсов ЦП необходимо использовать для ВМ ту же топологию, что и на хосте, чтобы и ВМ, и хост рассчитывали на одинаковое использование кеша. При включённой на хосте гиперпоточности QEMU обрабатывает гиперпотоки хоста как ядра, таким образом ВМ выполняется на одном ядре с несколькими потоками. Такое поведение может повлиять на производительность ВМ, поскольку виртуальное ядро, на самом деле соответствующее гиперпотоку ядра хоста, может разделять один и тот же кеш с другим гиперпотоком на том же ядре хоста, в то время как ВМ считает его отдельным ядром.
В таблице 34 описываются параметры вкладки "Оптимизация" в окнах "Новый кластер" и "Параметры кластера".
Политики миграции
В таблице 35 описываются политики миграции, которые определяют условия для динамической миграции ВМ в случае сбоев работы хоста. Эти условия включают в себя простой ВМ во время миграции, пропускную способность сети и то, каким образом выставляются приоритеты виртуальных машин.
В таблице 36 описываются параметры пропускной способности, которые определяют максимальную пропускную способность как входящих, так и исходящих миграций на каждый отдельный хост.
В таблице 37 описываются параметры политики устойчивости, которые определяют приоритеты ВМ во время миграции.
В таблице 38 описываются дополнительные параметры, которые применяются к ВМ во время миграции.
Политики планирования
Политики планирования дают возможность указать использование и распределение виртуальных машин между доступными хостами. Настройте политику планирования, чтобы включить автоматическую балансировку нагрузки для всех хостов в кластере. Вне зависимости от политики планирования, ВМ не начнёт работу на хосте с перегруженным ЦП. По умолчанию ЦП хоста считается перегруженным, если в течение более 5 минут нагрузка на ЦП превышает 80%, но эти значения можно изменить с помощью политик планирования (см. п. Политики планирования).
В таблице 39 описываются параметры вкладки "Политики планирования".
Если объём свободной памяти хоста падает меньше значения 20%, то такие команды вытеснения памяти как "mom.Controllers.Balloon — INFO Ballooning guest:half1 from 1096400 to 1991580" записываются в файл журнала диспетчера MoM /var/log/vdsm/mom.log.
Параметры консоли кластера
В таблице 40 описываются параметры вкладки "Консоль" в окнах "Новый кластер" и "Параметры кластера".
Параметры политики операций блокады
В таблице 41 описываются параметры вкладки "Политика операций блокады" в окнах "Новый кластер" и "Параметры кластера".
Настройка политик управления нагрузкой и энергосбережения на хосте
Политики планирования evenly_distributed (равномерное распределение) и power_saving (энергосбережение) дают возможность указать приемлемые значения потребления ресурсов памяти и ЦП, а также порог значений, после превышения которого виртуальные машины должны мигрировать с хоста или на хост. Политика планирования vm_evenly_distributed (равномерное распределение ВМ) равномерно распределяет ВМ между хостами, руководствуясь количеством машин. Для включения автоматической балансировки нагрузки хостов в кластере настройте политику планирования (см. п. Политики планирования).
Для настройки политик управления нагрузкой и энергосбережения на хосте:
- Нажмите "Ресурсы → Кластеры" и выберите кластер.
- Нажмите Изменить.
- Перейдите на вкладку "Политика планирования" (рисунок 101).

Рисунок 101 ‒ Политика планирования
- Выберите одну из следующих политик:
- vm_evenly_distributed:
- В поле "HighVmCount" укажите минимальное число ВМ, выполняющихся на одном хосте и необходимых для включения балансировки нагрузки.
- В поле "MigrationThreshold" укажите максимальную приемлемую разницу между числом ВМ на самом загруженном хосте и числом ВМ на самом незагруженном хосте.
- В поле "SpmVmGrace" укажите число слотов для ВМ, которое должно быть зарезервировано на хостах SPM.
- При необходимости в поле "HeSparesCount" укажите число дополнительных узлов виртуализированного ЦУ, на которых нужно зарезервировать объём свободной памяти, достаточный для запуска ВМ виртуализированного ЦУ в случае миграции этой ВМ или выключения.
- evenly_distributed:
- В поле "CpuOverCommitDurationMinutes" укажите время (в минутах), в течение которого нагрузка на ЦП хоста может превышать настроенные значения нагрузки перед тем, как будет применена политика планирования.
- В поле "HighUtilization" укажите процентное значение нагрузки на ЦП, при котором ВМ будут начинать миграцию на другие хосты.
- В поле "MinFreeMemoryForUnderUtilized" укажите минимальный объём свободной памяти в МБ, при превышении которого ВМ начнут мигрировать на другие хосты.
- В поле "MaxFreeMemoryForOverUtilized" укажите максимальный требуемый объём свободной памяти, при значении меньше которого ВМ начнут миграцию на другие хосты.
- При необходимости в поле "HeSparesCount" укажите число дополнительных узлов виртуализированного ЦУ, на которых нужно зарезервировать объём свободной памяти, достаточный для запуска ВМ виртуализированного ЦУ в случае миграции этой ВМ или выключения.
- power_saving:
- В поле "CpuOverCommitDurationMinutes" укажите время (в минутах), в течение которого нагрузка на ЦП хоста может превышать настроенные значения нагрузки перед тем, как будет применена политика планирования.
- В поле "LowUtilization" укажите процент загруженности ЦП, при значении меньше которого хост будет считаться недозагруженным.
- В поле "HighUtilization" укажите процентное значение нагрузки на ЦП, при достижении которого ВМ начнут миграцию на другие хосты.
- В поле "MinFreeMemoryForUnderUtilized" укажите минимальный объём свободной памяти в МБ, при превышении которого ВМ начнут миграцию на другие хосты.
- В поле "MaxFreeMemoryForOverUtilized" укажите максимальный требуемый объём свободной памяти, при значении меньше которого ВМ начнут миграцию на другие хосты.
- При необходимости в поле "HeSparesCount" укажите число дополнительных узлов виртуализированного ЦУ, на которых нужно зарезервировать объём свободной памяти, достаточный для запуска ВМ виртуализированного ЦУ в случае миграции этой ВМ или выключения.
- Выберите одно из следующих значений "Оптимизации планировщика" кластера:
- Оптимизировать на использование — включение в планирование весовых модулей для лучшего выбора.
- Оптимизировать на скорость — пропуск измерения веса хоста в тех случаях, когда в очереди находится более 10 запросов.
- Если для верификации хостов используется сервер OpenAttestation, и его конфигурация была настроена с помощью утилиты engine-config, то установите флажок "Включить доверенную службу".
- При необходимости установите флажок "Включить высокодоступное резервирование", чтобы виртуализированный ЦУ мог обеспечивать доступность ресурсов в кластере для отказоустойчивых ВМ.
- При необходимости выберите одно из следующих значений "Политики серийных номеров" для ВМ в кластере:
- ID хоста — в качестве серийного номера ВМ указывается UUID хоста.
- ID машины — в качестве серийного номера ВМ указывается UUID ВМ.
- Настраиваемый пользователем серийный номер — при выборе этого значения дополнительно укажите произвольный порядковый номер (в качестве серийного номера ВМ) в текстовом поле интерфейса.
- Нажмите OK.
Обновление информации о политике MoM на хостах в кластере
Диспетчер превышенного выделения памяти MoM хоста отвечает за обработку возможностей вытеснения памяти и объединения одинаковых страниц памяти ядром (KSM).
Изменения параметров этих функций на уровне кластера передаются хостам только после того, как хост вновь получит статус "Запущен" после перезагрузки или после снятия режима обслуживания. Тем не менее при необходимости, применить важные изменения можно немедленно, выполнив синхронизацию политики превышенного выделения памяти для хостов, ещё имеющих статус "Запущен".
Следующая последовательность действий для синхронизации политики превышенного выделения памяти на хосте должна выполняться на каждом из хостов индивидуально:
- Нажмите "Ресурсы → Кластеры".
- Нажмите на название кластера, чтобы открыть подробный просмотр.
- Перейдите на вкладку "Хосты" и выберите хост, для которого нужно обновить политику MoM.
- Нажмите Синхронизировать политику MoM.
Информация о политике MoM на хосте будет обновлена без необходимости перемещения хоста в режим обслуживания и после этого обратно в состояние "Запущен".
Создание профиля ЦП
Профили ЦП определяют максимальный объём вычислительных возможностей хоста, к которым может получить доступ выполняемая на этом хосте ВМ в составе кластера. Максимальный объём выражается в процентном соотношении к общей вычислительной мощности, доступной для этого хоста. Профили ЦП создаются на базе профилей ЦП, настроенных в дата-центрах, и не применяются автоматически ко всем ВМ в кластере. Для того чтобы профили вступили в силу, их необходимо вручную присваивать виртуальным машинам индивидуально.
В следующей последовательности действий подразумевается, что на дата-центре, которому принадлежит кластер, ранее были настроены одна или более записей о качестве обслуживания для ЦП.
Для создания профиля ЦП:
- Нажмите "Ресурсы → Кластеры".
- Нажмите на название кластера, чтобы открыть подробный просмотр.
- Перейдите на вкладку "Профили ЦП".
- Нажмите Добавить.
- Укажите "Имя" и "Описание" профиля ЦП.
- Из списка QoS выберите запись о качестве обслуживания, которую необходимо применить к профилю ЦП.
- Нажмите OK.
Удаление профиля ЦП
Для удаления профиля ЦП:
- Нажмите "Ресурсы → Кластеры".
- Нажмите на название кластера, чтобы открыть подробный просмотр.
- Перейдите на вкладку "Профили ЦП" и выберите удаляемый профиль ЦП.
- Нажмите Удалить.
- Нажмите OK.
Если этот удаленный профиль был ранее присвоен каким-либо ВМ, то этим ВМ автоматически будет присвоен профиль ЦП по умолчанию.
Импортирование существующего кластера хранилища Gluster
В виртуализированный ЦУ можно импортировать кластер хранилища Gluster и все принадлежащие ему хосты.
При указании таких параметров любого хоста в кластере, как IP-адрес или имя и пароль хоста, на этом хосте с помощью протокола SSH выполняется команда gluster peer status, а затем выводится список хостов, принадлежащих кластеру. Необходимо вручную заверить отпечаток для каждого хоста и указать пароль хоста.
Если один из хостов в кластере не запущен или недоступен, то выполнить импортирование кластера будет невозможно.
Для импортирования существующего хранилища Gluster в виртуализированный ЦУ
- Нажмите "Ресурсы → Кластеры".
- Нажмите Добавить.
- Выберите "Дата-центр", к которому будет принадлежать кластер.
- Укажите "Имя" и "Описание" кластера.
- Установите флажки "Включить службу Gluster" и "Импорт существующей конфигурации Gluster" (при этом поле "Импорт существующей конфигурации Gluster" будет показано только при ранее выбранном параметре "Включить службу Gluster").
- В поле "Имя" хоста укажите имя хоста или IP-адрес любого сервера в кластере. Будет показан "Отпечаток" SSH для подтверждения того, что выполняется подключение к нужному хосту. Если хост недоступен или появилась ошибка сети, то в поле "Отпечаток" будет выведена "Ошибка получения отпечатка".
- Укажите "Пароль" (пароль сервера) и нажмите OK.
- Будет показано окно "Добавить хосты" и список хостов в составе кластера.
- Для каждого хоста укажите "Имя" и "Пароль" root.
- В случае использования одного и того же пароля для всех хостов установите флажок "Использовать общий пароль" и укажите этот пароль в текстовом поле.
- Нажмите Применить, чтобы установить введённый пароль для всех хостов.
- Проверьте подлинность всех отпечатков и нажмите OK для применения изменений.
После импорта хостов сценарий самозагрузки установит на хостах необходимые пакеты VDSM и автоматически перезагрузит хосты.
Параметры хранилища Gluster в окне "Добавить хосты"
В окне "Добавить хосты" можно указать подробные сведения о хостах, импортируемых в составе кластера хранилища Gluster. Это окно появляется после того, как в окне "Новый кластер" был установлен флажок "Включить службу Gluster№ и указаны все необходимые сведения о хосте.
В таблице 42 описываются параметры хранилища Gluster в окне "Добавить хосты".
Удаление кластеров
Перед удалением кластера переместите из него все хосты.
Примечание — Удалить кластер по умолчанию нельзя, поскольку в нём хранится пустой шаблон. Тем не менее кластер по умолчанию можно переименовать и добавить его в новый дата-центр.
Для удаления кластера:
- Нажмите "Ресурсы → Кластеры" и выберите кластер.
- Убедитесь в том, что в кластере нет хостов.
- Нажмите Удалить.
- Нажмите OK.
Оптимизация памяти
Для увеличения числа виртуальных машин на хосте можно использовать превышенное выделение памяти, при котором объём памяти, выделяемый машине, превышает доступный объём ОЗУ за счет использования файла (раздела) подкачки.
Тем не менее существует ряд следующих потенциальных проблем, связанных с превышенным выделением памяти:
- Производительность подкачки — файл подкачки работает медленнее и потребляет больше ресурсов ЦП, чем ОЗУ, что влияет на производительность ВМ. Чрезмерное использование файла подкачки может привести к снижению производительности ЦП и ВМ.
- Уничтожитель перерасхода памяти (OOM) — если на хосте заканчивается место в файле подкачки и новые процессы не могут начать работу, то уничтожитель OOM (фоновая программа ядра) начинает выключать активные процессы, такие как гостевые ОС.
Таким образом для оптимизации памяти рекомендуется выполнить следующие действия:
- Ограничить превышенное выделение памяти с помощью параметра "Оптимизация памяти" и диспетчера превышенного выделения памяти* (MoM)*.
- Создать раздел подкачки, достаточно объёмный, для того чтобы потенциально обеспечить максимальный запрос на виртуальную память и одновременно не выходить за пределы безопасности.
- Уменьшить размер виртуальной памяти, включив вытеснение памяти (ballooning) и объединение одинаковых страниц памяти ядром (KSM).
Превышенное выделение памяти
Ограничить объём превышенного выделения памяти можно с помощью одного из процентных значений параметра "Оптимизация памяти": Нет (0%), 150% или 200%.
Например, для хоста с 64 ГБ ОЗУ выбор значения в 150% означает, что превысить выделение памяти можно на дополнительные 32 ГБ, получив всего 96 ГБ виртуальной памяти. Если хост использует 4 ГБ от этого общего объёма, то будут доступны оставшиеся 92 ГБ. Большую часть от этого объёма можно выделить виртуальной машине (секция "Размер памяти" на вкладке "Система"), но также рекомендуется оставить какой-то резерв в качестве запаса прочности.
Внезапные пиковые скачки запросов на виртуальную память могут повлиять на производительность до того, как механизмы MoM, вытеснения памяти и KSM успеют повторно оптимизировать виртуальную память. Для снижения этого влияния выберите лимит, соответствующий следующим типам выполняемых приложений и рабочих нагрузок:
- Для рабочих нагрузок, создающих наиболее значимый постепенный прирост запросов памяти, выберите более высокий процент, например 200% или 150%.
- Для критически важных приложений или рабочих нагрузок, создающих внезапные скачки запросов памяти, выберите более низкое процентное значение, например 150% или Нет. Выбор значения Нет помогает предотвратить превышенное выделение памяти, но одновременно даёт возможность MoM, устройствам вытеснения памяти и KSM продолжать работу по оптимизации виртуальной памяти.
Примечание — Перед оптимизацией памяти в рабочей среде всегда сначала проводите стресс-тестирование при самых разных условиях.
Чтобы настроить параметры оптимизации памяти перейдите на вкладку "Оптимизация" в окнах "Новый кластер" или "Параметры кластера" (см. п. Параметры оптимизации).
Дополнительные примечания:
- Фактический объём доступной памяти невозможно определить в реальном времени, поскольку объём оптимизации памяти, достигаемый KSM, и объём вытеснения памяти постоянно меняются.
- После достижения виртуальными машинами лимита виртуальной памяти невозможен запуск новых приложений.
- При планировании числа выполняемых на хосте ВМ в качестве точки отсчёта используйте максимальный объём виртуальной памяти (размер физической памяти и параметр "Оптимизация памяти"). Не используйте в расчётах более низкий объём памяти, достигаемый за счёт оптимизации с помощью вытеснения памяти и KSM.
Раздел подкачки
В таблице 43 приведены общие рекомендации по настройке раздела подкачки.
Примечание — Для систем с числом логических процессоров, превышающим 140, или с объёмом ОЗУ более 3 ТБ рекомендованный размер раздела подкачки составляет не менее 100 ГБ.
Дополнительные рекомендации по настройке раздела подкачки:
- Рабочие станции и ноутбуки могут использовать возможности гибернации, когда содержимое ОЗУ сохраняется в области подкачки. В таких случаях, чтобы иметь возможность выполнять гибернацию, размер области подкачки должен быть равен или больше объёма ОЗУ в физической системе.
- Хотя блочные устройства, на которых размещается подкачка, в целом гораздо медленнее ОЗУ, бывает удобно иметь подкачку в качестве дополнительного слоя памяти при необходимости. В случае приложений с высоким потреблением памяти подкачка даёт возможность выгрузить память на диск для отсрочки или предотвращения прерывания работы приложения программой-уничтожителем OOM.
- Приложение могло создаваться с учётом конкретного размера раздела подкачки. В таких случаях размер раздела подкачки должен соответствовать рекомендациям поставщика приложения.
- К виртуальным гостям применяются те же самые условия, что и к физическим системам. Кроме того, использование дополнительного небольшого объёма подкачки может повлиять на возрастающие число обращений к памяти этим процессом, что в итоге сначала приведёт к замедлению его работы (что позволяет администратору вручную исправить ситуацию), а затем к исчерпанию ресурсов подкачки и окончательному прерыванию работы процесса программой-уничтожителем OOM. Если объём памяти, в который пишет этот процесс, не превышает объём доступной подкачки, то система просто испытает временное замедление работы.
Применяя данные рекомендации, следуйте совету по установке размера раздела подкачки в качестве "последней возможности" для наихудшего возможного сценария. Используйте размер физической памяти и параметр "Оптимизация памяти" в качестве базы для расчёта общего объёма виртуальной памяти. Не включайте в эти расчёты сокращение памяти с помощью оптимизации диспетчером превышенного выделения памяти MoM, вытеснения памяти и объединения одинаковых страниц памяти ядром (KSM).
Примечание — Чтобы повысить шансы предотвращения состояния нехватки памяти, создавайте раздел подкачки достаточно большим из расчёта на наихудший возможный сценарий и учитывайте резерв для запаса прочности.
Диспетчер превышенного выделения памяти MoM
Диспетчер превышенного выделения памяти MoM выполняет следующие основные функции:
- Диспетчер MoM ограничивает превышенное выделение памяти путём применения установленного значения параметра "Оптимизация памяти" к хостам в кластере.
- Диспетчер MoM оптимизирует память, управляя процессами вытеснения памяти (ballooning) и объединения одинаковых страниц памяти ядром (KSM).
- Диспетчер MoM не нуждается во включении или отключении.
Если объём доступной свободной памяти хоста падает ниже 20%, то такие команды вытеснения памяти как "mom.Controllers.Balloon ‒ INFO Ballooning guest:half1 from 1096400 to 1991580" записываются в файл журнала диспетчера MoM /var/log/vdsm/mom.log.
Вытеснение памяти (ballooning)
Виртуальные машины начинают работу, располагая полным объёмом выделенной виртуальной памяти. По мере того как потребление виртуальной памяти превышает объём ОЗУ, хост всё более и более начинает использовать механизм подкачки. Активированная процедура вытеснения памяти заставляет ВМ отдать неиспользуемую часть памяти. Освобождённая память может быть повторно использована другими процессами и другими ВМ на хосте. По причине сокращения объёма используемой памяти сокращается и число обращений к разделу подкачки, а также улучшается производительность.
Пакет virtio-balloon, содержащий устройство вытеснения памяти и его драйверы, представляет собой модуль ядра (LKM). По умолчанию этот модуль настроен на автоматическую загрузку. Внесение модуля в чёрный список или его выгрузка отключают процедуру вытеснения памяти.
Устройства вытеснения памяти не координируются напрямую друг с другом, а зависят от диспетчера превышенного выделения памяти MoM, постоянно наблюдающего за потребностями каждой ВМ и при необходимости инструктирующего устройство вытеснения памяти для выполнения увеличения или уменьшения объёма виртуальной памяти.
Дополнительные примечания:
- Вытеснение памяти и превышенное выделение памяти не рекомендуется применять для рабочих нагрузок, требующих постоянной высокой производительности и низких значений задержки.
- Вытеснение памяти рекомендуется применять там, где увеличение численности ВМ (из соображений экономии) играет бòльшую роль, чем производительность.
- Вытеснение памяти не имеет значительного влияния на загруженность ЦП (KSM потребляет некоторые количество ресурсов ЦП, но в стрессовых условиях объём этого потребления не изменяется).
Чтобы включить механизм вытеснения памяти, перейдите на вкладку "Оптимизация" в окне "Новый кластер" или "Параметры кластера". Затем установите флажок "Включить оптимизацию памяти balloon". Этот параметр включает механизм вытеснения памяти на виртуальных машинах, выполняющихся на хостах в данном кластере, и диспетчер MoM начинает вытеснение памяти, где это возможно, при этом ограничением служит только размер гарантированной памяти каждой ВМ (см. п. Параметры оптимизации).
Каждый хост в данном кластере получает обновление политики вытеснения памяти при смене статуса этого хоста на "Запущен". При необходимости обновить информацию о политике вытеснения памяти на хосте можно без смены статуса (см. п. Обновление информации о политике MoM на хостах в кластере).
Объединение одинаковых страниц памяти ядром (KSM)
Во время своей работы виртуальная машина часто копирует страницы памяти для таких элементов, как общие библиотеки и часто используемые данные. Кроме того, виртуальные машины, на которых выполняются одинаковые гостевые ОС и приложения, создают дубликаты страниц памяти в виртуальной памяти.
Процесс объединения одинаковых страниц памяти ядром (KSM) проверяет виртуальную память на хосте, избавляется от дубликатов страниц памяти и разделяет оставшиеся страницы памяти между несколькими приложениями и виртуальными машинами. Эти общие страницы памяти помечаются как копирование при записи, и если ВМ требуется записать в эту страницу какие-то изменения, то ВМ сначала делает копию, а потом записывает изменения в эту копию.
Пока механизм KSM остаётся включённым, им управляет диспетчер превышенного выделения памяти MoM. Ручная настройка или управление KSM не требуется.
KSM улучшает производительность виртуальной памяти двумя способами. Поскольку разделяемая страница памяти используется более часто, то скорее всего хост именно её сохранит в кеше или главной памяти, что повышает скорость доступа к памяти. Кроме того, при превышенном выделении памяти KSM уменьшает загруженность виртуальной памяти, снижая вероятность использования подкачки и повышая производительность.
KSM потребляет больше ресурсов ЦП, чем процедура вытеснения памяти. Объём потребляемых KSM ресурсов остаётся неизменным и в критических условиях. Выполнение одинаковых ВМ и приложений на хосте даёт KSM больше возможностей для объединения страниц памяти, чем выполнение отличающихся друг от друга ВМ. Если отличающиеся друг от друга ВМ и приложения составляют бòльшую часть выполняемых ВМ и приложений, то соображения нагрузки на ЦП при использовании KSM могут перевесить преимущества этого использования.
Дополнительные примечания:
- После того как KSM объединит большой объём памяти, статистика подсчёта памяти, собираемая ядром, может в итоге не отражать реальной картины. Если в системе присутствует большой объём свободной памяти, отключение KSM может улучшить производительность.
- Механизмы объединения одинаковых страниц памяти ядром и превышенного выделения памяти не рекомендуется применять для рабочих нагрузок, требующих постоянной высокой производительности и низких значений задержки.
- Механизм объединения одинаковых страниц памяти ядром рекомендуется применять там, где увеличение численности ВМ (из соображений экономии) играет бòльшую роль, чем производительность.
Чтобы включить механизм объединения одинаковых страниц памяти ядром, перейдите на вкладку "Оптимизация" в окне "Новый кластер" или "Параметры кластера". Затем установите флажок "Включить KSM". Этот параметр заставляет диспетчер превышенного выделения памяти MoM запускать KSM, когда это необходимо, в том числе когда преимущества экономии памяти при объединении одинаковых страниц памяти перевешивают затраты ЦП на работу KSM (см. п. Параметры оптимизации).
Изменение версии совместимости кластера
Кластеры в системе виртуализации ROSA Virtualization имеют версию совместимости. Версия совместимости кластера указывает на возможности системы виртуализации, поддерживаемые всеми хостами в кластере. Совместимость кластеров настраивается согласно версии ОС хоста в кластере, имеющей наименьшие возможности.
Примечание — Чтобы сменить версию совместимости кластера, сначала нужно обновить версию всех хостов в кластере до уровня, поддерживающего желаемый уровень совместимости. Проверьте наличие рядом с хостом значка, обозначающего возможность обновления версии.
Для изменения версии совместимости кластера:
- В главном меню Портала администрирования нажмите "Ресурсы → Кластеры".
- Выберите кластер и нажмите Изменить.
- На вкладке "Общее" смените "Версию совместимости" на необходимое значение.
- Нажмите OK.
Примечание — Существует вероятность появления сообщения, предупреждающего о некорректной конфигурации некоторых ВМ и шаблонов. Чтобы исправить эту ошибку, отредактируйте параметры каждой ВМ вручную. В окне "Параметры виртуальной машины" есть дополнительные предупреждения и пункты соответствия, указывающие на то, что именно необходимо скорректировать. Иногда проблема исправляется автоматически, и конфигурацию ВМ просто нужно ещё раз сохранить. Таким образом после изменения параметров каждой ВМ можно будет изменить версию совместимости кластера.
После обновления версии совместимости кластера необходимо обновить версию совместимости всех работающих или приостановленных ВМ, перезапустив их с помощью Портала администрирования или с помощью REST API, а не из гостевых ОС. Машины, которым нужна перезагрузка, отмечены значком изменений . Нельзя изменить версию совместимости снимка виртуальной машины, находящегося в предпросмотре. Сначала необходимо зафиксировать изменения или отменить предварительный просмотр.
В окружении виртуализированного ЦУ виртуальная машина ЦУ не нуждается в перезагрузке.
Хотя можно отложить перезагрузку машин до более удобного момента, крайне рекомендуется перезагрузить ВМ немедленно, чтобы машины использовали самую последнюю конфигурацию. ВМ, не получившие обновлений, работают со старой конфигурацией, а новые конфигурации могут быть перезаписаны, если до перезагрузки в параметры ВМ будут внесены другие изменения.
Как только версия совместимости всех кластеров и ВМ в дата-центре будет обновлена, можно изменять версию совместимости самого дата-центра.