物理机使用魔方云安装后无网络配置显卡直通去虚拟化检测原创文章

玩技站长 运维笔记评论148字数 11128阅读模式

安装魔方

魔方云提供了4种业务模式(节点类型):KVM加强版、KVM轻量版、Hyper-V、拨号云,结合实际的业务需求选择合适的脚本进行部署即可。本文提供的是KVM加强版的脚本部署方式。

环境要求

1、必须安装在全新的服务器上:centos7.9请使用 yum update 将系统更新至最新版,centos8stream不需要执行 dnf update 更新系统命令。具体物理机安装过程可以参看下面文章:文章源自玩技e族-https://www.playezu.com/820475.html

使用场景和说明:本篇文章为使用U盘制作centos8系统,站长的使用目的是家里闲置服务器对外做挂机宝使用,大家可以因人而异做...
131
注意:安装系统之后进入BIOS将虚拟化否则无法使用后和安装打开可以参看下面文章配置

知识拓展
文章源自玩技e族-https://www.playezu.com/820475.html
文章源自玩技e族-https://www.playezu.com/820475.html

主板虚拟

要在主板上打开虚拟化,首先需要进入BIOS设置界面。不同品牌的主板进入BIOS的按键可能不同,以下是华硕主板的步骤:文章源自玩技e族-https://www.playezu.com/820475.html

  1. 开机时按下F2或DEL键进入BIOS界面。
  2. 在BIOS界面中,使用方向键切换到Advanced选项卡。
  3. 在Advanced选项卡下,选择CPU设置。
  4. 找到Intel Virtual Technology(英特尔虚拟技术)或类似的选项。
  5. 将Intel Virtual Technology的设置改为Enabled(启用)。
  6. 完成设置后,按下F10键保存并退出BIOS。

请注意,不同品牌的主板可能会有不同的BIOS设置步骤,因此请根据主板的品牌和型号调整上述步骤。如果BIOS设置界面与上述描述不符,请参考主板提供的用户手册或访问官方网站获取具体的BIOS设置指南。文章源自玩技e族-https://www.playezu.com/820475.html

文章源自玩技e族-https://www.playezu.com/820475.html

2、系统:确保是干净的操作系统,没有安装过其它环境(已有环境不可安装);主控(Web面板)建议使用CentOS 8 stream、CentOS 7.9;计算节点(生产KVM的母鸡)建议使用centos 8 stream(强烈建议)、CentOS 7.9文章源自玩技e族-https://www.playezu.com/820475.html

3、主控:建议将所有容量分配到 / ,磁盘最低20G,配置建议:4核4G  / 50G;如果主控安装到虚拟机,建议内存不低于4GB文章源自玩技e族-https://www.playezu.com/820475.html

4、节点/分区需大于10G 其余都分配到/home分区,文章源自玩技e族-https://www.playezu.com/820475.html

5、系统采用KVM+OVS架构文章源自玩技e族-https://www.playezu.com/820475.html

6、服务器需放行的端口:

l 计算节点(生产KVM的母鸡):ssh端口和4432端口;

l 主控服务器:80、8443、443、ssh端口;

l VNC控制台端口范围:10000-30000;

l 魔方云程序管理端口:4000-5000;

l  转发与建站的默认端口范围:20000~60000

注意事项

1、同一个服务器上,如果主控(WBE面板)和计算节点(生产KVM的母鸡)分开部署,请先部署主控后部署计算节点

2、一个主控面板可以同时管理魔方云4种业务模式,一个服务器不能部署多种类型的计算节点

3、为避免误操作,请勿将主控安装在魔方云的实例中,或者迁移至魔方云的实例中

4、部署脚本的服务器要求支持虚拟化/关闭SELINUX

5、安装之前,请获取授权码

6、请执行脚本下载安装包进行部署,切勿直接拷贝文件部署

脚本部署

1、SSH进入准备好的服务器,执行安装脚本命令

wget https://mirror.cloud.idcsmart.com/cloud/scripts/install-zjmf-cloud_new -O install-zjmf-cloud_new && chmod +x install-zjmf-cloud_new && ./install-zjmf-cloud_new

2、如需使用Trunk类型的节点,则执行下面这个命令

wget https://mirror.cloud.idcsmart.com/cloud/scripts/install-zjmf-cloud_new -O install-zjmf-cloud_new && chmod +x install-zjmf-cloud_new && ./install-zjmf-cloud_new -t

3、根据命令提示,选择需要安装的系统

WPS图片(1).png

