Коли провайдер віртуальних серверів згадує VT-x або AMD-V, йдеться не про бренд, а про конкретний набір інструкцій процесора, без якого сучасна віртуалізація працювала б на порядок повільніше. Ця стаття для тих, хто хоче зрозуміти, що саме перевіряє гіпервізор перед запуском віртуальної машини і чому деякі образи взагалі відмовляються стартувати без цієї функції.
Що таке апаратна віртуалізація процесора
VT-x — це набір розширень набору команд процесорів Intel, які спрощують роботу гіпервізора з пам'яттю і перериваннями віртуальних машин. AMD-V вирішує те саме завдання для процесорів AMD. До появи цих розширень гіпервізору доводилося емулювати привілейовані інструкції програмно, перехоплюючи і переписуючи код гостьової операційної системи на льоту — це і називають програмною віртуалізацією, і працює вона помітно повільніше.
З апаратною підтримкою процесор сам уміє перемикатися між режимом хоста і режимом гостя, не викликаючи гіпервізор на кожну привілейовану операцію. Завдяки цьому різниця у швидкості між гостьовою системою і фізичним залізом стає ледь помітною для більшості завдань.
Як перевірити, чи увімкнена апаратна віртуалізація
На сервері з Linux достатньо однієї команди, щоб побачити, чи підтримує процесор потрібне розширення:
egrep -c '(vmx|svm)' /proc/cpuinfo
Прапорець vmx означає підтримку VT-x у процесорів Intel, прапорець svm — підтримку AMD-V у процесорів AMD. Якщо команда повертає нуль, підтримка або відсутня фізично, або вимкнена в BIOS чи UEFI, або недоступна всередині віртуальної машини верхнього рівня — вкладена віртуалізація потребує окремого увімкнення на гіпервізорі, про що детально розказано у статті «Як створити віртуальну машину в Proxmox».
VT-x і AMD-V: у чому різниця для користувача
Для звичайного адміністратора віртуального сервера різниця між двома технологіями майже не відчувається — обидві вирішують одне завдання на різних архітектурах процесора. Різниця помітна лише на рівні платформи віртуалізації і набору пов'язаних технологій.
| Параметр | VT-x (Intel) | AMD-V (AMD) |
|---|---|---|
| Прапорець у /proc/cpuinfo | vmx | svm |
| Розширення для пам'яті | EPT (Extended Page Tables) | RVI / NPT (Nested Page Tables) |
| Виробник процесора | Intel | AMD |
| Підтримка вкладеної віртуалізації | Є, за умови увімкнення на гіпервізорі | Є, за умови увімкнення на гіпервізорі |
Платформи на кшталт Proxmox VE використовують обидва розширення однаково прозоро для користувача — опис самої платформи є у статті «Proxmox: що це таке».
Навіщо апаратна віртуалізація орендарю VPS
Для клієнта, який орендує готову віртуальну машину, апаратна віртуалізація працює непомітно — провайдер уже увімкнув її на рівні гіпервізора. Знати про неї варто у кількох конкретних випадках:
- Запуск вкладеної віртуальної машини всередині орендованого VPS — для тестів або власного гіпервізора
- Використання Docker та інших контейнерних технологій, які частково спираються на ті самі розширення ядра
- Діагностика падіння продуктивності, коли треба виключити програмну емуляцію як причину
Після такої перевірки зручно одразу перейти до розгортання робочої віртуальної машини — порядок дій описаний у статті «Віртуалізація на виділеному сервері».
Що робити, якщо апаратна віртуалізація недоступна
Якщо перевірка показала, що потрібного прапорця немає, варто пройти кроки у такому порядку.
- Переконатися, що процесор фізичного сервера взагалі підтримує VT-x або AMD-V за документацією виробника
- Увійти до налаштувань BIOS або UEFI і знайти пункт, що відповідає за віртуалізацію процесора — він може називатися по-різному у різних виробників плат
- Увімкнути відповідний пункт і зберегти налаштування з перезавантаженням сервера
- Повторити перевірку прапорця vmx або svm після завантаження системи
- Якщо сервер орендований у провайдера, звернутися до підтримки з проханням увімкнути вкладену віртуалізацію на рівні гіпервізора
Часті питання
Чи працює віртуальна машина взагалі без VT-x або AMD-V?
Сучасні гіпервізори здебільшого розраховані на апаратну віртуалізацію і або відмовляються запускати гостьову систему без неї, або перемикаються на програмну емуляцію з помітною втратою швидкості. Покладатися на такий режим у робочому середовищі не варто.
Чи можна увімкнути VT-x програмно, без входу в BIOS?
Ні, це налаштування самого процесора на рівні прошивки плати, операційна система не може змінити її з програмного середовища. Єдиний спосіб — зайти в BIOS або UEFI під час завантаження сервера.
Чи впливає VT-x на продуктивність звичайних програм без віртуалізації?
Ні, за увімкненого розширення, але без запущених віртуальних машин, поведінка процесора для звичайних застосунків не змінюється — набір інструкцій лишається доступним, але простоює.