环境介绍
操作系统是Windows server 2019,hyper-v创建了一台虚拟机为Windows server 2016,虚拟机每隔一段时间会卡死,时间不固定。
展现为检测信号显示已中断,连接虚拟机能看到锁屏界面,但是任何操作都没有响应,远程连接连不上,检查监控发现卡死前后的CPU、内存、I/O都是正常的,并且在宿主机和虚拟机里都找不到相关的日志。
创建重启脚本
出现卡死情况之后只能硬重启之后才能解决(强行关闭然后开机)。
创建一条powershell脚本来对虚拟机状态进行检测,当检测信号值不为正常时,对虚拟机进行硬重启。中英文系统的参数不同,需要根据情况调整。
1 | if ($VM.PrimaryStatusDescription -ne "确定") |
‘test-vm’为虚拟机名,脚本检查虚拟机状态是否为‘确定’,如果不是,则执行强制关机命令,然后开机
有了脚本之后,虚拟机再卡死即可执行脚本重启,但这并不是最终目的,最终目的应该是虚拟机卡死后不需要人工干预就能重启,因此还需要创建一个任务计划来定时检查。
创建任务计划
- 打开任务计划程序

- 创建基本任务

- 操作选择启动程序,程序填写
powershell
,参数填写‘-file+文件路径’-file "C:\restart-vm.ps1"

- 勾选对话框,进行详细操作

- 编辑触发器

- 将重复任务间隔设置为:5分钟

至此任务计划创建完成,后续可以观察脚本是否正常运行。