Настройка Resource Allocation для виртуальных машин

При создании виртуальных машин (ВМ) на хосте ESX, мы сталкиваемся с параметрами Resources Allocation. Немного поподробнее остановимся на них. В Resources Allocation входят несколько настраиваемых значений:

  1. Shares;
  2. Reservation;
  3. Limit;

Все параметры устанавливаются отдельно для RAM и CPU, так что можно настроить хост достаточно гибко в плане использования ресурсов.

Shares

Для этого параметра возможно установить 4 значения:

  1. Low;
  2. Normal;
  3. High;
  4. Custom;

Данный параметр будет устанавливать приоритет использования всех ресурсов для ВМ на хосте. Разбиение по группам приоритетов следующее: Normal имеет в два раза больший приоритет по сравнению с Low, а High в два раза больший приоритет по сравнению с Normal. Численно это будет равно:

  1. Low – 5 единиц на каждый Мб/МГц;
  2. Normal – 10 единиц на каждый Мб/МГц;
  3. High – 20 единиц на каждый Мб/МГц;
  4. Custom – устанавливаем значение самостоятельно;

Этот параметр вступает в силу только в том случае, когда выделенных ресурсов начинает не хватать.

Reservation

Параметр определяет количество ресурсов, которое будет зарезервировано за ВМ. Эти ресурсы не будут отдаваться другим ВМ, даже если наша ВМ, для которой это значение установлено, не будет их использовать. Если установлен параметр Reservation, при расчете параметров ВМ вначале учитывается он, а потом уже будет учитываться отношение приоритетов параметра Share.

Limit

Если Reservation определял минимальное потребление ресурсов, то Limit определяет максимальное потребление ресурсов виртуальной машиной. В отличие от Reservation, параметр Limit не будет играть роль при расчете Share, то есть, если мы установим лимит по памяти, ВМ при любых условиях не сможет его перейти, даже если ей будет выделено больше. Параметр Limit будет устанавливать верхнюю планку для параметров ВМ.


Другими словами, Reservation устанавливает нижнюю планку использования ресурсов, а Limit – верхнюю.

Краткие определения

Параметр Reservation устанавливает нижнюю планку использования ресурсов для ВМ на хосте ESX.
Параметр Limit устанавливает верхнюю планку использования ресурсов для ВМ на хосте ESX.
Параметр Share задает приоритет использования ресурсов для ВМ на хосте ESX.

Последовательность выставления параметров

Для простоты решения мы будем использовать лишь настройки Resource Allocation для RAM на хосте ESX.

Какие исходные данные нам нужны:

  1. Мы должны знать параметры ESX хоста;
  2. Мы должны знать количество ВМ и параметры каждой (для простоты, можно выписать в таблицу);
  3. Нам нужно понимать приоритетность машин (какое назначение у каждой из ВМ):
    • Первый приоритет – самые важные для компании машины, без которых не возможна будет дальнейшая работа всей компании;
    • Второй приоритет – важные машины, это все ВМ, работа которых влияет на работу отделов либо подразделений компании;
    • Третий приоритет – маловажные ВМ, это машины, работа которых повлияет лишь на работу отдельных сотрудников;
    • Четвертый приоритет – не важные ВМ, машины, использующиеся либо в тестовых целях, либо не относящиеся к работе компании, отказ которых не повлияет на работу компании;
  4. Нам нужно знать, сколько ресурсов использует ВМ в среднем;

Последовательность действий при настройке параметров Share, Reservation, Limit:

Название ESX хоста
Общая память, доступная на хосте ESX, Гб Общий CPU, доступный на хосте ESX, ГГц
данные Данные
Название ВМ Заданная RAM Заданный CPU Приоритет Среднее использование RAM Среднее использование CPU
данные данные данные данные данные данные данные
  1. Рисуем приблизительную таблицу для нашего сценария;
  2. В первую очередь стоит заняться ВМ с приоритетом 1 (устанавливаем им значения Reservation, необходимое для работы ВМ). В большинстве случаев, необходимо устанавливать значение Reservation лишь для машин первого приоритета, изредка для второго;
  3. Параметр Limit не особо важен при назначении машинам, поэтому он либо не устанавливается никому вовсе, либо его можно назначить машинам четвертого приоритета в тестовых средах, изредка третьего;
  4. Устанавливаем приоритеты для всех ВМ параметром Share (для первого приоритета устанавливаем значение High, для второго – Normal, для третьего – Low, для четвертого – Custom, и устанавливаем Custom, как значение, например 2 единицы на 1Мб/МГц ресурсов). Возможно, также сместить приоритеты, установив первому приоритету значение Custom, и выставить в столько раз больший приоритет по сравнению с High, во сколько это там нужно;

Пример

