Тип процессора в Proxmox: какой выбрать для виртуальной машины

При создании виртуальной машины в Proxmox VE поле CPU Type по умолчанию выставлено в x86-64-v2-AES или kvm64 — и именно этот параметр чаще всего становится причиной несовместимости при живой миграции между узлами кластера с разными процессорами. Гостевая система видит не физический процессор сервера, а эмулируемую модель с ограниченным набором инструкций, и от этого зависит как производительность, так и переносимость ВМ.

Ниже разберём, чем отличаются доступные типы, когда оправдан host, а когда нужен универсальный профиль, и как сменить тип процессора без переустановки виртуальной машины.

Что такое тип процессора в Proxmox и зачем он нужен

Виртуальная машина в Proxmox VE работает на гипервизоре KVM/QEMU, который может представлять гостю любую модель процессора, независимо от физического железа. Параметр cpu в конфигурации ВМ определяет, какой набор инструкций (SSE, AVX, AES-NI и другие) будет виден операционной системе внутри виртуалки.

Это решает две задачи. Первая — совместимость при миграции: если все узлы кластера показывают гостям одинаковый виртуальный CPU, машина может переезжать между серверами с разным железом без сбоя. Вторая — производительность: чем ближе виртуальный процессор к реальному, тем больше аппаратных инструкций доступно приложениям.

Обзор доступных типов процессора

В выпадающем списке CPU Type (создание ВМ → вкладка System, либо Hardware → Processors у существующей машины) доступно несколько групп вариантов:

  • 🖥️ host — гостю передаётся модель физического процессора узла со всеми поддерживаемыми инструкциями;
  • 📦 kvm64 / qemu64 — базовые эмулируемые модели с минимальным набором инструкций, максимально совместимые;
  • 🏗️ x86-64-v2, x86-64-v2-AES, x86-64-v3, x86-64-v4 — стандартизованные уровни микроархитектуры x86-64, компромисс между совместимостью и набором инструкций;
  • 🏷️ Именные модели (Haswell, Skylake-Server, EPYC и другие) — эмуляция конкретных поколений Intel или AMD.

Точный список зависит от версии QEMU в вашей установке Proxmox, поэтому сверяйтесь с тем, что реально предлагает интерфейс вашей версии.

Сравнение популярных вариантов

Тип CPUПроизводительностьМиграция между разным железомТипичный сценарий
hostМаксимальнаяТолько между идентичными CPUОдиночный сервер, высоконагруженные ВМ
kvm64Ниже среднейОтличнаяКластер с разнородным железом
x86-64-v2-AESСредняяХорошаяУниверсальный выбор по умолчанию
x86-64-v3ВысокаяСредняя (нужен AVX2 на всех узлах)Современные однотипные серверы
Именная модель (EPYC, Haswell)ВысокаяМежду узлами того же поколенияСпецифичные требования ПО

Обратите внимание: уровни x86-64-v3 и x86-64-v4 требуют, чтобы физические процессоры всех узлов кластера поддерживали соответствующие инструкции (AVX2 для v3, AVX-512 для v4). Если хотя бы один старый сервер их не поддерживает, ВМ с таким типом не сможет туда мигрировать или вообще не запустится.

⚠️ Внимание: тип host делает живую миграцию безопасной только между узлами с идентичными процессорами. Миграция с Intel на AMD (или на процессор другого поколения) с типом host может привести к падению гостевой системы из-за отсутствия ожидаемых инструкций.

📊 Какой тип CPU вы используете в своих виртуальных машинах Proxmox?
host
kvm64
x86-64-v2-AES
Именную модель (EPYC, Haswell и т.п.)

Какой тип выбрать: практические рекомендации

Для одиночного сервера без планов на кластер логичен выбор host — гость получит все возможности железа, включая аппаратное шифрование AES-NI и векторные инструкции, что важно для баз данных, кодирования видео и криптографии.