4、根据命令提示,输入授权码

WPS图片(1).png

5、授权码校验成功后,选择需要安装的版本

WPS图片(1).png

6、选择用于实例访问外部网络的网卡

WPS图片(1).png

评论后刷新
由于本站被大量采集,顾添加评论验证防止因采集造成的网络崩溃

7、确认选择无误后,进入脚本自动安装流程,期间不需要任何操作,保持服务器正常运行即可

WPS图片(1).png

8、脚本安装完毕,会输出主控登陆信息,根据该信息进入魔方云web控制面板

WPS图片(1).png

9、如果是选择的同时安装WEBUI主控和计算节点,则节点信息会被默认添加在节点管理列表中

WPS图片(1).png

 

 

10、如果单独部署的计算节点(会输出鉴权账号和密码),则需要在主控面板手动添加节点,节点类型选择KVM加强版

WPS图片(1).png

显卡直通

知识拓展
GPU 直通

GPU 直通主要是利用 PCIe Pass-through 的技术,将物理主机上的整块 GPU 显卡直通挂载到虚拟机上使用,与网卡直通的原理类似,需要主机支持 IOMMU。这种方案有利有弊:

优势
  • 通用性好,大部分的 GPU 卡型号都支持直通功能。
  • 兼容性好,直通 GPU 在虚拟机中识别的显卡型号与物理显卡一致,直接安装官方驱动,可无损使用 GPU 的各项特性和功能。
  • 性能损失小,直通 GPU 性能接近物理机,性能损失一般低于 5%。
限制
  • 一张 GPU 卡不能同时直通给多个虚拟机使用,相当于虚拟机独占了 GPU 卡。如果多个虚拟机需要同时使用 GPU,需要在服务器中安装多块 GPU 卡,分别直通给不同的虚拟机使用。
  • 拥有直通 GPU 的虚拟机不支持在线迁移。
vGPU

为了应对 GPU 直通带来的限制,vGPU 技术应运而生:将 GPU 卡上的资源进行切分,切分后的 GPU 资源可分配给多台虚拟机使用。vGPU 技术相对 GPU 直通技术要更为复杂:GPU 拥有多种切分方式和不同切分粒度,使得 vGPU 方案有很多种组合。下面以 NVIDIA vGPU 为例进行说明。

vGPU 切分方式
Time-sliced

Time-sliced 切分方式是按时间切分 GPU,每个 vGPU 对应物理 GPU 一段时间内的使用权。此方式下,vGPU 上运行的进程被调度为串行运行,当有进程在某个 vGPU 上运行时,此 vGPU 会独占 GPU 引擎,其他 vGPU 都会等待。所有支持 vGPU 技术 GPU 卡都能支持 Time-sliced 的切分方式。

图 3:NVIDIA GPU 虚拟化 - Time-sliced 模式原理示意

Multi-Instance GPU (MIG)

MIG 模式将物理 GPU 划分为多个分区(vGPU),vGPU 是一个单独的实例,可以独占访问实例的引擎。多个 vGPU 上运行的进程并行运行。MIG 是基于 NVIDIA Ampere GPU 架构引入的,仅有 Ampere 架构的 GPU 型号才能使用 MIG 方式。MIG 可将 GPU 划分为多达七个实例,每个实例均完全独立于各自的高带宽显存、缓存和计算核心。

图 4:NVIDIA GPU 虚拟化 - MIG 模式原理示意

显存切分

将 GPU 切分后,还需要切分对应的显存,因为 GPU 是无法直接访问计算机内存的,只能直接访问显存。显存切分需要遵循以下几个特点:

  • 按照显存进行切分,切分后每个 vGPU 的显存大小是固定的,无法动态调节。
  • 每一个物理 GPU 核心(一块显卡可能有多个 GPU 核心)同时仅能按照一种显存大小的规格进行切分。
  • 同一显卡上的不同物理 GPU 核心可以同时切分为不同类型的 vGPU。

*关于常见显卡对切分方式的支持情况,请见文末附录。

vGPU 系列

NVIDIA 对同一款显卡可支持多种切分的方案,基于不同的切分方案可适应不同用户工作负载类。因此 NVIDIA 将其显卡分为 4 个 vGPU 系列:

系列工作负载目的
Q-series强调图形处理能力,针对需要 Quadro 技术性能和功能的创意和技术专业人士的虚拟工作站
C-series计算密集型服务器的工作负载,针对人工智能、深度学习或高性能计算场景
B-series面向商务专业人士和知识工作者的虚拟桌面(如:XenDesktop)
A-series面向虚拟应用(如:XenApp)用户的应用流式传输或基于会话的解决方案

