登录 | 注册

轻扣指间,静听心声

ESXI 使用记录

发表于 06-03 / 2623 阅读 / 2 评论 / 需时8.6’

强大的ESXI

ESXi专为运行虚拟机、最大限度降低配置要求和简化部署而设计。不管处于什么需求组ALL in one主机,esxi都是最专业,最完美的选择,完全没有之一;其对性能的利用率极高,是其他任何方案都无法比拟的。用ESXI装虚拟机,性能及其接近物理极。

硬件的选择

ESXI对硬件需求非常低。并且既然用上虚拟方案了,尤其又是家用,完全没有必要用多扩展硬直通的方案。
在我的AIO上运行着群晖、WindowsSever、Linux等一共54个虚拟机,你没有看错,是54个虚拟机(平时同时开机运行的大慨有10-15台);在这个情况下,也只是用了主板自带的2个网口。

直通方面仅仅:群晖直通了核显和SATA控制器。
这里强烈不建议把软路由放进esxi里面,我就是AX6硬路由+esxi方案,是我长期实践下来最完美的方案了。

这里说说我的配置:

  • 主板:某10代工控主板
  • cpu:Intel 10900es(qtb1)
  • 内存:玖合DDR4 3200 32G*4 128G
  • 存储:Nvme 1TB2 + SSDsata 1T1 + 西数企业盘16T*5
  • 电源:TT SFX450
  • 散热:利民 AXP120 x67
  • 机箱:宝藏盒nas机箱v1.2
  • 网卡:主板自带千兆2+2.5G2
  • 运行:群晖 x1 + Server2022 x1 + Server2012R2 x2 + MXlinux x50

一共54台虚拟机

版本选择

没有特殊需求,6.7就是最完美选择,硬件支持良好,各种集成驱动版本都能方便下载,稳定一流!
我的主板网卡支持esxi8,所以用新不用旧了。

安装配置

这部分内容又多又简单,图文不如视频;如果完全不了解的话,去B站找个视频,照着做就行!

更换系统默认SSL证书和密钥

首先申请并下载(nginx)证书, 重命名.crt和.key文件为rui.crt和rui.key,并替换/etc/vmware/ssl 目录下的两个文件。
执行以下命令

/etc/init.d/hostd restart
/etc/init.d/vpxa restart

搞定,这下访问安全了。

直通sata控制器和核显

重要说明:

a,直通sata控制器的前提是系统和虚拟机没有安装在sata上(可以装在nvme盘),否则直通后就悲剧了。
这里更新一下,esxi8.0即便你直通了系统所在硬盘照样能开机,良心啊!
b,一般网卡和核显是默认可以直通的,而sata控制器是不能直接直通的,网上有很多sata控制器的教程跟着做就行,一般无坑。
c,注意passthru.map竖向空格格式对应(网上这么说的,我没故意不对齐~)

1,直通sata控制器

编辑/etc/vmware/passthru.map,在文本末端加入:

#Intel Corporation SATA controller
8086    6d2     d3d0    false

esxi-passthrou-satacontroller.png

解释:8086代表厂商(Intel),6d2是设备我的设备id(硬件不同这个有区别),d3d0 和 false 默认就行

2,直通核显

参照sata控制器直通:

#Intel VGA compatible controller
8086    9bc8    d3d0    false

这样配置之后,对应的虚拟机启动时就不会报错了,猜测应该是后台虽然默认显示支持核显直通,而其实是不行的,需要手动强制支持。

我的passthru.map 具体配置如下

esxi-2.png

许可证

6.7

HV4WC-01087-1ZJ48-031XP-9A843
NF0F3-402E3-MZR80-083QP-3CKM2
4F6FX-2W197-8ZKZ9-Y31ZM-1C3LZ
JZ2E9-6D2DK-XZQD0-632E4-33E7Z
MZ48M-DNK56-ZZJD0-RTCE2-9321X
0Y0AJ-4P29H-LZV81-59AQ2-C291V
0A65P-00HD0-3Z5M1-M097M-22P7H

8.0

4V492-44210-48830-931GK-2PRJ4

