这几天发现公司服务器上的时间比现实时间快了一天,可能致使一些不可逆转问题,好比网站积分会受影响,日志问题。用date修改下结果出现了马上还原的故障问题,想写入硬件时间,可是hwclock –rw命令又有问题,具体操做以下:linux
[root@bogon ~]# datevim
Tue Sep 8 19:39:49 HKT 2015windows
[root@bogon ~]# date 090811392015服务器
Tue Sep 8 11:39:00 HKT 2015ide
[root@bogon ~]# date网站
Tue Sep 8 19:41:20 HKT 2015ui
[root@bogon ~]# hwclockspa
Cannot access the Hardware Clock via any known method.操作系统
Use the --debug option to see the details of our search for an access method.debug
[root@bogon ~]# hwclock -rw
You have specified multiple functions.
You can only perform one function at a time.
[root@bogon ~]# hwclock --debug
hwclock from util-linux-2.13-pre7
hwclock: Open of /dev/rtc failed, errno=19: No such device.
No usable clock interface found.
Cannot access the Hardware Clock via any known method.
[root@bogon ~]# vim /etc/syscyl.conf
xen.independent_wallclock=1
[root@bogon ~]# hwclock -w --debug
hwclock from util-linux-2.13-pre7
hwclock: Open of /dev/rtc failed, errno=19: No such device.
No usable clock interface found.
Cannot access the Hardware Clock via any known method.
等一系列操做仍是没效果,更改不了硬件时间,写入bois。查看系统版本信息
[root@bogon ~]# uname -a
Linux bogon 2.6.18-194.el5xen #1 SMP Tue Mar 16 22:01:26 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
[root@bogon ~]# cat /proc/version
Linux version 2.6.18-194.el5xen (mockbuild@x86-005.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 22:01:26 EDT 2010
【参考解决方案】
CentOS在安装完新内核以后,每次重启以后时钟老是会发生一些变化,使得系统时钟不许确。在多操做系统的状况下(例如windows和 linux双系统),还可能会出现时区的误差,并且不管如何设置,在重启以后都会恢复原样。
计算机设计者在主板上设置了一个硬件时钟,由主板上的一块纽扣电池(Cell)供电,这个硬件时钟不管计算机电源是否接通都会不停的数秒,来计算当前时间。操做系统在启动的时候,会调用一段程序来读取主板上的硬件时钟,并记录在操做系统的一个(或一组)变量中。自此以后,操做系统的时钟便脱离主板的硬件时钟,开始单独运行(操做系统时钟的运行是由时钟中断来驱动的,不一样于主板上的时钟)。
不管作工多么精细,主板硬件时钟和由时钟中断维护的操做系统内的时钟多多少少会有一些偏差。因此,操做系统在每次关闭的时候会调用另外一段程序,将操做系统 内的时钟写到主板硬件时钟里(这样设计是否是说明时钟中断比主板硬件时钟更准确一些呢?)。相似的,当用户在操做系统内修改时钟以后,也不会当即写入主板 时钟,而是在关机的时候写入硬件时钟。
主板上的硬件时钟在Linux操做系统中呈现为一个设备,设备名称为rtc(Real Time Clock)。
使用旧的系统(如CentOS的2.6.18内核)编译新内核时,在调用mkinitrd命令时,会将/dev/rtc生成好,放到initrd- x.x.x.img文件中;而新的内核是本身生成/dev/rtc文件的,当kernel生成/dev/rtc时,发现系统内已经有了这个设备,因而就会 建立/dev/rtc0设备。这时hwclock程序仍然会读取rtc设备,就会形成设备读写失败。运行hwclock –debug命令能够看到以下输出:
[root@localhost ~]# hwclock --debug hwclock from util-linux-2.13-pre7 hwclock: Open of /dev/rtc failed, errno=19: No such device. No usable clock interface found. Cannot access the Hardware Clock via any known method.
其实,对应这个问题,新版的hwclock已经作出了调整。新的hwclock会主动去寻找/dev/rtc0设备,来操做主板硬件时钟。因而,解决方法就出现了。
就把外围应用程序hwclock也换成新的。下载完成以后,编译该程序:
1 2 3 4tar xfv util-linux-ng-2.17.tar.bz2 cd util-linux-ng-2.17 ./configure make
编译完成以后,将生成的hwclock文件拷贝到指定位置便可:
1cp hwclock/hwclock /sbin/
以后,操做系统和主板的硬件时钟就能够同步起来了。