Я перешёл с Hyper-V и сейчас тестирую Proxmox для боевого окружения. Обнаружил серьёзную проблему в том, как PVE управляет памятью хоста и гостя, из-за чего виртуалки падают:
Тестовый сценарий 1: Один хост с 128 ГБ ОЗУ. На хосте 2 Windows 10 ВМ с выделенной памятью по 96 ГБ каждая, обе в выключенном состоянии. Запускаю VM1 — без проблем. Память хоста: выделено 100 ГБ, свободно ~20 ГБ. Запускаю VM2 — PVE никак не проверяет, сколько памяти осталось на хосте. VM2 запускается, а VM1 падает! Это нормально? Почему VM2 вообще разрешили стартовать?
----------------------------------------------------
Тестовый сценарий 2: кластер Proxmox из 3 нод (каждая с 128 ГБ ОЗУ) с Ceph, гиперконвергентная HA-группа, все ноды настроены по умолчанию (без приоритетов между нодами, max restart & relocate = 1), все ВМ — Windows 10.
Нода 1: VM1 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Нода 2: VM2 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Нода 3: VM3 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Выключаю питание ноды 1, чтобы проверить поведение миграции.
Результат: VM1 мигрирует на ноду 2 и запускается там, где уже работает VM2. Вследствие этого VM2 падает, потому что её память выделена VM1! VM2 перезапускается (из-за настроек HA-группы), VM1 падает! Затем VM1 тоже перезапускается, снова падает VM2, и так по кругу! Это нормально? Почему VM1, которая мигрировала, разрешена к запуску в таком состоянии? Как это предотвратить?
----------------------------------------------------
Это огромная проблема... Почему Proxmox не проверяет свободную память хоста перед стартом ВМ? Другие гипервизоры делают это! Есть ли у меня где-то какой-то параметр, который я пропустил? Это в списке приоритетов разработки? Потому что так точно должно быть…
Тестовый сценарий 1: Один хост с 128 ГБ ОЗУ. На хосте 2 Windows 10 ВМ с выделенной памятью по 96 ГБ каждая, обе в выключенном состоянии. Запускаю VM1 — без проблем. Память хоста: выделено 100 ГБ, свободно ~20 ГБ. Запускаю VM2 — PVE никак не проверяет, сколько памяти осталось на хосте. VM2 запускается, а VM1 падает! Это нормально? Почему VM2 вообще разрешили стартовать?
----------------------------------------------------
Тестовый сценарий 2: кластер Proxmox из 3 нод (каждая с 128 ГБ ОЗУ) с Ceph, гиперконвергентная HA-группа, все ноды настроены по умолчанию (без приоритетов между нодами, max restart & relocate = 1), все ВМ — Windows 10.
Нода 1: VM1 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Нода 2: VM2 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Нода 3: VM3 с 96 ГБ памяти запущена, на ноде свободно ~20 ГБ
Выключаю питание ноды 1, чтобы проверить поведение миграции.
Результат: VM1 мигрирует на ноду 2 и запускается там, где уже работает VM2. Вследствие этого VM2 падает, потому что её память выделена VM1! VM2 перезапускается (из-за настроек HA-группы), VM1 падает! Затем VM1 тоже перезапускается, снова падает VM2, и так по кругу! Это нормально? Почему VM1, которая мигрировала, разрешена к запуску в таком состоянии? Как это предотвратить?
----------------------------------------------------
Это огромная проблема... Почему Proxmox не проверяет свободную память хоста перед стартом ВМ? Другие гипервизоры делают это! Есть ли у меня где-то какой-то параметр, который я пропустил? Это в списке приоритетов разработки? Потому что так точно должно быть…
