问题描述
由于 Azure 虚拟机的特殊性,物理主机会实时同步虚拟机的时间和日期。当有特殊需求时,客户想要停止日期时间的同步,但是一些常见的关闭 NTP 服务等操作都会失败。
解决方案
Important
强烈不建议禁用 Azure 虚拟机的日期时间同步以避免不可预测的潜在风险。 如果有特殊需求的客户,请参照如下步骤来实现。
Windows 虚拟机
点击 “开始” -> “运行” -> “services.msc”
在打开的 Windows 服务管理列表中,找到服务 “Hyper-V Time Synchronization Service”。
选择该服务,右键选择“关闭”。
之后,物理主机与虚拟机的日期时间同步就会停止。
重新启动该服务,就会恢复日期时间的同步。
Linux 虚拟机
执行下列命令,获取 lsvmbus 工具:# wget https://raw.githubusercontent.com/torvalds/linux/master/tools/hv/lsvmbus # chmod u+x lsvmbus
执行命令,获取同步日期时间的驱动设备:
复制
# python lsvmbus -vvv |grep -A 4 -i "Time Synchronization"
VMBUS ID 11: Class_ID = {9527e630-d0ae-497b-adce-e80ab0175caf} - [Time Synchronization]
Device_ID = {2dd1ce17-079e-403c-b352-a1921ee207ee}
Sysfs path: /sys/bus/vmbus/devices/vmbus_11
Rel_ID=11, target_cpu=0
记录上述高亮显示的设备 ID。
执行命令:
复制
# echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind
至此,日期时间同步已被禁用,可以通过 date 等命令来自行调整。
重启虚拟机,即可恢复日期时间同步,如果需要永久禁用,可以在 rc.local 文件中,手工编辑启动脚本来实现。
立即访问http://market.azure.cn