guest OS时间保持

kvm技术是全虚拟化,guest OS并不需要做修改就可以直接运行,然而在计时方面却存在问题,guest OS计时的一种方式是通过时钟中断计数,进而换算得到,但host产生的时钟中断不能及时到达所有guest OS,因为guest OS中的中断并不是真正的硬件中断,它是由host注入的中断

许多网络应用,web中的sessions验证等,都会调用系统时间,guest OS中若时间有误,则会引起程序出错,为此,kvm给guest vms提供了一个半虚拟化时钟(kvm-clock),在RHEL5.5及其以上版本中,都使用了kvm-clock作为默认时钟源,可以在guest 中使用下面命令查看是否使用了kvm-clock

cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

在kvm-clock方式下,guest OS不能直接访问Host时钟,Host把系统时间写入一个guest可以读取的内存页,这样guest就可以读取此内存页设置自身硬件时间,但是Host并不是实时更新时间到此内存页,而是在发生一个vm event(vm关机,重启等)时才更新,因此此种方式也不能保持guest时间准确无误

在继续之前,我们要先理解系统时间和硬件时间等概念

UTC时间 与 本地时间

UTC时间:又称世界标准时间、世界统一时间,UTC是以原子钟校准的,世界其它地区是以此为基准时间加上自己时区来设置其本地时间的

本地时间:由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是

本地时间 = UTC + 时区 或 UTC = 本地时间 - 时区

时区东为正,西为负,在中国,时区为东八区,也就是 +8区,本地时间都使用北京时间,在linux上显示就是 CST, 所以CST=UTC+(+8小时) 或 UTC=CST-(+8小时)

(China Standard Time,中国标准时,注意美国的中部标准时Central Standard Time也缩写为CST)

系统时间 与 硬件时间

硬件时间:主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,根据/etc/localtime)

系统时间: 就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。

/etc/localtime 这个文件用来设置系统的时区,将 /usr/share/zoneinfo/ 中相应时区文件拷贝到/etc下并重命名为 localtime 即可修改时区设置(也可以使用tzselect命令修改),而且这种修改对 date 命令是即时生效的。不论是 date 还是 hwclock 都会用到这个文件,系统会根据这个文件的时区设置来进行UTC和本地时间之间的换算。

libvirt中设置虚拟机硬件时钟

kvm虚拟机一般使用libvirt进行管理,在虚拟机配置的xml文件中,有关于虚拟机硬件时钟设置项

  <clock offset='localtime'>
</clock>

clock的offset属性有"utc","localtime","timezone","variable"四个可选项

如果guest OS是Linux系统,应该选用"utc",guest OS在启动时便会向host同步一次utc时间,然后根据/etc/localtime中设置的时区,来计算系统时间

如果guest OS是windows系统,则应该选用"localtime",guest OS在启动时向host同步一次系统时间

集群环境

在虚拟机集群环境中,不能够只依赖kvm管理进程提供的计时功能,文章开头也提及这种计时并不很精确,而libvirt中配置的"clock offset"选项,是用于配置虚拟机硬件时钟,虚拟机中的系统时间还要再加上相应的时区换算得到,根据以上分析,集群环境多台虚拟机时间配置需要以下几步:

  1. libvirt中设置正确的"clock offset"
  2. 虚拟机中设置正确的时区(/etc/localtime)
  3. 搭建内部ntp服务器,每个五分钟进行一次时间同步

