這幾天發現公司服務器上的時間比現實時間快了一天,可能致使一些不可逆轉問題,好比網站積分會受影響,日誌問題。用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/
以後,操做系統和主板的硬件時鐘就能夠同步起來了。