*本文作者系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
(https://my.vmware.com/zh/web/vmware/evalcenter?p=free-esxi7) 或
(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镜像为例。
增添ESXi 7.0的软件仓库
增添USB网卡驱动的软件仓库
新建软件仓库
新建镜像规范,并添加USB网卡驱动vmkusb-nic-fling,删除vmtools,设定接受等级为VMware certified(可选)。
注意:在本步骤中,可以选择删除更多的集成包以极大地压缩镜像的尺寸,比如设备上不需要的网卡(NIC)和存储卡(HBA)驱动等。如果是在ESXi 6.7镜像中添加PCIe Realtek网卡驱动,切记接受等级要选择社区支持(Community Support)。
导出新镜像。
这个导出的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模式。
之后ESXi应该就可以像在服务器那样正常安装。待安装完成之后,会提示重新启动。
重启设置
重启之后,记得要在看到如上的加载画面时再次迅速按下Shift+O键,同样追加内核参数ignoreHeadless=TRUE。这是因为该参数还没有保存下来,而要在接下来的步骤中保存。在这次重启后,除了设置网卡地址(如果不是DHCP)之外,建议打开SSH和ESXi Shell服务以方便调试。
以命令行方式ssh [email protected] 登录设备后,更改并保存内核参数如下。
esxcfg-advcfg --set-kernel “TRUE” ignoreHeadless
esxcfg-advcfg -–get-kernel ignoreHeadless
验证安装成功
再次重新启动设备,这次就不用键入Shift+O调整内核参数了。现在也可以图形方式登录了。
登录之后可以将之前下载vSphere Hypervisor时免费获取的序列号应用。
手工创建datastore(可选)
对于服务器等大型计算机来讲,一般配置有足够大的存储空间。安装vSphere Hypervisor即ESXi之后,通常就会自动生成至少一个可用的datastore。有了datastore之后才能够创建虚机,部署实际的边缘应用。但对于只有少量存储空间(比如<32GB的USB)的设备来说,可能会遇到安装ESXi之后没有自动创建任何可用datastore的情况。
比如:在ESXi 6.7上,安装系统后的剩余空间不会做任何分区;在ESXi 7.0上,安装基础系统后的空间会建立一个VMFSL的分区,举例如下。这个VMFSL分区实际上没有存储任何数据,而也不可当作正常VMFS分区使用。在虚拟化设备上,绝大多数情况不会使用这个VMFSL分区。我们就此将其删除,释放空间出来手工创建VMFS分区。
登录虚拟化设备
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虚机实例里。
如果同一个虚拟化设备在部署了一个EdgeX Foundry实例之后还有相当的富余资源,就可以再部署若干任何OS支持的其他边缘应用。比如基于Windows IoT Core的Azure IoT Edge、基于Zephyr、Wind River或QNX的“实时”控制软件、基于DOS的遗留系统、基于Android x86的展示牌应用、基于Raspbian或Ubuntu Core的现代边缘应用等。
有两种常见方式来部署虚机镜像:ESXi Web UI的图形方式或者OVF Tools的命令行方式。因为与其他虚机镜像的部署方式一样,这里不再赘述详细的步骤。
透传PCIe和USB设备
在虚拟化设备上部署边缘应用,可能需要设置某些PCIe或USB设备的透传(Pass-through),特别是为了连接现场的传感器、设备内的加速器或者是上云的Wifi和移动通信网卡。这些设置和在数据中心里的方式并无不同,同样不再赘述。
- 未完待续 -
系列文章(三)预告
以如上所述的方式,可以完成安装虚拟化设备、并在其上部署边缘应用的整个流程。这对于开发人员进行开发、测试和小规模实验是可以接受的,但考虑到边缘计算在生产环境下的部署,超大规模、无人看管、远程监控、自动更新等需求,如此手工的方式无法完全解决问题。
下一篇将介绍如何云管理大规模的虚拟化设备。