日期:2014-05-16  浏览次数:20617 次

xen虚拟机的linux系统时间设置

xen虚拟机的linux系统时间设置本来没想到会成为问题,但是因为项目中的特殊要求,需要服务器设定为中国标准时间。因此研究了一下。

原来,安装虚拟机后,在虚拟机脚本中的时间设定部分,一般都默认设置为localtime=0,即取物理机的时间为虚拟机的RTC。而物理机一般都把时间设置为北京时间。结果,虚机里的时间总是错的,原来是虚机把物理机的北京时间当作的UTC。所以,虚拟机的时间总是和物理机相差8个小时。当项目对服务器时间要求严格的情况下,不得不认真面对这个问题的时候,只好认真地梳理一下linux系统的各种时间设定方法。


首先又重新了解一下linux上面的时间的种类。

linux上面的时间的种类

linux上面一般有UTC, CST时间,以及RTC,他们的含义分别是:

GMT(Greenwich Mean Time,格林威治标准时间): 是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

UTC(Universal Time/Temps Cordonné 世界标准时间)

CST(Central Standard Time 國家標準時間,一說中原標準時間); 中国标准时间(China Standard Time)。实际就是北京时间。

GMT + 8 = UTC + 8 = CST ,也就是说中国标准时间比UTC快8个小时。

RTC(Real Time Clock) -- 实时时钟,也叫做CMOS时钟, 它是PC主机板上的一块芯片,它靠电池供电,即使系统断电,也可以维持日期和时间。由于它独立于操作系统,所以也被称为硬件时钟,它为整个计算机提供一个计时标准,是最原始最底层的时钟数据,Linux只用RTC来获得时间和日期;然而,通过作用于/dev/rtc设备文件,也允许进程对RTC编程。通过执行/sbin/clock系统程序,系统管理员可以配置时钟. 

在虚拟机中没有物理时钟,因此通过修改clock文件来设定时钟的属性。


设定虚拟机时间

若想达到虚拟机中的时间能够正确地显示为中国标准时间。需要作这些修改:

1.首先修改这个文件的内容:

/etc/sysconfig/clock 设置硬件时钟,

设置为UTC时间

HWCLOCK="--utc" 

正确设置时区,如果不知道时区的格式,可以通过tzselect命令工具看到。

TIMEZONE="Asia/Shanghai"

2.设定本地时间为CST,即中国标准时间

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime