系列文章(二)丨构造与安装虚拟化设备

*本文作者系VMware中国研发中心研发总监 路广

上一篇文章《边缘计算的探索与实践》总述了云边协同和设备管理的方向,本篇文章将会描述如何利用VMware的免费软件构造与安装虚拟化设备。

第二篇 构造与安装虚拟化设备

vSphere Hypervisor介绍

VMware是全球领先的虚拟化软件、混合云计算和企业用户计算方案提供商,vSphere是其核心的旗舰产品。2020年4月,VMware向全球发布了最新一代的vSphere 7.0产品(https://www.vmware.com/products/vsphere.html) ,提供更多新增功能,特别是全面支持Kubernetes的革命性的Tanzu平台 (https://cloud.vmware.com/tanzu)。

vSphere是应用广泛的虚拟化平台,不仅在服务器,在设备上运行所需的核心功能已包含进了免费产品vSphere Hypervisor (https://www.vmware.com/cn/products/vsphere-hypervisor.html) 中。

已验证的设备规范

这里讨论的是免费vSphere Hypervisor从技术上讲可运行所需要的设备规范,而不是提供商业产品级别支持的vSphere所要求的硬件兼容列表 (https://www.vmware.com/resources/compatibility/search.php)。

已验证来源于多家厂商、符合至少如下硬件规范的约20种型号设备上,从技术上讲可以运行vSphere Hypervisor。

CPU:x86-64 2+ 核心(1GHz+)、支持VT-x/AMD-V指令
内存:4GB (ECC或non-ECC)

存储:SSD/HDD/Flash 16GB

网络:1Gbps有线网卡

下载相关软件

必要软件
注意:下载之前需要先注册账号,才能获取免费的vSphere Hypervisor序列号。ISO镜像是必要的,如果需要定制化镜像,还要下载离线包。

vSphere Hypervisor

  • vSphere Hypervisor 7.0

(https://my.vmware.com/zh/web/vmware/evalcenter?p=free-esxi7) 或

  • vSphere Hypervisor 6.7

(https://my.vmware.com/zh/web/vmware/evalcenter?p=free-esxi6)

可选驱动软件
注意:因为有些设备载有Realtek或其它vSphere 6.x/7.0不提供官方支持芯片的网卡,所以需要到社区网站上自行下载。如

Realtek网卡驱动 (https://vibsdepot.v-front.de/wiki/index.php/Net55-r8168):PCIe接口的Realtek网卡
USB网卡驱动 (https://flings.vmware.com/usb-network-native-driver-for-esxi):USB接口的网卡(含主板自建的、非USB物理接口的网卡)

可选工具软件
注意:命令行和图形两种方式二选一即可。如果希望深度定制ESXi镜像,建议选择vCenter Server。
vCenter Server 7.0 (https://my.vmware.com/cn/web/vmware/evalcenter?p=vsphere-eval-7):通过图形方式构建,注册账号后可下载后免费试用60天,或利用某个已安装的vCenter实例。

VMware PowerCLI (https://code.vmware.com/web/tool/12.0.0/vmware-powercli)12.0:通过命令行方式构建

OVF Tools (https://code.vmware.com/web/tool/4.4.0/ovf) 4.4:命令行方式部署虚机镜像的工具

ESXCLI 7.0 (https://code.vmware.com/web/tool/7.0/esxcli):远程管理ESXi的命令行工具

构建适合设备的定制ESXi镜像
命令行方式
安装VMware PowerCLI的步骤省略,以下以ESXi 7.0添加USB网卡驱动为例。

增添ESXi 7.0的软件仓库

Add-EsxSoftwareDepot .\VMware-ESXi-7.0.0-15843807-depot.zip

增添USB网卡驱动的软件仓库

Add-EsxSoftwareDepot .\ESXi700-VMKUSB-NIC-FLING-34491022-component-15873236.zip

获取ESXi 7.0里的镜像规范名

Get-EsxImageProfile | ft name

从不含vmtools的镜像规范ESXi-7.0.0-15843807-no-tools复制出一份新的镜像规范ESXi7-USB

New-EsxImageProfile -CloneProfile ESXi-7.0.0-15843807-no-tools -Name ESXi7-USBNIC -vendor VMware

将USB网卡驱动vmkusb-nic-fling添加到新创建的镜像规范ESXi7-USB中

Add-EsxSoftwarePackage -ImageProfile ESXi7-USBNIC -SoftwarePackage vmkusb-nic-fling –Force

为新镜像规范ESXi7-USBNIC设置接受等级为VMwareCertified(本步骤为可选)

Set-EsxImageProfile -AcceptanceLevel VMwareCertified -ImageProfile ESXi7-USBNIC

将新镜像规范ESXi7-USBNIC导出为ISO镜像文件ESXi7-USBNIC.iso

Export-EsxImageProfile -ImageProfile ESXi7-USBNIC -FilePath ESXi7-USBNIC.iso -ExportToIso –Force

这个导出的ISO镜像文件ESXi7-USBNIC.iso既可启动安装ESXi 7.0,将其“烧“到USB盘中。

注意:现在社区提供的Realtek PCIe网卡驱动还不支持ESXi 7.0,只能定制ESXi 6.7的镜像文件,步骤类似于上面的例子。

图形方式
也可以利用vCenter Server里的自动部署(Auto Deploy)功能来定制ESXi安装镜像。这样的好处可以很容易地选择增加或删除其他集成包(VIB),即进一步压缩镜像的大小、或添加其他自动部署的Kickstart脚本。这里同样以定制ESXi 7.0镜像为例。

系列文章(二)丨构造与安装虚拟化设备_第1张图片

增添ESXi 7.0的软件仓库

系列文章(二)丨构造与安装虚拟化设备_第2张图片
系列文章(二)丨构造与安装虚拟化设备_第3张图片

增添USB网卡驱动的软件仓库

系列文章(二)丨构造与安装虚拟化设备_第4张图片
在这里插入图片描述

新建软件仓库

系列文章(二)丨构造与安装虚拟化设备_第5张图片

新建镜像规范,并添加USB网卡驱动vmkusb-nic-fling,删除vmtools,设定接受等级为VMware certified(可选)。

系列文章(二)丨构造与安装虚拟化设备_第6张图片
系列文章(二)丨构造与安装虚拟化设备_第7张图片
在这里插入图片描述

注意:在本步骤中,可以选择删除更多的集成包以极大地压缩镜像的尺寸,比如设备上不需要的网卡(NIC)和存储卡(HBA)驱动等。如果是在ESXi 6.7镜像中添加PCIe Realtek网卡驱动,切记接受等级要选择社区支持(Community Support)。

导出新镜像。

系列文章(二)丨构造与安装虚拟化设备_第8张图片

这个导出的ISO镜像文件既可启动安装ESXi 7.0,将其“烧“到USB盘中。

在设备上安装ESXi镜像
连接硬件
在设备上安装ESXi镜像之前要确保该设备具有足够的硬件资源,特别是以上列出的内存(至少4GB)、硬盘(非eMMC、至少16GB)和网络(1Gbps以上有线网卡)。按照该设备的使用手册连接键盘、显示器、U盘、网线等。如配置无显示器接口,需要按设备使用手册,将适当的串口以调试方式连接至显示器。

BIOS设置
在有些设备中,即使有配置4GB内存,但显存是与主内存共享的。在这种情况下,建议在正式安装前在BIOS中把共享显存设置到最小(比如32MB)。

另外,确保在BIOS内的硬件虚拟化指令Intel Virtualization Technology或AMD Secure Virtual Machine设置于Enabled状态,而安全启动Secure Boot或TPM设置于disabled状态。

启动安装
按照BIOS的设置从“烧“好的U盘启动,在看到如下ESXi加载画面时迅速按下Shift+O键,追加内核参数ignoreHeadless=TRUE,这是为了支持Headless模式。

系列文章(二)丨构造与安装虚拟化设备_第9张图片
之后ESXi应该就可以像在服务器那样正常安装。待安装完成之后,会提示重新启动。

重启设置
重启之后,记得要在看到如上的加载画面时再次迅速按下Shift+O键,同样追加内核参数ignoreHeadless=TRUE。这是因为该参数还没有保存下来,而要在接下来的步骤中保存。在这次重启后,除了设置网卡地址(如果不是DHCP)之外,建议打开SSH和ESXi Shell服务以方便调试。

系列文章(二)丨构造与安装虚拟化设备_第10张图片

以命令行方式ssh [email protected] 登录设备后,更改并保存内核参数如下。

esxcfg-advcfg --set-kernel “TRUE” ignoreHeadless

esxcfg-advcfg -–get-kernel ignoreHeadless

验证安装成功
再次重新启动设备,这次就不用键入Shift+O调整内核参数了。现在也可以图形方式登录了。

图形方式https://192.168.0.10/
系列文章(二)丨构造与安装虚拟化设备_第11张图片

登录之后可以将之前下载vSphere Hypervisor时免费获取的序列号应用。

系列文章(二)丨构造与安装虚拟化设备_第12张图片

手工创建datastore(可选)
对于服务器等大型计算机来讲,一般配置有足够大的存储空间。安装vSphere Hypervisor即ESXi之后,通常就会自动生成至少一个可用的datastore。有了datastore之后才能够创建虚机,部署实际的边缘应用。但对于只有少量存储空间(比如<32GB的USB)的设备来说,可能会遇到安装ESXi之后没有自动创建任何可用datastore的情况。

比如:在ESXi 6.7上,安装系统后的剩余空间不会做任何分区;在ESXi 7.0上,安装基础系统后的空间会建立一个VMFSL的分区,举例如下。这个VMFSL分区实际上没有存储任何数据,而也不可当作正常VMFS分区使用。在虚拟化设备上,绝大多数情况不会使用这个VMFSL分区。我们就此将其删除,释放空间出来手工创建VMFS分区。

系列文章(二)丨构造与安装虚拟化设备_第13张图片

登录虚拟化设备
ssh [email protected]
获取目标存储分区表
partedUtil getptbl /dev/disks/t10.SanDisk00Ultra_Fit000000000000004C530001131021105082
这里的关键点是替换最后一项第7分区的UUID为VMFS的AA31E02A400F11DB9590000C2911D1B8,千万不要修改其他任何分区的数据。
获取coredump分区状态
esxcli system coredump partition get
解除coredump分区锁定
esxcli system coredump partition set --enable false
刷新目标存储的分区表
partedUtil setptbl /dev/disks/t10.SanDisk00Ultra_Fit000000000000004C530001131021105082 gpt
“1 64 204863 C12A7328F81F11D2BA4B00A0C93EC93B 128”
“5 208896 2306047 EBD0A0A2B9E5443387C068B6B72699C7 0”
“6 2308096 4405247 EBD0A0A2B9E5443387C068B6B72699C7 0”
“7 4407296 20971486 AA31E02A400F11DB9590000C2911D1B8 0”
在新VMFS分区上创建datastore
vmkfstools /dev/disks/t10.SanDisk00Ultra_Fit000000000000004C530001131021105082:7
现在就能看到一个新的datastore已经创建出来了,可以把它更名为datastore1。

部署边缘应用
接下来,虚拟化设备就可以用来部署边缘应用了。比如Linux基金会旗下的EdgeX Foundry项目 (https://www.edgexfoundry.org/),可以通过Ubuntu虚机镜像成功部署到虚拟化设备上去。在2019年12月的EdgeX Foundry China Day上的工作坊,已经展示过EdgeX Foundry部署在虚拟化设备上正常工作的实例。EdgeX Foundry微服务架构里的10几个容器实例都运行在虚拟化设备内的同一个Ubuntu虚机实例里。

系列文章(二)丨构造与安装虚拟化设备_第14张图片

如果同一个虚拟化设备在部署了一个EdgeX Foundry实例之后还有相当的富余资源,就可以再部署若干任何OS支持的其他边缘应用。比如基于Windows IoT Core的Azure IoT Edge、基于Zephyr、Wind River或QNX的“实时”控制软件、基于DOS的遗留系统、基于Android x86的展示牌应用、基于Raspbian或Ubuntu Core的现代边缘应用等。

系列文章(二)丨构造与安装虚拟化设备_第15张图片

有两种常见方式来部署虚机镜像:ESXi Web UI的图形方式或者OVF Tools的命令行方式。因为与其他虚机镜像的部署方式一样,这里不再赘述详细的步骤。

透传PCIe和USB设备
在虚拟化设备上部署边缘应用,可能需要设置某些PCIe或USB设备的透传(Pass-through),特别是为了连接现场的传感器、设备内的加速器或者是上云的Wifi和移动通信网卡。这些设置和在数据中心里的方式并无不同,同样不再赘述。

系列文章(二)丨构造与安装虚拟化设备_第16张图片

- 未完待续 -

系列文章(三)预告
以如上所述的方式,可以完成安装虚拟化设备、并在其上部署边缘应用的整个流程。这对于开发人员进行开发、测试和小规模实验是可以接受的,但考虑到边缘计算在生产环境下的部署,超大规模、无人看管、远程监控、自动更新等需求,如此手工的方式无法完全解决问题。

下一篇将介绍如何云管理大规模的虚拟化设备。

你可能感兴趣的:(系列文章(二)丨构造与安装虚拟化设备)