Для кластера из двух и более узлов выбирайте наименьший общий знаменатель. Проверить поддерживаемые уровни на каждом узле можно командой:

/usr/lib/x86_64-linux-gnu/qemu/qemu-system-x86_64 -cpu help

Либо сравните флаги процессоров через cat /proc/cpuinfo | grep flags на каждом узле — набор инструкций должен совпадать или покрывать требования выбранного профиля.

Как изменить тип процессора у существующей ВМ

Смена типа выполняется через веб-интерфейс: выключите ВМ, перейдите в Hardware → Processors, дважды кликните по строке Type и выберите нужный вариант. Изменение применяется при следующем запуске — горячая смена невозможна.

Через консоль узла то же самое делается командой:

qm set <VMID> --cpu host

☑️ Безопасная смена типа CPU

Выполнено: 0 / 5

⚠️ Внимание: некоторое лицензионное ПО и активация Windows привязываются к идентификатору процессора. После смены типа CPU гостевая система может потребовать повторной активации, а лицензионные ключи приложений — перепривязки. Делайте снапшот перед изменением.

Дополнительные параметры процессора

Помимо типа, в настройках ВМ есть связанные опции. Параметр Flags позволяет вручную включить или отключить отдельные инструкции (например, +aes или pcid, который иногда требуется для стабильной работы Windows на некоторых CPU). Поле Hidden скрывает от гостя факт виртуализации — это бывает нужно для ПО с защитой от запуска в ВМ.

Почему в госте не видно AES-NI, хотя процессор его поддерживает

По умолчанию профили kvm64 и qemu64 не включают флаг AES. Решение — выбрать тип host, x86-64-v2-AES или добавить флаг вручную: qm set --cpu kvm64,+aes

Также учитывайте топологию: параметры sockets и cores влияют на то, как гостевая ОС видит процессор, что важно для лицензирования ПО по сокетам.

Частые проблемы и их решения

Типичная ошибка при миграции — сообщение о несовместимости CPU между узлами. Она возникает, когда ВМ настроена на host или именную модель, а целевой узел имеет другое железо. Решение — перевести ВМ на универсальный профиль (потребуется выключение) или ограничить миграцию группой узлов с одинаковыми процессорами через HA Groups.

Вторая частая ситуация — приложение внутри гостя отказывается запускаться, требуя AVX или другую инструкцию. Проверьте, какой профиль назначен ВМ: базовые kvm64/qemu64 не предоставляют современные наборы инструкций, и профиль нужно поднять до x86-64-v3 или host, если железо это позволяет.

FAQ: частые вопросы о типе процессора в Proxmox

Какой тип CPU стоит по умолчанию и стоит ли его менять?

В свежих версиях Proxmox VE по умолчанию предлагается x86-64-v2-AES, в старых — kvm64. Для одиночного сервера имеет смысл переключить на host ради производительности; для кластера с разным железом профиль по умолчанию обычно оптимален.

Можно ли менять тип CPU на работающей виртуальной машине?

Нет. Изменение применяется только при следующем запуске ВМ, поэтому требуется полное выключение (не перезагрузка) гостевой системы.

Влияет ли тип CPU на производительность заметно?

Да, если приложения активно используют векторные инструкции (AVX) или аппаратное шифрование (AES-NI) — например, базы данных, видеокодирование, VPN. Для обычных веб-серверов и файловых служб разница между профилями незначительна.

Почему миграция падает с ошибкой про CPU?

Возможная причина — ВМ использует тип host или именную модель, а на целевом узле процессор другого поколения или вендора. Смените тип на универсальный профиль или мигрируйте только между узлами с идентичным железом.

Что выбрать для Windows-гостя?

Чаще всего для Windows рекомендуют host на одиночном сервере либо x86-64-v2-AES в кластере. Дополнительно может понадобиться флаг pcid на некоторых процессорах — при нестабильной работе проверьте документацию Proxmox под вашу версию.