「记录」使用PCI设备直通技术在vSphere中部署基于Ubuntu Server 1804的GPU服务器

大约在两年前我撰写了一篇文章记录我为实验室部署GPU云的核心过程。现在给学院部署GPU云,本以为可以照着原来的文章很顺利就可以装完,结果却搞得心态爆炸,一度怀疑人生,所以很有必要再写一篇记录一下。

环境:

实体机:曙光 天阔 W780-G20
操作系统: VMware ESXi, 6.7.0, 14320388
管理平台: VMware vCenter Server Appliance, 6.7.0, 15129973
GPU:NVIDIA GP100GL [Tesla P100 PCIe 16GB] ×8

先简单说一下部署环境和上次的区别:第一是平台不再是商业大厂DELL EMC,很多文档资料缺失;第二是底层esxi和管理平台vcenter都升级到了6.7;第三是虚拟机准备安装Ubuntu Server 1804,之前的16在21年来看有点过老。最关键的是第四点:显卡质量和数量都上了一个巨大台阶,原来单台机器最多3卡(一个泰坦X,两个泰坦XP),遇到的显存最大的卡应该就是p40。当时在安装p40的时候就遇到奇怪的问题,为此还写了一篇记录文章。这次遇到的核心问题和p40那次应该是同一个,都是高级显卡显存过大,需要一些特定的底层配置参数,vmware专门有博客文章(下简称博文)进行了介绍,但是我一开始寻找解决方案的方向有很大偏差,绕了一大圈才找到。

让我一度怀疑人生的核心问题

0. 准备工作

0.1. 主机BIOS设置

根据博文内容,需要在运行虚拟GPU服务器的esxi主机的BIOS设置中查找并开启类似这样的选项:“above 4G decoding”、“memory mapped I/O above 4GB”、“PCI 64-bit resource handing above 4G”

启用BISO中的相关设定

0.2. 配置PCI设备直通

在esxi主机中配置好显卡的设备直通

0.3. 上传系统安装镜像

将ubuntu server 1804安装镜像上传到主机数据存储

1. 创建虚拟机

⚠️注意:必须在vsphere client中创建虚拟机,不可以在本地workstation创建虚拟机安装后再上传

首先按照常规方法创建虚拟机,创建后不要启动!按以下步骤进行预先配置。

1.1. 设置虚拟机引导方式为EFI

为虚拟机的“引导选项”中启用EFI

在虚拟机页面,“操作”→“编辑设置”→“虚拟机选项”→“引导选项”→“固件”,选择“EFI”。

1.2. 设置虚拟机高级配置参数

虚拟机选项中的高级选项卡

在刚才1.1的“引导选项”下方找到“高级”,点击“配置参数”右侧的“编辑配置”,进入高级参数配置窗口。

高级参数配置窗口

在窗口中点击“添加配置参数”,然后添加2条

⚠️注意:“pciPassthru.64bitMMIOSizeGB”条目的值需要根据虚拟机具体直通的显卡型号和数量进行计算后得出!

博文中提供了一种简单估算方法:GPU个数 × 一块GPU的显存大小(GB为单位),然后将结果向上取整到下一个2的整数次幂。

例如,要给这个虚拟机直通两个p100显卡,则值应为:2 × 16 = 32,向上取整到下一个2的整数次幂,得到64。但如果是直通v100显卡,64则只能直通一块,因为v100单卡显存就是32G,想要直通两块就需要改为128。

⚠️注意:与通常情况不同的是不可以添加“hypervisor.cpuid.v0 = FALSE”参数!

1.3. 修改虚拟机兼容性

选择升级虚拟机兼容性

在虚拟机页面,“操作”→“兼容性”→“升级虚拟机兼容性”,打开“配置虚拟机兼容性窗口”。

配置虚拟机兼容性窗口

将虚拟机兼容性改为:ESXi 6.7 Update 2 及更高版本

2. 安装操作系统

现在可以进行第一次开机,并按照提示安装操作系统。安装后,顺便进行基本的系统配置,例如换源、配置网络、软件包升级等。

3. 为虚拟机添加显卡直通

3.1. 启用内存预留

启用内存预留

在虚拟机页面,“操作”→“编辑设置”→“虚拟硬件”→“内存”,勾选“预留所有客户机内存(全部锁定)”。

3.2. 添加显卡设备

添加显卡设备

在虚拟机页面,“操作”→“编辑设置”→“虚拟硬件”→“添加新设备”→“PCI 设备”,然后在PCI设备选项中选择需要添加的显卡。

4. 安装NVIDIA驱动和CUDA

4.1. 检查GPU

4.2. 禁用nouveau

4.3. 安装依赖包

4.4. 安装NVIDIA驱动

默认已经下载好驱动文件

4.5. 安装CUDA

[记录]英伟达Tesla K80显卡直通出现未知错误

  实验室添置了新显卡,超微塔式服务器没地方了,只好把旧显卡换到戴尔刀片里,之后在做显卡直通的时候遇到一些莫名其妙的问题,折腾了好久才解决,在这记录一下。