kvm虚拟化环境中的时区设置的更多相关文章

  1. kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

    平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...

  2. kvm虚拟化环境的搭建

    首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...

  3. KVM虚拟化环境准备

    1. 概述2. 环境准备2.1 硬件环境2.2 软件环境2.2.1 YUM安装软件包2.2.2 环境检查2.2.3 启动libvirtd服务2.3 网络环境2.3.1 复制网卡配置文件2.3.2 修改 ...

  4. 开发环境中biztalk项目设置注意事项(转)

      适用版本:biztalk 2006 适用环境:开发测试环境 在开发过程中,在开发环境中,一定会是一个对项目不断的修改.编译.部署.测试,查看测试结果,发现有问题,然后回到开发环境再修改.编译.部署 ...

  5. Django 中文和时区设置

    Django 语言和时区的设置都在 settings.py 文件中. 中文设置 LANGUAGE_CODE:设置语言,英语 en-us,中文简体 zh-Hans,中文繁体 zh-Hant 在 MIDD ...

  6. Webpack中的sourcemap以及如何在生产和开发环境中合理的设置

    一 . 从Sourcemap和Data URL说起 (1)什么是Sourcemap? 我们在打包中,将开发环境中源代码经过压缩,去空格,babel编译转化,最终可以得到适用于生产环境的项目代码,这样处 ...

  7. DMZ在虚拟化环境中的部署

    常见的方法有三种: 1.分别部署 2.部分虚拟化 3.全部虚拟化 传统DMZ部署结构: 分别部署: 想要保持DMZ区域物理隔离采用这种方法,每个区域分别部署进入不同的服务器集群,区域之间的连接采用物理 ...

  8. django中的时区设置TIME_ZONE,USE_TZ

    Django如果开启了Time Zone功能,则所有的存储和内部处理,甚至包括直接print显示全都是UTC的.只有通过模板进行表单输入/渲染输出的时候,才会执行UTC本地时间的转换. 所以我建议后台 ...

  9. 【Spring Boot】Spring Boot项目设置多个配置文件,并在生产环境中的Tomcat设置对应的配置文件

    1.修改Spring Boot项目配置文件 除了主配置文件,另外创建2个配置文件,注意命名要用application-*.properties 主配置文件中写入,使用dev作为开发配置 spring. ...

随机推荐

  1. 人工智能新编程语言-Gen

    MIT 的一个研究小组正努力让初学者更容易入门人工智能,同时也帮助专家进一步推进这个领域的发展. 在 PLDI 大会(Programming Language Design and Implement ...

  2. Appium查询元素方法

    Appium查询元素有两种方式 一种是使用UI Automator: 参考 https://www.cnblogs.com/gongxr/p/10906736.html 另一种是使用appium的In ...

  3. 【tensorflow基础】Tensorpack-API

    安装 pip install tensorpack 使用 参考 1. Tensorpack: 2. Tensorpack,一个基于TensorFlow的神经网络训练界面,源码包含很多示例: 完

  4. [LeetCode] 262. Trips and Users 旅行和用户

    The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...

  5. [LeetCode] 330. Patching Array 数组补丁

    Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...

  6. K8S+GitLab+.net core-自动化分布式部署-1

    K8S+GitLab-自动化分布式部署ASP.NET Core(一) 部署环境 一.部署流程介绍 开发人员通过Git上传asp.net core 项目到Gilab,并编写好.gitlab-ci.yml ...

  7. ubuntu samba 服务器搭建

    最近总是在搭建 samba 环境,写在笔记上记录下以备后用,长时间不操作了肯定会忘记. Linux 版本:Ubuntu 18.04 具体的操作命令: 1. 安装: sudo apt-get insta ...

  8. TCP报文格式+UDP报文格式+MAC帧格式

    TCP和UDP的区别: 1)TCP是面向连接的,而UDP是无连接的 2)TCP提供可靠服务,而UDP不提供可靠服务,只是尽最大努力交付报文 3)TCP面向字节流,TCP把数据看成一串无结构的字节流,而 ...

  9. learning、trying、teaching

    在工作中学习和提升,学以致用,学习的效果是最好的:工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习. 1,Learning 这是第一阶段,看书.google.看视频.看别人的博客,但要是“ ...

  10. localhost-startStop-1启动失败

    背景:在IDEA调试程序的时候,应用起不来,看日志是从main线程切换到localhost-startStop-1线程就开始卡住了 方法一 原因 这个问题和jvm上的熵池策略有关 解决 将$JAVA_ ...