在KVM中部署嵌套版本的VMware ESXi 6.7
如果您在Ubuntu服务器上运行KVM,则您已经拥有出色的Type 1虚拟化引擎。幸运的是,如果您需要测试特定于VMware的产品,则始终可以运行嵌套在KVM虚拟机中的ESXi。
在本文中,我将使用运行Ubuntu和KVM的裸机服务器作为类型1虚拟机管理程序。
然后,我将提供有关如何创建运行VMware ESXi的KVM虚拟机,然后通过在ESXi之上部署来宾OS进行烟雾测试的说明。
安装KVM
我假设您正在运行Ubuntu,并且已经按照我之前的文章中的描述安装了KVM并对其进行了烟雾测试。
启用VT-x
您需要确保您的CPU具有VT-x(虚拟化加速)功能,然后您的BIOS已启用VT-x。许多计算机默认情况下在BIOS中将其禁用。
最简单的检查方法是kmv-ok。
$ sudo apt-get install cpu-checker
$ kvm-ok
信息:/ dev / kvm存在
可以使用KVM加速
您还可以使用virt-host-validate进行检查。
$ virt-host-validate
QEMU:检查硬件虚拟化:通过
QEMU:检查设备/ dev / kvm:通过
$ egrep -c'('vmx | svm)'/ proc / cpuinfo(#cpus的值非零)
最后,您应该看到cpuinfo返回的数字大于0。
$ egrep -c'('vmx | svm)'/ proc / cpuinfo
8
如果未启用此功能,请重新引导计算机,然后按特殊功能键(F1 | F2 | F10 | DEL | ESC | alt-S),将您带入BIOS。每个BIOS是不同的,但寻找“虚拟化技术”或“VT-X”。
没有此支持,我们将无法创建嵌套的虚拟化解决方案。
在操作系统中配置VT-x
除了在BIOS级别启用VT-x外,您还需要在Ubuntu OS级别进行配置。在文件“ /etc/modprobe.d/qemu-system-x86.conf”中,设置以下行。
选项kvm_intel nested = 1 enable_apicv = n
选项kvm ignore_msrs = 1
重新启动主机,然后运行以下命令。
#希望返回Y
$ cat / sys / module / kvm / parameters / ignore_msrs
#希望返回N
$ cat / sys / module / kvm_intel / parameters / enable_apicv
#希望返回Y
$ cat / sys / module / kvm_intel / parameters / nested
下载vSphere Hypervisor
在VMware vSphere的虚拟机管理程序ESXi的是一个商业产品,但是当你创建一个帐户,你可以下载60天试用版。
转到此页面,单击“ VMware vSphere Hypervisor(ESXi)6.7”,然后下载“ VMWare vSphere Hypervisor(ESXI ISO)映像(包括VMware Tools)”。大约330Mb。
下载Ubuntu网络安装程序
因为我们在Ubuntu主机上,所以我们为Ubuntu 14.04的网络安装程序下载ISO 。该文件只有57Mb,因此非常适合引导测试。完成后,您应该有一个名为“〜/ Downloads / mini.iso”的本地文件。
创建KVM虚拟机
现在,我们准备创建能够运行ESXi的KVM虚拟机。运行下面的“ virt-install”命令,使其适应任何特定的cpu / disk / ram要求。
virt-install --virt-type = kvm --name = esxi1
--ram 4096 --vcpus = 4
--virt-type = kvm --hvm
--cdrom〜/下载/VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso
--network网络:默认,型号= e1000
--graphics vnc --video qxl
--disk pool =默认,size = 80,sparse = true,bus = ide,format = qcow2
--boot cdrom,hd --noautoconsole --force
--cpu仅主机模型
如果您使用的是旧版本的QEMU,例如Ubuntu Trusty上的2.0,则不要在上面的命令中指定“ –cpu host-model-only”。相反,在创建虚拟机之后,打开virt-manager,转到CPU选项卡,然后按按钮以复制主机CPU配置并强制关闭主机,然后重新打开电源(如下所示)。
这应该会启动机器,但是在开机后需要连接CDROM。根据域xml,您可能必须将其附加为设备“ hdb”或“ hdc”,因此请查看
$ cdrom =`virsh domblklist inst1-详细信息| grep cdrom | awk {'print $ 3'}`
$ virsh attach-disk esxi1〜/ Downloads / VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso $ cdrom --type cdrom --mode只读
采用这种连接到CDROM,继续和复位机,因此可以用它来启动系统。
$ virsh reset esxi1
注意:我在上面的virt-install命令中使用的参数是有意的,并且我尝试引导您解决可能会遇到的几个问题。qxl的视频类型是有意的(cirrus进行了初始设置屏幕循环),磁盘是IDE的目的是为了避免在安装过程中出错,并且网络使用的是通用e1000类型,安装程序可以检测到该类型。
ESXi的受支持硬件列表很窄,因此如果您可以使用其他驱动程序类型来使安装正常运行,那就很好。只是知道我花了一些时间才能使上述组合生效。
安装ESXi
现在应该出现初始ESXi引导菜单。
然后就像一个正常的ESXi安装在许多地方已经网络上如所描述的[ 1,2,3,4 ]。
在欢迎屏幕,按
在默认的美国键盘上按
输入root的初始密码
…正在安装…
重启前断开CDROM的消息
$ virsh attach-disk esxi1“” hdc --type cdrom --mode只读
重启后,您应该看到以下屏幕,其中提供了ESXi服务器的192.168.122.x地址(192.168.122.0/24是KVM使用的默认NAT网络)。
按
ESXi嵌入式主机客户端
使用Web浏览器,转到ESXi启动屏幕中指定的URL(https://
您应该获得登录页面,使用“ root”凭据登录,并且应该看到类似于下面的屏幕,即Embedded Host Client。
该HTML / Javascript应用程序是直接从ESXi主机提供的轻量级管理界面。请注意,它不能用于管理vCenter(例如/ vsphere-client)。
创建虚拟机
请记住,在这一点上,我们在虚拟化引擎中存在多个层次。ESXi正在嵌套在KVM中运行。因此,现在让我们在ESXi内创建一个来宾VM,以确保它可以正常工作。
首先按“创建/注册虚拟机”。
然后选择“创建新的虚拟机”,然后按下一步。
为来宾操作系统键入名称“ esxchild1”,然后选择一个Linux主机,即Ubuntu Linux(64位)。
我们仅为ESXi主机创建了一个80Gb磁盘,因此允许使用默认的datastore1并按Next。
然后出现自定义设置,您可以保留默认的1 vcpu和1024M内存。
但是您应该更改的一件事是CD / DVD驱动器。我们要在本地系统上的“〜/ Downloads / mini.iso”中使用Ubuntu网络安装程序ISO。从下拉列表中选择“数据存储ISO文件”,而不是“主机设备”,然后将显示一个数据存储浏览器。
按“上传”,然后从本地驱动器中选择mini.iso文件。然后单击中间列中的文件,然后按“选择”。这将带您回到主设置窗口,只需确保选中CDROM旁边的“ Connect”即可。
您现在位于完成屏幕上,查看您的选择,然后按完成。
现在,使用左侧的树导航至“ esxchild1”,并注意到电源仍然关闭。继续并按电源按钮。
您应该会看到预览屏幕的更改,Ubuntu徽标将可见。按“控制台”,然后按“打开浏览器控制台”以获取交互式屏幕。
我们将在此处停止此练习,但是可以安装此OS,并且可以将该主机与在KVM下创建的来宾OS完全相同。
稳定性问题
如果您发现ESXi主机经常遇到VMware的“紫色死亡之屏”,请记住,VMware支持的硬件列表很窄,可能与主机硬件或驱动程序不兼容。
通过让KVM对虚拟机使用最新的OVMF UEFI固件,而不是使用随KVM分发的SeaBIOS(非常老),我看到了很多改进。
通过在XML 的
这是我有关构建最新OVMF映像的文章。如果您要遵循旧版固件标准,这是我有关构建最新SeaBIOS映像的文章。这是我关于如何设置
进一步的ESXi配置步骤
这里有几个可选的步骤,可以在管理这个ESXi主机帮助。如果接下来要安装vCenter,则需要考虑强制更改静态IP和主机名–在vCenter安装期间必须强制使用完整DNS和反向IP解析。
静态IP [ 1,2,3 ]
设置静态IP更容易,尤其是在手动管理DNS条目时。这也可以通过ssh会话和Web GUI来完成,但是让我们直接从ESX主机控制台中完成。
选择“配置管理网络> IPv4配置”,然后设置IP,子网和默认网关,如下所示。
主机名和DNS [ 1,2,3 ]
默认名称为“ localhost”,因此如果要通过DNS或vCenter寻址该服务器,则需要更改该名称。选择“配置管理网络> DNS配置”,然后设置短主机名和主DNS服务器。
在上面的屏幕截图中,我将主机名设置为“ esxi1”。要公开标准主机名,请选择选择“配置管理网络>自定义DNS后缀”,然后输入应该附加的域名。通过如下所示将值设置为“ home.lab”,此主机的标准名称将变为“ esx1.home.lab”。
证书再生 [ 1,2,3,4]
ESXi上交付的初始证书是CN = localhost.localdomain。要将其更改为反映真实名称的自签名证书,请使用从SSH会话到ESXi主机的“ generate-certificates”实用程序。
#检查当前证书
cd / etc / vmware / ssl
主机名
主机名-f
openssl x509 -in rui.crt -text -noout | grep主题
#备份证书
tar cvfz /etc-vmware-ssl.tgz *
#生成新证书
/ sbin / generate-certificates
openssl x509 -in rui.crt -text -noout | grep主题
#重新启动服务
/etc/init.d/hostd重新启动
/etc/init.d/vpxa重新启动
如果现在在ESXi Embedded Host Client上刷新浏览器并查看证书,它将显示CN的主机名。请注意,它仍然是自签名证书(因此默认情况下不受信任)。
SSH / SCP访问
如果将ESXi作为目标主机,则较早在控制台上启用ssh访问确实启用了ssh,但仍未启用从ESXi主机启动到另一主机的ssh / scp。您将看到的是“ FIPS模式已初始化”和一个超时。
要使此工作有效,您需要禁用防火墙规则。运行以下命令以检查防火墙规则,然后将其禁用。
esxcli网络防火墙规则集列表--ruleset-id sshClient
esxcli网络防火墙规则集set --ruleset-id sshClient --enabled = true
届时,从ESXi主机启动的scp将起作用。
参考资料
https://docs.vmware.com/cn/VMware-vSphere/6.7/rn/vsphere-esxi-vcenter-server-67-release-notes.html#compatibility(6.7的硬件支持列表)
https://www.pluralsight.com/blog/it-ops/top-vmware-compatibility-issues(顶级兼容性问题)
https://www.thehumblelab.com/vsphere-67-homelabs-unsupported-cpu/(解决incompat问题)
https://tinkertry.com/patch-esxi-6-manually(升级保持vib)
https://xenserver.org/blog/entry/vga-over-cirrus-in-xenserver-6-2.html(使用cirrus)
https://www.redhat.com/archives/libvirt-users/2015-April/msg00067.html(尝试使用原始磁盘而不是qcow2)
https://haveyoutriedreinstalling.com/2017/07/17/vsphere-6-x-certificates-just-because-因为-you-can-doesnt-mean-you-should //(vsphere 6中的证书列表)
https://rwmj.wordpress.com/2014/05/19/notes-on-getting-vmware-esxi-to-run-under-kvm/
笔记
如果ESXi抱怨不支持虚拟化[ 1 ]
ssh进入esxi主机/ etc / vmware / config
vhv.enable =“ TRUE”
vmx.allowNested =“ TRUE”
检查IO和IOMMU的VT-d虚拟化(与CPU VT-x不同)
dmesg | grep -iE“ dmar | iommu | aspm”
cat /var/log/kern.log | grep IOMMU
==添加到18.04中的 / etc / default / grub(对于VT-d)错误
GRUB_CMDLINE_LINUX_DEFAULT =” intel_iommu =开启”
$ grub-install –版本
$ sudo update-grub(相当于grub2-mkconfig)
dnsmasq禁止转发本地地址[ 1 ]
#/etc/dnsmasq.conf
本地= / home.lab /
地址= / esxi1.home.lab / 192.168.122.133
esxi软件组件列表 [ 1 ]
esxcli软件震动列表
直接ESXi主机模式
维护模式 [ 1 ],
vim-cmd主机vc / maintenance_mode_enter
vim-cmd hostsvc / maintenance_mode_exit
从内侧的ESXi安装CDROM [ 1,2 ]
vmkload_mod iso9660
esxcfg-mpath -b | grep“ CD-ROM”
cd / vmfs /卷
ls(请参见mpx。*)
vsish -e集/ vmkModules / ISO9660 /安装$(的esxcfg-的mpath -b | grep的 “CD-ROM” | awk的 '{$打印1}')
vsish -e设置/ vmkModules / iso9660 / umount $(esxcfg-mpath -b | grep“ CD-ROM” | awk'{print $ 1}')
ESXi软件存储库和安装
Add-EsxSoftwareDepot,Get-EsxSoftwarePackage,Add-EsxSoftwarePackage