ESXI 6.7自动关机设置

楼主最近配置了一台32G内存的微塔来做虚拟化服务的学习和搭建,使用esxi来跑虚拟化平台。每天定时开机可以通过wake on lan来实现,但是定时esxi的定时关机是没有直接的解决方案来实现的,因此我们只能通过连入esxi的ssh终端来实现。

本质上esxi就是一台linux的,可以执行定时脚本。但是当esxi重启后配置的信息会自动丢失,因此我们需要按照如下步骤来完成设置。

  1. 首先在esxi 6.7上开启ssh
  2. 然后通过ssh终端登录上去,用户名root,密码就是你安装esxi设置的root密码。
  3. 在/vmfs/volumes/datastore1 目录下创建一个自动关机脚本文件:poweroff.sh ,同时设置755权限
  4. 在poweroff.sh文件中写入如下信息:
#!/bin/sh
/sbin/poweroff
  1. 接着编辑/etc/rc.local.d/local.sh 文件,在其文件文本 末尾的"exit 0" 之前填入如下信息:
/bin/kill $(cat /var/run/crond.pid)/bin/echo '58 12   * /vmfs/volumes/datastore1/poweroff.sh' >> /var/spool/cron/crontabs/root

最终效果如下:

 title=

  1. 这里写入的三行内容是为了在esxi启动后将cron设定的信息写入到crontab的配置文件中。并重启cron进程。注意cron的时间设定,esxi的底层时间全部是utc时间,因此我们在设定时间一定不能用我们中国时区的时间,将需要设定重启的时间减去8小时才是UTC时间。例如我们完成23:00关键,那么我们的cron时间设定为“0 15 *”。

7.最后我们需要执行以下 auto-backup.sh 脚本,这个是esxi自带的命令,直接执行即可。

8.如果你要立即生效你的cron设定,那么就执行下/etc/rc.local.d/local.sh 脚本就好了。

2.直通显卡,重启后仍然出现需要重新引导的问题

服务器只有一张显卡,且没有核显,所以esxi默认显卡为这个3080,导致每次启动都提示已启用/需要重新引导
解决方法:
一个是ACS功能检查,默认是false,改为true,不成功,重启后还是提示
之后shell登录后,设置值:

# 禁止ESXI使用核显命令esxcli system settings kernel set -s vga -v FALSE恢复ESXI使用核显命令

3. 命令行导出虚拟机配置

.\ovftool.exe vi://用户名:密码@esxiIP/虚拟机名称 C:\OVFTools\vmBackup\虚拟机名称.ova

http://kedaoyun.181222.xyz/#s/_c9TUv7g

ovftool.exe -ds=存储目录 -dm=thin -n=新主机的名字 "本地ovf文件系统" vi://用户名:密码@esxiIP

-dm:thin是精简置备的意思

4. ghettoVCB

1. 备份

项目地址

  1. 下载文件到某个目录下,比如/vmfs/volumes/datastore1/backup/
     title=
  2. 挂载其他存储,比如nas的(可选)
     title=
  3. 配置文件

{message type="warning" content="邮箱配置我没有弄好,不会发送邮件"/}