表 2

以 NVIDIA A40 这款显卡为例,它可以支持全部 4 种系列的 vGPU 切分方案,而各 vGPU 系列又可以按照切分 GPU 数量分为不同的型号。

vGPU 型号系列目标用户场景搭配 vGPU 软件许可
A40-48Q/……等 10 种型号Q 系列虚拟工作站vWS
A40-48C/……等 7 种型号C 系列AI 训练vCS 或者 vWS
A40-2B/……等 2 种型号B 系列虚拟桌面vPC 或者 vWS
A40-48A/……等 10 种型号A 系列虚拟应用vWS

表 3

vGPU 软件许可

上述提到 vGPU 切分功能是由 GPU 硬件支持的,但虚拟机要真正使用 vGPU 功能还需要搭配相关 NVIDIA GRID vGPU 软件许可才能使用。大致机制是:当带有 vGPU 设备的虚拟机启动后,需从 NVIDIA vGPU License 服务器获取 license,才能正常激活 vGPU 的相应功能,否则无法正常使用;当虚拟机关闭时,license 将被 License 服务器重新回收。

NVIDIA GPU 提供以下的 NVIDIA GRID 授权产品:

  • vWS:虚拟工作站(Virtual Workstation)
  • vCS:虚拟计算服务器(Virtual Compute Server)
  • vPC:虚拟 PC(Virtual PC)
  • vApp:虚拟应用程序(Virtual Application)

同时需要注意一点:vGPU 系列与 vGPU 授权许可需要正确搭配才能正常工作。以下是 vGPU 系列与 vGPU 授权许可的搭配关系。

GRID License 类型支持的 vGPU 类型
vAppsVirtual ApplicationA 系列
vCSVirtula Compute ServerC 系列
vPCVirtual PCB 系列
vWSVirtual WorkstationQ 系列、C 系列、B 系列

表 4

要求与限制
硬件要求
IOMMU

虚拟化/超融合平台支持 GPU 直通或者 vGPU 的前提是: CPU 需支持 IOMMU 功能。I/O Memory Management Unit (IOMMU) 是一种硬件设备,用于管理输入/输出设备(I/O设备)与系统内存之间的数据传输和访问。

以下是几个 CPU 厂商的 IOMMU 支持情况:

CPU 厂商对应 IOMMU 功能特性名称
AMDIOMMU
IntelVT-d
海光IOMMU
鲲鹏SMMU

因此,在使用 GPU 直通或者 vGPU 之前,确认 CPU 支持 IOMMU,并在 BIOS 中将该功能保持开启状态,如下图:

SR-IOV

在虚拟化中, single root input/output virtualization (SR-IOV) 是一种出于可管理性和性能原因,对 PCI Express 设备提供隔离的规范。可以说 IOMMU 技术使得 PCIe 设备(如网卡、显卡等)可以直接分配给虚拟机独占使用,有了 SR-IOV 可以在 IOMMU 基础上将 PCIe 设备的资源进行切分,分配给多个虚拟机使用。

因此,如果需要用到 vGPU 功能,需要虚拟化软件、CPU 和 GPU 卡三者同时支持 SR-IOV 功能。CPU 一般会同时支持 IOMMU 和 SR-IOV,也有部分服务器对于 SR-IOV 功能有独立的开关,如果是这种情况,需要 BIOS 中同时开启 SR-IOV 和 IOMMU 。

特性限制
虚拟机热迁移
  • 带直通 GPU 的虚拟机是无法执行虚拟机的热迁移的,虚拟机只能在关机状态下迁移主机。
  • 带 vGPU 功能的虚拟机一般情况下也是不支持热迁移或者是受限条件下支持。
    例如 VMware vSphere 的虚拟机可以支持带 vGPU 的虚拟机执行在线迁移,但前提是目标主机需要拥有源主机一样型号和配置的 GPU 卡和资源,并且在迁移过程中会引起虚拟机短暂时间无法访问,无法访问的时间取决于 GPU 显存大小和虚拟机的内存的大小,现存和内存时间越大,虚拟机的中断时间就越长。最坏的情况下中断时间可能长达 99 秒(不是迁移时长,是虚拟机无法访问时长)。
虚拟机高可用
  • 带直通 GPU 的虚拟机可能无法正常触发 HA 的,因为无法确保目标主机拥有空闲的、型号一致可直通的 GPU 设备。
  • 带 vGPU 的虚拟机的也可能无法正常触发 HA 的,原因与直通 GPU 类似。