环境:

实体机:DELL PowerEdge R730
操作系统: VMware ESXi, 6.5.0, 6765664
管理平台: VMware vCenter Server Appliance, 6.7.0.21000, 11726888
设备: Nvidia Tesla K80

  问题是这样的:在主机上开虚拟机,并直通其他PCI设备(usb控制器),一切正常,且虚拟机正常启动,正常识别设备。给虚拟机直通Nvidia Tesla K80,虚拟机无法开机,报未知异常,如下图:

  尝试了很多国内外常见的解决方案都无法生效。怀疑是跟显卡型号有关,最后在官方社区找到一个出现完全相同问题的讨论:Passing through Tesla k80 Issue…。下面有一个官方人员的回答是:

Re: Passing through Tesla k80 Issue…

A previous version of this post included advice to add two VMX file entries (efi.legacyBoot.enabled and efi.bootOrder) as part of the solution. These two settings should NOT be used. Instead, following the directions below.
 ——–
You should be able to pass a single GPU (that is, half of a K80) to a VM running on ESX 6 by creating an EFI-bootable VM, doing an EFI installation of your guest OS, and then adding the following to the VM’s VMX file.
pciPassthru.use64bitMMIO=”TRUE”
Trying to pass more than one of these GPUs into the same VM will currently hit a platform memory limit and the VM will fail to boot. (NOTE: This limit has been removed in ESX 6.5).
A smaller card like the K2 does not have this issue: GPGPU Blog Entry
If the above does not work for you, send me email directly at “simons at vmware dot com”. In either case, please share your experience with others on the thread.
And if you have any other questions about running HPC applications in a VMware environment, I’d be happy to hear from you directly.
If you are interested in learning more of what we’ve been doing related to HPC, you can check out our HPC entries on the VMware CTO blog site here: HPC Blog Entries
 
Josh Simons
High Performance Computing
Office of the CTO
VMware, Inc.

  关键是要添加以下高级参数:

HP Microserver Gen8 微型服务器折腾记

得知研一的奖学金是每人平均分后兴奋地买了种草已久的HP Microserver Gen8。在经历漫长的德国直邮和配置升级之后,终于在上周末开始准备上电装系统。现在已经基本完成了计划,在此记录一下。

这台微型服务器首先是要取代我旧的下载机,其次还要为以后用作数据、媒体中心准备,因此我决定直接安装虚拟化环境。虚拟化环境最出名的就是VMware的vSphere产品了,我要使用的是其中的ESXi。

首先下载HP定制版ESXi6.5系统镜像:

HP定制镜像下载页:https://www.hpe.com/us/en/servers/hpe-esxi.html

HPE Custom Image for ESXi 6.5U1 Install CD:https://my.vmware.com/cn/group/vmware/details?downloadGroup=OEM-ESXI65U1-HPE&productId=614

文件为:VMware-ESXi-6.5.0-Update1-6765664-HPE-650.U1.10.1.5.26-Oct2017.iso ,SHA1:58685a1d662f9fb798d2ccb28376811f1b78090a

直接使用iLO远程挂载镜像,注意必须在win7中用ie打开远程控制台,win10有安全限制,chrome会识别为文件下载!

安装前尽量把非目标硬盘都断开连接,只接目标硬盘,我选择安装在主板上的U盘里。安装过程中按照提示选择即可。安装完成后,注意进BIOS改硬盘模式。默认是使用RAID模式,ESXi里只能看到U盘和RAID卡,除非配置好RAID卡上的硬盘组,否则不会显示硬盘。手动切换到AHCI模式后,就可以在ESXi里直接管理硬盘了。

在安装好用来取代之前下载机的虚拟机后,要配置硬盘直通,把旧下载机的硬盘直通给新下载机。ESXi不能简单的直通硬盘,因为硬盘不是设备,只能直通硬盘控制器,但是这样的话所有的硬盘都只能给一个机器用,显然是不合理的。也不能使用扩展卡,因为这样会占用显卡安装位。因此要用RDM技术来间接实现硬盘直通,这种技术是创建一个的特殊 .vmdk 文件(一个文本文件)映射到一块物理磁盘,当虚拟机向这块 VMDK 写入时,实际写入的是后面的物理磁盘。

1、在ESXi 中打开 SSH 访问,并远程登录。

2、寻找需要直连的磁盘路径,一般在/vmfs/devices/disks/目录下

CC(_857X_[H688DG[I_]G~T

3、创建RDM映射

可选参数-z或-r
-r 参数创建的是 Virtual Compabilitiy Mode RDM,即 ESXi 会截获除 READ / WRITE 之外所有 SATA 指令。
-z 参数则是创建 Physical Compability Mode RDM,即 ESXi 除了 LUN REPORT 指令,其他全部原样传递给物理磁盘。

4、分配.vmdk硬盘给目标虚拟机