VM_BACKUP_VOLUME=/vmfs/volumes/nas/nas上的目录  # 备份的目录
DISK_BACKUP_FORMAT=thin  # 备份格式
VM_BACKUP_ROTATION_COUNT=7  # 备份保留份数
POWER_VM_DOWN_BEFORE_BACKUP=0  # 备份前是否关闭
VMENABLE_HARD_POWER_OFF=0  # 强制关机
ITER_TO_WAIT_SHUTDOWN=3
POWER_DOWN_TIMEOUT=5
ENABLE_COMPRESSION=0  # 使用压缩,0false,1true
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
SNAPSHOT_TIMEOUT=15EMAIL_ALERT=1
EMAIL_LOG=1
EMAIL_SERVER=smtp服务器
EMAIL_SERVER_PORT=smtp服务器端口
EMAIL_DELAY_INTERVAL=1
EMAIL_USER_NAME=发送者邮箱
EMAIL_USER_PASSWORD=发送者邮箱密码
EMAIL_TO=接收者邮箱
EMAIL_ERRORS_TO=
EMAIL_FROM=发送者邮箱 需要和 一样
WORKDIR_DEBUG=0
VM_SHUTDOWN_ORDER=
VM_STARTUP_ORDER=
  1. 执行备份

    /vmfs/volumes/datastore1/backup/ghettoVCB.sh -g /vmfs/volumes/datastore1/backup/ghettoVCB.conf -a
  2. 弄到定时任务里面
    编辑这个文件,在之前添加代码

    vi /etc/rc.local.d/local.sh
    #!/bin/sh
    
    # local configuration options
    
    # Note: modify at your own risk!  If you do/use anything in this
    # script that is not part of a stable API (relying on files to be in
    # specific places, specific tools, specific output, etc) there is a
    # possibility you will end up with a broken system after patching or
    # upgrading.  Changes are not supported unless under direction of
    # VMware support.
    
    # Note: This script will not be run when UEFI secure boot is enabled.
    
    /bin/kill $(cat /var/run/crond.pid)
    
    # 备份特定的
    echo '0 17 * * * /vmfs/volumes/datastore1/backup/ghettoVCB.sh -g /vmfs/volumes/datastore1/backup/ghettoVCB.conf -m 虚拟机名称 > /vmfs/volumes/fn/esxibackup/6.7/logs/backup_log_$(date +\%Y\%m\%d).log 2>&1' >> /var/spool/cron/crontabs/root
    # 备份全部
    echo '0 18 * * * /vmfs/volumes/datastore1/backup/ghettoVCB.sh -g /vmfs/volumes/datastore1/backup/ghettoVCB.conf -a > /vmfs/volumes/fn/esxibackup/6.7/logs/backup_log_$(date +\%Y\%m\%d).log 2>&1' >> /var/spool/cron/crontabs/root
    
    /usr/lib/vmware/busybox/bin/busybox crond
    
    exit 0

在esxi前面添加代码

echo '0 18   * /vmfs/volumes/datastore1/backup/ghettoVCB.sh -g /vmfs/volumes/datastore1/backup/ghettoVCB.conf -a > /vmfs/test/logs/backup_log_$(date +\%Y\%m\%d).log 2>&1' >> /var/spool/cron/crontabs/root/usr/lib/vmware/busybox/bin/busybox crond

{message type="warning" content="使用的是utc时间,需要换算成北京时间,比如我想凌晨2点的时候执行,那我需要本地时间-8,那就是18"/}

  1. 查看是否添加
    查看这个文件,看一下有没有添加

    cat /var/spool/cron/crontabs/root

2.恢复

echo "/vmfs/volumes/fn/esxibackup/network/虚拟机名称/虚拟机名称-2025-07-17_09-59-51.gz;/vmfs/volumes/datastore1;3" > temp.list ./ghettoVCB-restore.sh -c temp.list 

3. 开放邮件端口

1. 进入防火墙配置目录:

cd /etc/vmware/firewall

2.创建一个新的服务配置文件(比如命名为 ghettoSMTP.xml):

vi ghettoSMTP.xml

写入以下内容

<ConfigRoot>
  <service>
    <id>ghettoSMTP</id>
    <rule id='0000'>
      <direction>outbound</direction>
      <protocol>tcp</protocol>
      <porttype>dst</porttype>
      <port>465</port>
    </rule>
    <enabled>true</enabled>
    <required>false</required>
  </service>
</ConfigRoot>

3. 重启防火墙服务使配置生效

esxcli network firewall refresh

4. 验证规则是否已加载

esxcli network firewall ruleset list | grep -i ghettoSMTP

应该能看到 ghettoSMTP 及其状态。

ghettoSMTP                   true

5. 启用该规则集(如果上面的 enabled>true 没生效):

esxcli network firewall ruleset set -r ghettoSMTP -e true

6. 测试网络连通性

nc -zv 你的邮件服务器IP 465

5. 虚拟机无法启动报错

报错信息:

Power On VM键:haTask-17-vim.VirtualMachine.powerOn-1030991398描述:打开该虚拟机电源虚拟机:HA状况:失败 - 对象类型需要托管的 I/O

执行的命令

vmkfstools -x repair "/vmfs/volumes/648f6a09-c48a2f1f-9933-00d04c100ef0/HA/haos_ova-14.2.vmdk"