GPU 卡支持情况

以下列表中的显卡型号已在 SMTX OS 5.1 已获得支持,未来将持续更新显卡支持列表。

显卡型号GPU 直通vGPU 切分
NVIDIA Tesla T4支持Time-sliced
NVIDIA Tesla V100支持Time-sliced
NVIDIA A30支持Time-sliced
NVIDIA A6000支持Time-sliced
NVIDIA A40支持Time-sliced
NVIDIA A16支持Time-sliced
附录

NVIDIA 常见显卡 vGPU 切分模式的支持情况:

GPU 型号vGPU 切分方式支持
Since 15.2: NVIDIA L4Time-sliced
Since 15.1: NVIDIA L40Time-sliced
Since 15.1: NVIDIA RTX 6000 AdaTime-sliced
NVIDIA A2Time-sliced
NVIDIA A10Time-sliced
NVIDIA A16Time-sliced
NVIDIA A30Time-sliced
MIG-backed
NVIDIA A30XTime-sliced
MIG-backed
NVIDIA A40Time-sliced
NVIDIA A100 HGX 40GBTime-sliced
MIG-backed
NVIDIA A100 PCIe 40GBTime-sliced
MIG-backed
NVIDIA A100 HGX 80GBTime-sliced
MIG-backed
NVIDIA A100 PCIe 80GBTime-sliced
MIG-backed
NVIDIA A100 PCIe 80GB liquid cooledTime-sliced
MIG-backed
NVIDIA A100XTime-sliced
MIG-backed
NVIDIA A800 PCIe 80GBTime-sliced
MIG-backed
NVIDIA A800 PCIe 80GB liquid cooledTime-sliced
MIG-backed
NVIDIA A800 HGX 80GBTime-sliced
MIG-backed
Since 15.2: NVIDIA H800 PCIe 80GBTime-sliced
MIG-backed
NVIDIA H100 PCIe 80GBTime-sliced
MIG-backed
NVIDIA RTX A5000Time-sliced
NVIDIA RTX A5500Time-sliced
NVIDIA RTX A6000Time-sliced
Tesla T4Time-sliced
Quadro RTX 6000Time-sliced
Quadro RTX 6000 passiveTime-sliced
Quadro RTX 8000Time-sliced
Quadro RTX 8000 passiveTime-sliced
Tesla V100 SXM2Time-sliced
Tesla V100 SXM2 32GBTime-sliced
Tesla V100 PCIeTime-sliced
Tesla V100 PCIe 32GBTime-sliced
Tesla V100S PCIe 32GBTime-sliced
Tesla V100 FHHLTime-sliced

第一步主板BIOS需启用 IOMMU / VT-d、bove 4G Decoding、SR-IOV

  • IOMMU:是一种地址映射技术,而 VT-d 是 Intel 对该技术的别称
  • Above 4G Decoding:关系到 PCI-E 设备 RAM 的 64 位寻址能力,通常用于需要让 CPU 访问全部显存的场景,使用 vGPU 时推荐开启
  • SR-IOV:允许一个 PCI-E 设备被多个虚拟机使用,常用于网卡等设备共享。

第二步确认CPU硬件是否支持虚拟化、关闭selinux

# 核查是否支持cpu虚拟化
egrep -o '(vmx|svm)' /proc/cpuinfo

# 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

第三步:CPU启用iommu

