茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672740 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
F09_088.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [轉貼]系統時間跑的飛快?

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]系統時間跑的飛快?
系統時間跑的飛快? post by tommy @ 03 九月, 2008 12:12

前幾天突然發現家裡的伺服器時間不對, 快了約半天左右. 因為上頭有跑 ntpd, 照理應該會自動對時, 機器也跑了一年, 之前的時間都很正常, 至少我可以確定在上星期的時候還是正常的. 試著把時間用 ntpdate 對時一次, 隔了不久, 發現時間又不對了, 仔細檢查一下, 發現每分鐘會快六秒, 有 10% 的誤差. 而用 hwclock 看一下 CMOS 上頭的時間, 並沒有相同的問題, 也就是硬體上頭的時間是正常的, 但是 Linux 所計算的時間會愈來愈快.

花了半天的時間, 查不出原因, 所以就先用 cron 每隔兩分鐘跑一次 ntpdate 去對時. 看起來似乎解決了這個問題了.

隔天, 發現 dovecot 不跑了, 看一下 log, 會有 TimeMovedBackwards 的錯誤, 造成 dovecot 自動結束. 也就是每隔一段時間去執行 ntpdate 來對時的解決方法, 雖然時間會比較正確, 不過會造成 dovecot 很容易就中斷執行. 這個方法看來不能用了.

而網頁上頭建議的解決方法, 第一個 ntpd 我已經有跑了, 不過發生了這個問題之後, 看起來似乎 ntpd 並沒有作用 (時間誤差太大的關係?), 所以就抓第二個解決的方案 clockspeed 回來試看看. 不過這個程式, 在家裡的 x86-64 系統上頭編譯不起來, 看起來似乎也不能用了.


到 Google 查了一些資料, 好像都是在 VM 上頭會碰到時間過慢的情形, 可以在 kernel 中加上 clock 或 clocksource 的參數來解決. 不過我試了所有的參數, 都還是有相同的問題. 由於之前是正常的, 所以我也試了一下之前的 kernel 版本, 不過仍然有相同的情形.

後來找到了 The Clock mini-HOWTO 的說明, 裡頭提到了幾個與時間有關的軟體. 發現我的機器上頭有裝 adjtimex 程式, 結果 hwclock, adjtimex 弄來弄去, 發現反而變成每分鐘慢 2 秒. 看來似乎與 adjtimex 有關.

研究一下 adjtimex 的說明, 重新跑了 adjtimexconfig 之後, 發現時間又變快了. 似乎 adjtimexconfig 計算出來的 tick 與 freq 是有問題的. 我直接改 /etc/default/adjtimex 的設定, 把 tick 改到預設的 10000 之後, 時間似乎就很接近了. 後來直接把 adjtimex 移除, 結果 ntpd 似乎就有在運作了, 現在跑了一天, 時間看起來還是對的.

如果你有裝 adjtimex, 試著移除看看, 如果沒裝, 那就裝上去, 試著改 tick 與 freq 的參數看看.
依據 adjtimex manpage 的說明, tick 每增加一, 時間每天會變快 8.64 秒, tick 每減一, 每天會變慢 8.64 秒.
如果依據 tick 的調整之後, 仍有小差異的話, 再利用 (1<<16)*s/.0864 (s 是經 tick 調整後, 每天差異的秒數), 計算出 freq 的數值出來. 這樣子就可以讓 kernel 的時間維持在很正確的情形下.

不過... adjtimex 在我這裝了也很久了, 一直都沒問題, 也不知道為什麼這幾天就有問題. 最後是移除 adjtimex 才讓 ntpd 有作用.


原文出處:Tommy 碎碎念: 系統時間跑的飛快?
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|