背景:

  生产环境下,发现windows虚机每次重启,时间都会倒退到虚机的格林威治时间(+8小时才是北京时间),也就是比当前时间晚8小时。测试发现,windows虚机所用的镜像,缺少了一个os_type参数。

  制作镜像时,必须加入os_distro、image.os_type、os_type这三个参数。三个参数的作用如下:

    os_distro:os_dstro是镜像的发行版名称,也就是帮助识别它具体是什么操作系统的,这个参数可以填centos、debian、ubuntu等等具体的名字;

    image.os_type:image.os_type是调度层面的,给nova-scheduler识别的;

    os_type:os_type是给libvirt识别的,就是为了区分是windows还是linux,时间的问题,应该就是通过这个去识别的,所以它的值只能选windows或者linux二选一

解决方案如下:

1:对于还未创建的虚机,更新镜像信息,加入os_type选项

  glance image-list    # 先查找镜像id

  glance image-update --property os_type="windows" 镜像id    # 更新镜像

  glance image-show 镜像id     # 查看镜像,看看是否多了一项os_type

  然后就可以创建虚拟机了

2:对于已经创建的windows镜像,可以在数据库中更新os_type字段信息,然后重启虚机(测试发现,只有进行硬重启,才能生效)

  1)修改数据库

  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

  mysql> use nova
  Database changed
openstack环境-解决windows虚机重启后比当前时间晚8小时问题-LMLPHP

  2)重启虚机(需要选择硬重启,才能生效)

  Nova reboot --hard  虚机id

  3)查看验证

  在相应计算节点,查看虚拟机配置文件,可以看到clock以及从utc变成localtime

  ]# virsh edit instance-000007e0

openstack环境-解决windows虚机重启后比当前时间晚8小时问题-LMLPHP

05-11 18:11