关于ESXI 中虚拟机进行定时 开机如何实现
近期在VM ESXI 8.0 中 部署 黑群晖, ikuai, istore 等虚拟机服务,在使用的过程中,考虑到功耗问题。及个人的使用情况。其实有些虚拟机是没必要长期在运行中的。所有针对我的黑群晖做了 定时开关机处理。
但是在次过程中又出现了奇葩的问题就是 每天关机 是可以实现的 ,在黑群晖中设定每天开机是无法实现的。上图是我删掉每天开机后的截图 ,看看就行。具体原因大致搞明白了,针对此问题 直接给出一下解决方案。
通过ESXI 来实现VM虚拟机的自动开机 。
BUT ESXI WEB 端是没有此设定方式的
针对以上情况 只能通过 vSphere PowerCLI 来解决
步骤:
1、 启动shell 服务
2、通过 SSH链接
工具我使用的是mobaxterm, 自行选择
#新建vmrebot.sh 文件
mkdir vmrebot.sh
#获取指定虚拟机ID
[root@localhost:~] esxcli vm process list #列出所有运行状态的虚拟机
[root@localhost:~] vim-cmd vmsvc/getallvms |grep "<vm name>" #通过虚拟名称过去虚机ID
#重启虚拟机
[root@localhost:~] vim-cmd vmsvc/power.reboot <vm id>
#编辑
vi vmrebot.sh
#内容如下
#!/bin/bash
vim-cmd vmsvc/power.getstate 4 | grep "Powered on" #获取虚机状态
ret=$?
if [ $ret == 1 ]
then
echo "power on the vm!"
vim-cmd vmsvc/power.on 4
else
echo "do nothing!"
fi
提醒: 脚本中10 是对应要重启虚拟机的ID 记得修改
设置定时任务实现指定vm定时重启
ESXi 设置定时任务与Linux有些差异,定时任务需写入:/var/spool/cron/crontabs/root 文件
先对/var/spool/cron/crontabs/root 文件进行备份:
[root@localhost:~] cp /var/spool/cron/crontabs/root /var/spool/cron/crontabs/root.old
编辑/var/spool/cron/crontabs/root 文件,设置每天8:00进行重启:
[root@localhost:~] /bin/echo “0 8 * * * /bin/sh /vmrebot.sh” >> /var/spool/cron/crontabs/root
重启crond进程:
[root@localhost:~] cat /var/run/crond.pid #获取crond进程ID
2098095
[root@localhost:~] kill 2098095
[root@localhost:~] kill 2098095 #重复执行kill,确认进程已终止
sh: can’t kill pid 2098095: No such process
[root@localhost:~] /usr/lib/vmware/busybox/bin/busybox crond #重新启动crond进程
[root@localhost:~] cat /var/run/crond.pid #再次查看进程ID是否更新
89121397
补充说明:
power.on 启动
power.of 关机
power.reboot 重启
请登录后查看评论内容