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

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

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

Рисунок 100 ‒ Выбор дата-центра для кластера
- указать "Имя" и "Описание кластера";
- в выпадающем списке "Сеть управления" выбрать сеть, которой нужно присвоить роль сети управления;
- в выпадающих списках выбрать "Архитектуру ЦП" и "Тип ЦП" (рисунки 101-102);
Важно, чтобы семейство процессора совпадало с минимальным типом процессора хостов, к которым предполагается присоединить кластер, в противном случае хост будет нерабочим.
Примечание — Как для типа Intel®, так и для типа AMD, указанные в списке модели идут в логическом порядке от самых старых к самым новым. Если в кластер включены хосты с разными моделями ЦП, в списке выбирают самую старую модель.

Рисунок 101 ‒ Выбор архитектуры ЦП для кластера

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

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

Рисунок 104 ‒ Выбор типа коммутатора кластера
- для хостов в кластере выбрать "Тип брандмауэра" — iptables или firewalld (рисунок 105);

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

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

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

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

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

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

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

Рисунок 112 ‒ Окно "Кластер — пошаговый помощник"
- в окне "Пошаговый помощник" указан список объектов, для которых необходимо настроить взаимодействие с кластером; настроить эти объекты или отложить настройку, нажав на кнопку Настроить позже. Процесс настройки можно возобновить позднее, для чего выбрать необходимый кластер, затем нажать на пиктограмму ("Больше действий"), после чего выбрать "Пошаговый помощник".
Общие параметры кластера
В таблице 33 описываются параметры вкладки "Общее" в окнах "Новый кластер" и "Параметры кластера".
Примечание — При нажатии кнопки
OKнедействительные элементы обводятся оранжевым, запрещая применение изменений. Кроме того, в полях ввода указываются ожидаемые значения или диапазон значений.
Параметры оптимизации
Критерии для памяти
Разделение страниц памяти дает возможность ВМ использовать до 200% выделенной им памяти, используя свободную память других ВМ. Этот процесс базируется на предположении, что ВМ в окружении РОСА Виртуализация не будут работать на полную мощность все одновременно, что дает возможность временно выделять неиспользуемую память какой-то одной из ВМ.
Критерии для ЦП
Для рабочей нагрузки без серьезного потребления ресурсов ЦП виртуальные машины могут работать, имея общее число ядер процессора, превышающее число ядер на хосте. Таким образом активируются следующие возможности:
- Можно запускать большее число ВМ, что снижает требования к аппаратным составляющим.
- Можно настраивать ВМ с топологией ЦП, которая иначе не была бы возможной (например, когда значение количества виртуальных ядер находится между числом ядер хоста и числом потоков хоста).
Для лучшей производительности и особенно для рабочей нагрузки с серьезным потреблением ресурсов ЦП необходимо использовать для ВМ ту же топологию, что и на хосте, чтобы и ВМ, и хост рассчитывали на одинаковое использование кеша. При включенной на хосте гиперпоточности 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 (равномерное распределение ВМ) равномерно распределяет ВМ между хостами, руководствуясь количеством машин. Для включения автоматической балансировки нагрузки хостов в кластере необходимо настроить политику планирования (см. п. Политики планирования).
Для настройки политик управления нагрузкой и энергосбережения на хосте нужно выполнить следующие действия:
- перейти в "Ресурсы → Кластеры" и выбрать кластер;
- нажать кнопку
Изменить; - перейти на вкладку "Политика планирования" (рисунок 113);
- выбрать одну из следующих политик:
- нет;
- 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.

Рисунок 113 ‒ Политика планирования
Обновление информации о политике 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 выполняет следующие основные функции:
- ограничивает превышенное выделение памяти путем применения установленного значения параметра "Оптимизация памяти" к хостам в кластере;
- оптимизирует память, управляя процессами вытеснения памяти (ballooning) и объединения одинаковых страниц памяти ядром (KSM);
- не нуждается во включении или отключении.
Если объем доступной свободной памяти хоста падает ниже 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 (см. п. Параметры оптимизации).
Изменение версии совместимости кластера
Кластеры в РОСА Виртуализация имеют версию совместимости. Версия совместимости кластера указывает на возможности Системы виртуализации, поддерживаемые всеми хостами в кластере. Совместимость кластеров настраивается согласно версии ОС хоста в кластере, имеющей наименьшие возможности.
Примечание — Чтобы сменить версию совместимости кластера, сначала нужно обновить версию всех хостов в кластере до уровня, поддерживающего желаемый уровень совместимости. Следует проверить наличие рядом с хостом значка, обозначающего возможность обновления версии.
Для изменения версии совместимости кластера нужно:
- в главном меню Портала администрирования перейти в "Ресурсы → Кластеры";
- выбрать кластер и нажать кнопку
Изменить; - на вкладке "Общее" изменить "Версию совместимости" на необходимое значение;
- нажать кнопку
OK.
Примечание — Существует вероятность появления сообщения, предупреждающего о некорректной конфигурации некоторых ВМ и шаблонов. Чтобы исправить эту ошибку, следует отредактировать параметры каждой ВМ вручную. В окне "Параметры виртуальной машины" есть дополнительные предупреждения и пункты соответствия, указывающие на то, что именно необходимо скорректировать. Иногда проблема исправляется автоматически, и конфигурацию ВМ просто нужно еще раз сохранить. Таким образом, после изменения параметров каждой ВМ можно будет изменить версию совместимости кластера.
После обновления версии совместимости кластера необходимо обновить версию совместимости всех работающих или приостановленных ВМ, перезапустив их с помощью Портала администрирования или с помощью REST API, а не из гостевых ОС. Машины, которым нужна перезагрузка, отмечены значком изменений . Нельзя изменить версию совместимости снимка виртуальной машины, находящегося в предпросмотре. Сначала необходимо зафиксировать изменения или отменить предварительный просмотр.
В окружении виртуализированного ЦУ виртуальная машина ЦУ не нуждается в перезагрузке.
Хотя можно отложить перезагрузку машин до более удобного момента, крайне рекомендуется перезагрузить ВМ немедленно, чтобы машины использовали самую последнюю конфигурацию. ВМ, не получившие обновлений, работают со старой конфигурацией, а новые конфигурации могут быть перезаписаны, если до перезагрузки в параметры ВМ будут внесены другие изменения.
Как только версия совместимости всех кластеров и ВМ в дата-центре будет обновлена, можно изменять версию совместимости самого дата-центра.