Планирование развертывания устройств с помощью дискретного назначения устройств
Дискретное назначение устройства позволяет аппаратному оборудованию Interconnect Express (PCIe) физического периферийного компонента напрямую получать доступ к виртуальной машине. В этой статье рассматривается тип устройств, которые можно использовать, требования к системе узла, ограничения, введенные на виртуальных машинах и последствия для безопасности.
Для дискретного назначения устройств корпорация Майкрософт поддерживает два класса устройств: графические адаптеры и устройства хранилища NVMe. Другие устройства, скорее всего, работают, и поставщики оборудования могут предлагать заявления о поддержке этих устройств. Для других устройств обратитесь к определенным поставщикам оборудования для поддержки.
Дополнительные сведения о других методах виртуализации GPU см. в разделе "Планирование ускорения GPU" в Windows Server. Если вы готовы попробовать дискретное назначение устройств, можно перейти к развертыванию графических устройств с помощью дискретного назначения устройств или развертывания устройств хранилища NVMe с помощью дискретного назначения устройств.
Поддерживаемые виртуальные машины и гостевые операционные системы
Дискретное назначение устройств поддерживается для виртуальных машин поколения 1 или 2. Поддерживаемые гости включают:
- Windows 10 или более поздняя версия
- Windows Server 2016 или более поздней версии.
- Windows Server 2012 R2 с обновлением , чтобы добавить поддержку дискретного назначения устройств для Azure.
Дополнительные сведения см. в статье Поддерживаемые виртуальные машины Linux и FreeBSD для Hyper-V в Windows Server и Windows.
Требования к системе
Ваша система должна соответствовать требованиям к оборудованию для Windows Server и системных требований для Hyper-V в Windows Server. Дискретное назначение устройств также требует оборудования класса сервера, которое может предоставлять управление операционной системой при настройке структуры PCIe (Native PCI Express Control). Кроме того, корневой комплекс PCIe должен поддерживать службы контроль доступа (ACS), что позволяет Hyper-V принудительно принудительно выполнять весь трафик PCIe через единицу управления памятью ввода-вывода.
Эти возможности обычно не предоставляются непосредственно в BIOS сервера и часто скрыты за другими параметрами. Если те же возможности необходимы для поддержки SR-IOV и в BIOS, возможно, потребуется задать параметр "Включить SR-IOV". Обратитесь к поставщику системы, если вы не можете определить правильный параметр в BIOS.
Чтобы убедиться, что оборудование может выполнять дискретное назначение устройств, можно запустить сценарий профиля компьютера на узле с поддержкой Hyper-V. Сценарий проверяет, правильно ли настроен сервер и какие устройства могут выполнять дискретное назначение устройств.
Требования к устройствам
Не все устройства PCIe можно использовать с дискретным назначением устройств. Старые устройства, использующие устаревшие прерывания PCI (INTx), не поддерживаются. Дополнительные сведения см. в разделе "Дискретное назначение устройств " Компьютеры и устройства". Вы также можете запустить скрипт профиля компьютера, чтобы отобразить, какие устройства могут использоваться для дискретного назначения устройств.
Производители устройств могут обратиться к своему представителю Майкрософт для получения дополнительных сведений.
Драйвер устройства
Дискретное назначение устройства передает все устройство PCIe на гостевую виртуальную машину. Перед установкой устройства на виртуальной машине драйвер узла не требуется. Единственное требование к узлу заключается в том, что путь расположения PCIe устройства можно определить. Драйвер устройства можно установить, чтобы помочь в идентификации устройства. GPU без драйвера устройства, установленного на узле, может отображаться как устройство Отрисовки Microsoft Basic. Если драйвер устройства установлен, его производитель и модель, скорее всего, будут отображаться.
Когда устройство подключено внутри гостевого компьютера, драйвер устройства производителя может быть установлен как обычный внутри гостевой виртуальной машины.
Ограничения виртуальных машин
Из-за того, как реализуется дискретное назначение устройств, некоторые функции виртуальной машины ограничены при присоединении устройства. Следующие функции недоступны.
- Сохранение и восстановление виртуальной машины
- Динамическая миграция виртуальной машины
- Использование динамической памяти
- Добавление виртуальной машины в кластер высокой доступности (HA)
Безопасность
Дискретное назначение устройства передает все устройство на виртуальную машину. Это означает, что все возможности этого устройства доступны из гостевой операционной системы. Некоторые возможности, такие как обновление встроенного ПО, могут негативно повлиять на стабильность системы. При отключении устройства с узла отображаются многочисленные предупреждения. Следует использовать только дискретное назначение устройства, где клиенты виртуальных машин являются доверенными.
Если администратор хочет использовать устройство с ненадежным клиентом, производство устройств может создать драйвер устранения рисков устройств, который можно установить на узле. Обратитесь к изготовителю устройства, чтобы узнать, предоставляет ли он драйвер устранения рисков устройств.
Если вы хотите обойти проверки безопасности для устройства, у которых нет драйвера устранения рисков устройств, необходимо передать -Force
параметр командлету Dismount-VMHostAssignableDevice
. При выполнении этого прохода вы изменили профиль безопасности этой системы. Это изменение следует вносить только во время создания прототипов или доверенных сред.
Путь расположения PCIe
Путь расположения PCIe необходим для отключения и подключения устройства с узла. Пример пути расположения.PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)
Скрипт профиля компьютера также возвращает путь к расположению устройства PCIe.
Получение пути к расположению с помощью диспетчер устройств
- Откройте диспетчер устройств и найдите устройство.
- Щелкните устройство правой кнопкой мыши и выберите Свойства.
- На вкладке "Сведения" разверните раскрывающееся меню "Свойство " и выберите "Пути расположения".
- Щелкните правой кнопкой мыши запись, начинающуюся с PCIROOT , и выберите "Копировать ", чтобы получить путь к расположению устройства.
Пространство MMIO
Некоторым устройствам, особенно gpu, требуется дополнительное пространство MMIO, выделенное виртуальной машине для доступа к памяти этого устройства. По умолчанию каждая виртуальная машина начинается с 128 МБ низкого пространства MMIO и 512 МБ большого пространства MMIO, выделенного ему. Однако для устройства может потребоваться больше пространства MMIO или несколько устройств могут передаваться таким образом, чтобы совокупные требования превысили эти значения. Изменение пространства MMIO просто и может выполняться в PowerShell с помощью следующих команд:
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm
Самый простой способ определить, сколько пространства MMIO необходимо выделить, — использовать скрипт профиля компьютера. Чтобы скачать и запустить скрипт профиля компьютера, выполните следующие команды в консоли PowerShell:
curl -o SurveyDDA.ps1 https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/live/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1
.\SurveyDDA.ps1
Для устройств, которые можно назначить, скрипт отображает требования MMIO для данного устройства. Ниже приведен пример выходных данных скрипта:
NVIDIA GRID K520
Express Endpoint -- more secure.
...
And it requires at least: 176 MB of MMIO gap space
...
Низкое пространство MMIO используется только 32-разрядными операционными системами и устройствами, используюющими 32-разрядные адреса. В большинстве случаев установка большого пространства MMIO виртуальной машины достаточно, так как 32-разрядные конфигурации не являются общими.
Внимание
При назначении пространства MMIO виртуальной машине обязательно укажите достаточное пространство MMIO. Пространство MMIO должно быть суммой запрошенного пространства MMIO для всех требуемых назначенных устройств, а также буфера для других виртуальных устройств, для которых требуется несколько МБ пространства MMIO. Используйте значения MMIO по умолчанию, описанные ранее в качестве буфера для низкого и высокого уровня MMIO (128 МБ и 512 МБ соответственно).
Рассмотрим предыдущий пример. Если вы назначите один GPU K520, задайте пространство MMIO виртуальной машины значением, выходным скриптом профиля компьютера, а также буфером: 176 МБ + 512 МБ. Если вы назначаете три GPU K520, задайте пространство MMIO в три раза больше 176 МБ, а также буфер или 528 МБ + 512 МБ.
Дополнительные сведения о пространстве MMIO см. в блоге о дискретном назначении устройств — GPU в блоге Tech Community.
Скрипт профиля компьютера
Чтобы определить, правильно ли настроен сервер и какие устройства можно передавать с помощью дискретного назначения устройств, запустите surveyDDA.ps1. Скрипт PowerShell.
Прежде чем использовать скрипт, убедитесь, что у вас установлена роль Hyper-V, и вы запускаете скрипт из командного окна PowerShell с правами администратора.
Если система неправильно настроена для поддержки дискретного назначения устройств, средство отображает сообщение об ошибке с подробными сведениями о проблеме. Если система настроена правильно, средство перечисляет все устройства, расположенные на шине PCIe.
Для каждого найденного устройства средство отображает возможность использования с дискретным назначением устройств. Если устройство идентифицируется как несовместимое с дискретным назначением устройств, скрипт предоставляет причину. Когда устройство успешно определено как совместимое, отображается путь к расположению устройства. Кроме того, если для этого устройства требуется пространство MMIO, оно также отображается.