Есть 1 хост ESX, с 6Гб RAM. На нем исполняются 2 ВМ для поддержки VCenter и View (им выделено по 4Гб памяти каждой), 1 машина с AD (3 Гб памяти), а также 4 ВМ, использованные под рабочие столы View (по 1Гб каждая).

ESX-001
Общая память, доступная на хосте, Гб Общий CPU, доступный на хосте, ГГц
6 Гб Не важно в нашем примере
Название ВМ Кол-во Заданная RAM Заданный CPU Приоритет Среднее использование RAM Среднее использование CPU
1 VCenter 1 4Гб Не важно в нашем примере 1 (20) 1.5Гб Не важно в нашем примере
2 AD 1 3Гб Не важно в нашем примере 2 (10) 1Гб Не важно в нашем примере
3 View 1 4Гб Не важно в нашем примере 2 (10) 500Мб Не важно в нашем примере
4 Desktops 4 По 1Гб Не важно в нашем примере 3 (5) 250Мб Не важно в нашем примере
  1. Рисуем таблицу;
  2. Мы знаем, что если мы выделим серверу VCenter 1.5Гб памяти и меньше, при загрузке он не будет поднимать половину сервисов, а при работе начнет их попросту останавливать. Мы устанавливаем ему параметр Reservation – 2Гб. Также AD перестанет корректно работать, если у него будет меньше 1Гб памяти. Установим Reservation – 1Гб;
  3. Мы выделили, что особый приоритет имеет лишь сервер VCenter, ему мы и отдаем параметр Share – High. Нам не нужно, чтобы все 4 ВМ для View Desktops использовали ресурсы одинаково с другими ВМ, так что им мы выделяем значение Share – Low. Серверам AD и View мы оставляем значение Share – Normal;
  4. Параметр Limit в пределах одного хоста, а тем более исполняющийся на ВМ не нужен в нашем случае, так что его устанавливать мы не будем ни для одной из ВМ;

Существует два варианта развития событий:

  • Ресурсов хватает на всех;
  • Виртуальным машинам начинает не хватать ресурсов, выделенных сервером;
  1. В первом случае, когда ВМ хотят потреблять ресурсов в сумме, не более чем есть у нашего хоста, параметр Share исполняться не будет, лишь Reservation сразу выдаст нашим 2 машинам (VCenter и AD) установленные значения, если хост выдал меньше;
  2. Во втором случае, когда все ВМ хотят использовать все выделенные им ресурсы при создании, начнется распределение ресурсов. В соответствие с параметром Share наши ВМ будут распределены следующим образом:

Рассчитываться значения параметров будут следующим образом:

(X*A1*B1)+(X*A2*B2)+…+(X*An*Bn)=N ;

Где N – объем памяти ESX хоста;
X – коэффициент расчета остаточного места;
A1-An – коэффициенты всех приоритетов, присутствующие в настройках ВМ;
B1-Bn – Параметры каждой ВМ (RAM или CPU);

После нахождения X (в нашем случае он равен 176.47), мы подставляем его в нашу формулу, каждая скобка будет равна объему памяти для соответствующей ВМ, например X*A1*B1=N1, где N1 будет равно высчитанному объему памяти первой ВМ:

  • VCenter – 2824 Гб;
  • AD – 1059 Гб;
  • View – 1413 Гб;
  • 4 vDesktops – по 176 Мб;

Если сравнивать с параметрами Reservation, то все наши ВМ превышают установленный параметр, следовательно, у них так и останутся такие значения.

Напоследок, в показательных целях установим значение параметра Reservation для View – 2 Гб. Гипервизор все высчитает автоматически и назначит всем точное значение, нам же придется посчитать промежуточное значение (в некоторых случаях их может быть несколько) с учетом только параметров резервации для View. Если еще какой-то параметр будет меньше, придется и ему назначать точное значение. Мы просто отбросим View с точным значением 2Гб, остальные будем рассчитывать также, лишь будем брать ESX с 4 Гб (6-2):

  • VCenter – 2462 Гб;
  • AD – 922 Мб
  • View – 2 Гб;
  • 4 vDesktops – по 154 Мб;

Мы видим, что AD теперь уже не удовлетворяет заданным требованиям Reservation (1Гб). Проводим такую же операцию, назначив уже для AD параметр резервации 1Гб и не рассчитывая ни AD, ни View. Следовательно, распределение RAM будет следующее:

  • View – 2Гб;
  • AD – 1 Гб;

А далее для остальных считаем как для параметра Share:
VCenter – 2.4 Гб (при расчетах Share 2.4Гб удовлетворяют настройкам Reservation);
4 vDesktops – по 150 Мб.

Возможно, Вам будет также интересна следующая информация:

resource-allocation-configuration.txt · Последние изменения: 2012/02/14 11:48 — VMware vSphere and View blogger