# intel_iommu=on iommu=pt
# Intel添加: rd.driver.pre=vfio-pci intel_iommu=on video=efifb:off,vesafb:off
# AMD添加:   rd.driver.pre=vfio-pci amd_iommu=on video=efifb:off,vesafb:off
[root@sv-gpu-node-001 ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs00/root rd.lvm.lv=cs/swap rhgb quiet rd.driver.pre=vfio-pci intel_iommu=on video=efifb:off,vesafb:off"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

第四步更新grub

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

#    参数说明:
#        vfio-pci 显卡直通虚拟话需要的驱动
#        iommu开启直通分组
#        efifb:off 禁用efi启动的显示设备
#        vesafb:off 禁用legacy启动的显示设备

第五步加载显卡直通所需的驱动模块

cat > /etc/modules-load.d/vfio.conf << EOF
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
EOF

第六步禁用原本的英伟达显卡驱动和开源驱动nouveau,避免直通出错

cat > /etc/modprobe.d/blacklist.conf << EOF
blacklist nouveau
blacklist nvidia
options nouveau modeset=0
EOF

第七步重构

# 先备份
    mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
# 重建
    dracut /boot/initramfs-$(uname -r).img $(uname -r)
# 重启
    reboot

第八步:验证

# 验证IOMMU是否开启
[root@sv-gpu-node-001 ~]# dmesg | grep -e DMAR -e IOMMU
[    0.000000] ACPI: DMAR 0x000000007DF6D650 000160 (v01 A M I  OEMDMAR  00000001 INTL 00000001)
[    0.000000] ACPI: Reserving DMAR table memory at [mem 0x7df6d650-0x7df6d7af]
[    0.000000] DMAR: IOMMU enabled

# 这是未屏蔽开源显卡驱动的情况
[root@localhost ~]# lsmod | grep nouveau
nouveau              2355200  4
video                  53248  1 nouveau
mxm_wmi                16384  1 nouveau
wmi                    32768  2 mxm_wmi,nouveau
drm_display_helper    151552  1 nouveau
i2c_algo_bit           16384  2 ast,nouveau
drm_kms_helper        167936  5 drm_vram_helper,ast,drm_display_helper,nouveau
drm_ttm_helper         16384  3 drm_vram_helper,ast,nouveau
ttm                    81920  3 drm_vram_helper,drm_ttm_helper,nouveau
drm                   577536  13 drm_kms_helper,drm_vram_helper,ast,drm_display_helper,drm_ttm_helper,ttm,nouveau

# 这是已经成功屏蔽开源显卡驱动的情况(这是期待的结果-表示成功)
[root@localhost ~]# lsmod | grep nouveau
[root@localhost ~]# 

# 如下分别是禁用nvidia驱动后,未分配给虚拟机使用 和 已分配给虚拟机使用 的情况
[root@localhost ~]# lspci -v -s  85:00.0
85:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2) (prog-if 00 [VGA controller])
    Subsystem: NVIDIA Corporation Tesla M10
    Flags: bus master, fast devsel, latency 0, IRQ 304, NUMA node 1, IOMMU group 78
    Memory at f8000000 (32-bit, non-prefetchable) [size=16M]
    Memory at 39ffa0000000 (64-bit, prefetchable) [size=256M]
    Memory at 39ffb0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at c000 [size=128]
    Capabilities: [60] Power Management version 3
    Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [78] Express Endpoint, MSI 00
    Capabilities: [100] Virtual Channel
    Capabilities: [258] L1 PM Substates
    Capabilities: [128] Power Budgeting <?>
    Capabilities: [420] Advanced Error Reporting
    Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
    Capabilities: [900] Secondary PCI Express
    Kernel driver in use: nvidia    # 这是还未直通给虚拟机用时
    Kernel modules: nouveau, nvidia_drm, nvidia

[root@localhost ~]# lspci -v -s  85:00.0 
85:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2) (prog-if 00 [VGA controller])
    Subsystem: NVIDIA Corporation Tesla M10
    Flags: fast devsel, IRQ 38, NUMA node 1, IOMMU group 76
    Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
    Memory at 39ffe0000000 (64-bit, prefetchable) [size=256M]
    Memory at 39fff0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at e000 [size=128]
    Capabilities: [60] Power Management version 3
    Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [78] Express Endpoint, MSI 00
    Capabilities: [100] Virtual Channel
    Capabilities: [250] Latency Tolerance Reporting
    Capabilities: [258] L1 PM Substates
    Capabilities: [128] Power Budgeting <?>
    Capabilities: [420] Advanced Error Reporting
    Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
    Capabilities: [900] Secondary PCI Express
    Kernel driver in use: vfio-pci    # 这是已经直通给虚拟机用后
    Kernel modules: nouveau, nvidia_drm, nvidia

第九步:业务管理—》实例管理—》创建  等待实例安装完成。

第十步:将显卡PCI选中

第十一步:安装显卡驱动

去虚拟化

评论后刷新
由于本站被大量采集,顾添加评论验证防止因采集造成的网络崩溃
玩技站长微信
添加好友自动发送入群邀请
weinxin
rainbow-shownow
玩技官方公众号
官方微信公众号
weinxin
PLAYEZU
 最后更新:2024-3-18
  • 版权提示:本站仅供存储任何法律责任由作者承担▷诈骗举报◁▷新闻不符◁▷我要投稿◁
    风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系2523030730
    免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加联系方式以免受骗。
  • 原创转载:https://www.playezu.com/820475.html
    转载说明: 点我前往阅读>>>
匿名

发表评论

匿名网友
确定