集成驱动镜像

可以去GXNAS下载,当然,恩山,甚至B站都有,很容易找到的。

更改主机名

可能,如图直接进去改

esxi-change-hostname.png

或者编辑hosts

/etc/hosts

or,运行以下命令:

esxcfg-advcfg -s hostname /Misc/hostname

其中 hostname 为 ESX 主机的新 FQDN 主机名。
重新引导 ESX 主机。

Esxi开启 Shell Web 界面

Win-OS 下使用 Xshell、PuTTY、MobaXterm 等工具,远程 SSH 管理后台,命令行下输入

dcui

Mac-OS 下使用自带终端工具进入,再命令行下输入如下

TERM=xterm 
dcui

操作与接键鼠显示器操作一致。

备份还原

esxi的虚拟机备份直接通过虚拟机文件(夹)的备份即可。
esxi后台->存储->datastore1(你要备份的虚拟机所在存储池)->位置
比如我的位置是:
/vmfs/volumes/63f80b66-7d236391-ffd6-22216c08004b
那么我只需要用相关软件把这下面的虚拟机文件夹整个下载下来就行。

这里要知道,如果用winscp的话由于是单线程传输且需要解密传输,速度会非常慢。建议使用psftp(putty自带)

1.打开psftp
2.open root@192.168.10.21
3.cd /vmfs/volumes/63f80b66-7d236391-ffd6-22216c08004b
4.lcd C:\Users\zizdog\Downloads
5.get -r Dr32

2:连接esxi主机
3:切换服务器路径
4:设置本地路径
5:下载(-r:递归下载整个文件夹)

之后上传到新的服务器上用:put -r Dr32即可。

一些问题

问题0:
esxi部分硬件直通后,提示“已启用/需要重新引导”,重启后依然提示“已启用/需要重新引导”的解决方法
这个问题一般出现在网卡或显卡上。

解决:
设置成直通以后,在ESXI菜单-管理-高级设置,输入“ACScheck” 搜索,修改 falsetrue

问题1:接问题0:
部分显卡直通后每次重启宿主机会显示“已启用/需要重新引导”;即便已经设置问题0的办法,仍旧不行,而且一般手动切换两次(esxi7-8可以)就好了,不过这样对应的虚拟机就不能开机自启动了。

解决:
关闭ESXI显卡调用即可:开启ssh,终端登录并执行:

esxcli system settings kernel set -s vga -v FALSE

问题2:
直通Nvidia显卡后,虚拟机须无法启动,提示:“打开虚拟机电源状态模块“DevicePowerOn“打开电源失败。”
这个问题比较棘手,解决分为三步:

解决:

1,BIOS设置

启用Above 4G;关闭Resizebar

2,虚拟机配置

编辑虚拟机选项、高级、配置参数,添加如下参数

pciPassthru.use64bitMMIO="TRUE"
pciPassthru.64bitMMIOSizeGB="16"
hypervisor.cpuid.v0 = "FALSE"

详细说明:
第1个条目是:
pciPassthru.use64bitMMIO="TRUE"

第2个条目需要简单的计算。将想要传递到虚拟机的所有GPU设备(*)的GPU内存大小相加,然后四舍五入到下一个2的次幂。例如,要在具有 4 个 16 GB A2 设备的情况下使用直通,该值将为:32 + 32 = 64,四舍五入到下一个2的次幂,结果为128。
我用的3060 12g,因此在第二个条目中使用值“16”:
pciPassthru.64bitMMIOSizeGB="16"

第3个条目是:
hypervisor.cpuid.v0 = "FALSE"
设置成FALSE的意义为欺骗虚拟Windows系统没有运行在虚拟机中;如果不设置,显卡最终在虚拟机中无法驱动,会提示设备停止运行,代码43。

3,如果安装了VMware Tools,需要禁用相关虚拟显卡。
后来随着我的实验,发现这个并非必要。

4,如果还是玄学的出问题,建议,直接重启esxi主机,并设置对应的windows开机自启动。

小问题

列出当前运行虚拟机

esxcli vm process list

