问题:
有人知道如何让 Windows 2012R2 虚拟机在集群资源管理器发送信号时关闭吗?
背景:
我在 KVM 上运行 Windows 2012R2 服务器作为虚拟机 (VM),使用 corosync/pacemaker 实现高可用性。要将 VM 从一个节点迁移到另一个节点,需要向 VM 发送关机信号。发出的命令是:
crm resource migrate p_virtdom_win2012R2
我认为这相当于:
virsh shutdown <vmname>
一旦机器关闭,它就会在另一个节点上启动。
我遇到的问题是 Windows 2012R2 VM 似乎没有响应关机命令 - 并且一直运行直到操作超时。
虚拟硬件中启用了 ACPI,并且在 ubuntu 14.04 LTS 主机上安装了 acpid。
如果我连接到控制台并“向上滑动”屏幕以显示登录屏幕,我就能够使迁移命令工作,但这对于高可用性系统来说并不实用,因为它应该在没有用户干预的情况下正常关闭。
历史:
我在 Windows 2008 服务器上遇到了同样的问题,并且能够通过使用以下组策略设置来解决该问题:
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Do not require CTRL + ALT + DEL
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Shutdown: Allow system to be shut down without having to log on
这会使机器停留在登录页面,在角落显示“关机”图标,并且可以很好地进行迁移。
不幸的是,此设置不会让 Windows 2012R2 停留在登录屏幕上。相反,它似乎允许您向上滑动而不是按 CTRL + ALT + DEL 来访问登录页面。
我还在这里发现了一个建议:
https://hashtips.wordpress.com/2013/03/19/shutdown-windows-kvm-virtual-machine/
虚拟地“移动鼠标”以允许关机发生,但是登录到控制台并移动鼠标只会显示带有时间和日期的屏幕,并且似乎并不能解决问题。
编辑/注意:允许 Windows 2012 R2 VM 无需登录即可关闭的注册表编辑未在 Windows 2008 VM 上设置 - 只需要组策略选项!
答案1
根据[1],“允许系统关闭而无需登录”策略存在于ws2012r2中。
KVM(实际上是 qemu)所做的就是向客户机发送 ACPI 关机命令,之后客户机应该处理该请求。就像使用真实硬件一样,替代方案是手动关机或拔掉电源(virsh destroy GUEST
在 libvirt 动词中)
[1]https://technet.microsoft.com/en-us/library/jj852274(v=ws.11).aspx
以下是我在网上收集的一些其他说明:
修改以下内容以允许无需登录即可关机:
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon - 将“ShutdownWithoutLogon”更改为 1
此外,电源设置可能会影响机器响应 ACPI 命令的能力,因此修改以下内容也可能有帮助:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\ 7516b95f-f776-4464-8c53-06167f40cc99\8EC4B3A5-6868-48c2-BE75-4F3044BE88A7 将“属性”值设置为 2
- “控制面板”>“系统和安全”>“电源选项”>“更改计划设置”在当前电源计划>“更改高级电源设置”>“显示”并将“控制台锁定显示关闭超时”设置为 0(禁用它)