Подготовка серверов для виртуализации графических карт

Подготовка серверов для виртуализации графических карт#

Для включения поддержки виртуализации графических карт необходимо установить модуль ядра NVIDIA. Если необходимо включить поддержку виртуализации для графической карты, которая ранее была отсоединена для ее использования в режиме сквозной передачи, нужно дополнительно модифицировать конфигурационный файл GRUB.

Предварительные требования

Включение поддержки виртуализации графических карт на сервере

  1. На сервере с физической графической картой выполните следующие действия:

    • Если физическая графическая карта сервера подсоединена.

      Добавьте драйвер Nouveau в черный список:

      # rmmod nouveau
      # echo -e "blacklist nouveau\noptions nouveau modeset=0" > /usr/lib/modprobe.d/nouveau.conf
      # echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/nouveau.conf
      
    • Если физическая графическая карта сервера отсоединена.

      1. В файле /etc/sysconfig/grub найдите переменную GRUB_CMDLINE_LINUX, а затем удалите pci-stub.ids=<gpu_vid>:<gpu_pid> из ее значения. Например, для графической карты, у которой VID:PID — это 10de:1eb8, удалите pci-stub.ids=10de:1eb8 и проверьте получившийся файл:

        # cat /etc/sysconfig/grub | grep CMDLINE
        GRUB_CMDLINE_LINUX="crashkernel=auto tcache.enabled=0 quiet iommu=pt rd.driver.blacklist=nouveau nouveau.modeset=0"
        
      2. Сгенерируйте конфигурационный файл GRUB.

        • Для системы с BIOS выполните:

          # /usr/sbin/grub2-mkconfig -o /etc/grub2.cfg
          
        • Для системы с UEFI выполните:

          # /usr/sbin/grub2-mkconfig -o /etc/grub2-efi.cfg
          
      3. Перезагрузите сервер, чтобы применить изменения:

        # reboot
        
  2. Установите модуль ядра vGPU KVM из пакета NVIDIA GRID:

    # bash NVIDIA-Linux-x86_64-460.73.02-vgpu-kvm.run
    
  3. Пересоздайте загрузочный образ Linux, выполнив:

    # dracut -f
    
  4. Перезагрузите сервер, чтобы завершить установку модуля ядра:

    # reboot
    

Проверка того, что поддержка виртуальных графических карт включена для физической графической карты

Получите список всех графических карт сервера и их PCI-адреса:

# lspci -D | grep NVIDIA
0000:01:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:81:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)

0000:01:00.0 и 0000:81:00.0 — это PCI-адреса графических карт.

Проверьте, что поддержка виртуальных графических карт включена для физической графической карты:

ls /sys/bus/pci/devices/0000\:03:00.0/mdev_supported_types
nvidia-222  nvidia-223  nvidia-224  nvidia-225  nvidia-226  nvidia-227  nvidia-228  nvidia-229  nvidia-230  nvidia-231
nvidia-232  nvidia-233  nvidia-234  nvidia-252  nvidia-319  nvidia-320  nvidia-321

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

Проверка того, что на сервере есть ресурсы виртуальных графических карт для выделения

Получите список поставщиков ресурсов вычислительного кластера, чтобы узнать их идентификаторы. Например:

# openstack --insecure resource provider list
+--------------------------------------+-----------------------------------------+------------+--------------------------------------+--------------------------------------+
| uuid                                 | name                                    | generation | root_provider_uuid                   | parent_provider_uuid                 |
+--------------------------------------+-----------------------------------------+------------+--------------------------------------+--------------------------------------+
| 359cccf7-9c64-4edc-a35d-f4673e485a04 | node001.vstoragedomain_pci_0000_03_00_0 |          1 | 4936695a-4711-425a-b0e4-fdab5e4688d6 | 4936695a-4711-425a-b0e4-fdab5e4688d6 |
| b8443d1b-b941-4bf5-ab4b-2dc7c64ac7d1 | node001.vstoragedomain_pci_0000_81_00_0 |          1 | 4936695a-4711-425a-b0e4-fdab5e4688d6 | 4936695a-4711-425a-b0e4-fdab5e4688d6 |
| 4936695a-4711-425a-b0e4-fdab5e4688d6 | node001.vstoragedomain                  |        823 | 4936695a-4711-425a-b0e4-fdab5e4688d6 | None                                 |
+--------------------------------------+-----------------------------------------+------------+--------------------------------------+--------------------------------------+

В этом выводе поставщик ресурсов с идентификатором 4936695a-4711-425a-b0e4-fdab5e4688d6 обладает двумя дочерними поставщиками ресурсов для двух физических графических карт с PCI-адресами 0000:03:00.0 и 0000:81:00.0.

Используйте полученный идентификатор дочернего поставщика ресурсов, чтобы получить его инвентарный список. Например:

# openstack --insecure resource provider inventory list 359cccf7-9c64-4edc-a35d-f4673e485a04
+----------------+------------------+----------+----------+-----------+----------+-------+
| resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total |
+----------------+------------------+----------+----------+-----------+----------+-------+
| VGPU           |              1.0 |        8 |        0 |         1 |        1 |     8 |
+----------------+------------------+----------+----------+-----------+----------+-------+

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