强制停止某虚拟机

esxcli vm process kill --type=force --world-id=2101127(对应的id) 

esxi为虚拟机添加键鼠

可通过lsubs命令配合挺拔键鼠来确定设备的vid和pid
比如,我的无线键盘接收器是3554:fa09,鼠标接收器是2717:5023
首先vi /etc/vmware/config
添加以下内容:

usb.quirsk.device0 = "0x3554:0xfa09 allow"
usb.quirsk.device1 = "0x2717:0x5023 allow"

因为ESXi重启时VMkernel还会获取设备的控制权,我们需要到ESXi启动引导中禁用掉VMkernel对上述设备获取控制权。

ssh到ESXi里在启动参数后面加上以下内容vi /bootbank/boot.cfg

CONFIG./USB/quirks=0x3554:0xfa09::0xffff:UQ_KBD_IGNORE:0x2717:0x5023::0xffff:UQ_KBD_IGNORE

(格式为vid:pid::0xfff)

如果添加usb设备按钮为灰色

启动usbarbitrator服务,就可以加载usb设备

/etc/init.d/usbarbitrator start

永久打开usbarbitrator服务

chkconfig usbarbitrator on

通过frp访问esxi

其实对于有公网ip的人来说,frp并不是需,但好处是特别情况下,比如ip地址刚刚更换,或者不想加端口来访问,那么frp还是个不错的选择!

期望效果:通过esxi.zizdog.com 访问本地内网的esxi后台,并且能操控每个虚拟机。
总体思路:利用一台7x24h在线的内网主机(可以是虚拟机,我就是esxi内的一台win2012)做反向代理。或者用群晖也行。

1,服务器端frps配置

[common]
bind_port = 7000
dashboard_port=7500
token = 随便设置个密码用来验证客户端
vhost_http_port=7001
vhost_https_port=7002

说明:这些内容都可以自定义的,但相应端口一定记得放行。

2,服务器端nginx设置

这里我原先建站装了bt面板,同样复用了。
新建网站esxi.zizdog.com,ssl中申请证书,一般用Let's Encrypt 的dns校验自动申请就行了,也方便续期。
然后开启强制ssl。然后将端口转发部分加进支,内容如下。

server
{
    listen 80;
    listen 443 ssl http2;
    server_name esxi.zizdog.com;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    #SSL部分略去。

    # frp
    location / {
            proxy_pass http://127.0.0.1:7001;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-Forward-Proto https;
            
             proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

说明:7001端口要与frps中的vhost_http_port=7001对应。
此时,当我们访问esxi.zizdog.com时会自动转发到7001端口(当下面的配置完成后,会与本地的win2012的frpc建立连接)

3,win2012的nginx配置

首先得安装nginx,我安装了bt面板,刚好能用。

配置nginx:

server{
    listen  1012;
    server_name     127.0.0.1;
    
    location / {
            proxy_pass https://192.168.31.12;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

        proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

内容说明:
listen 1012监听本机的1012端口,然后将其转发到https://192.168.31.12,也就是我esxi的内网地址。
这个1012就是随便一个空闲端口而已。不过,如果你也和我一样用了宝塔,那么记得放行这个端口。

网上有人说到这里可以通过局域网访问:http://192.168.31.13:1012(这是我win2012的内网地址)就能顺利访问了,但我实测不行,这个应该是esxi版本问题,我用的esxi8.0 u2.

4,win2012的frpc配置

[common]
server_addr = 服务器公网ip
server_port = 7000
token = 服务端设置的密码

[rdp1]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33891

[esxi]
type = http
local_ip = 127.0.0.1
local_port = 1012
remote_port = 7001
custom_domains = esxi.zizdog.com

说明:
中间的rdp1部分是因为我同时用frp做了远程桌面的内网穿透,和本文内容无关。
至此,就可以通过esxi.zizdog.com访问内网的esxi主机了,不用加端口确实比较清爽。

本文最后更新时间为 2024-10-11 14:05

评论功能已关闭!
本站仅用作个人记录,不交流、不讨论,留言板可以留言但无邮件回复。