某项目中,发现每次机器重启后,时间都比正常时间快了8个小时。但按解决服务器重启后,时间自动变更的问题的方法处理,仍无法解决。后发现机器是IBM x3850 M2的,在使用hwclock从BIOS读、往BIOS写会失败:
select() to /dev/rtc to wait for clock tick timed out
# clock
select() to /dev/rtc to wait for clock tick timed out
这时,必须加入–directisa参数才能成功。故怀疑问题原因是系统启动时,无法从BIOS获取正确的时间导致。
一、关于系统时钟
以下内容,转自:http://www.aixchina.net/?6878/viewspace-20222.html
Linux从BIOS获取是ijan,有3种模块:rtc/genrtc/rtc_dev,似乎是一个比一个新,有些Linux系统通常自己用的是rtc这个老模块;但Dell/ibm/acer等等厂商现在都可能使用新的BIOS,这种BIOS和这个rtc就可能不对付。
clock 和hwclock不能使用,出现报错:select() to /dev/rtc to wait for clock tick timed out,原因是不能读取/dev/rtc,也就是硬件时间。这是因为某些机器的BIOS处理方式和Linux的rtc内核模块之间出现了问题。
二、解决
1、修改系统和BIOS时间
错误的本地时间:
四 5月 13 01:02:22 CST 2010
用下面的方法获取BIOS时间:
2010年05月12日 星期三 17时02分30秒 -0.994525 seconds
※ 可见,若以BIOS时间为准,那么系统时间刚好多了8个小时。这是因为,系统在启动时会尝试从BIOS获取时间,若无法得到,则以系统的当前的时间作为UTC时间,因此,增加了8小时的时区时间。
设置正确的本地时间:
三 5月 12 17:14:00 CST 2010
写入BIOS:
# hwclock -r –directisa
2010年05月12日 星期三 17时14分40秒 -0.994525 seconds
2、修改配置文件,让系统启动时也带上参数运行
配置文件改为:
ZONE=”Asia/Beijing”
UTC=false
ARC=false
CLOCKFLAGS=–directisa
※ 注意,参数不要写成CLOCKFLAGS=”–directisa”
三、补充
1、其他配置文件
上面链接中的资料提到,还需要修改两个地方,为hwclock加入参数:
/etc/init.d/halt
实际上,在/etc/sysconfig/clock中加入的参数,在这些脚本中会自行导入,并不需设置。
2、IBM的说明
System time out by hours after boot – IBM System x
有两点需要注意的:
a、The issue is limited to the 32-bit version of the operating systems.
b、提供了一个不同的解决办法:
○ On a single-chassis system append the “hpet=disable pnpacpi=off clock=tsc” boot options to the kernel command line.
○ On a multi-chassis system append the “hpet=disable pnpacpi=off” boot options to the kernel command line.
经测试,该方法也能解决上述问题。
解决服务器重启后,时间自动变更的问题
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/104528.html