《Linux基礎知識之ntpd和ntpdate的區別》要點:
本文介紹了Linux基礎知識之ntpd和ntpdate的區別,希望對您有用。如果有疑問,可以聯系我們。
在Linux操作系統設置與上級NTP時鐘源同步是很基本的操作,Linux提供了ntpd和ntpdate兩種方式來實現時間同步,但它們在同步原理上則有著本質的區別:ntpd在實際同步時間時是一點點的校準時間的,也可以理解為ntpd是平滑同步;而ntpdate不會考慮其他程序是否會陣痛,就立即同步.因此在生產環境中慎用ntpdate.
我們可以結合一個應用場景來加強對ntpd和ntpdate的理解:
網站限制用戶注冊1小時后才能發帖.
數據庫服務器在 10:00分接受了我的注冊邀請;
10:03分,ntpdate將數據庫時間強行改成9:35分;
然后10:05分(9:37分)我嘗試發帖,系統判斷我注冊時間是否滿一小時會使用:9:37 – 10:00
最后電腦就邏輯混亂了...
類似的案例在網上也有很詳細的說明,貼出來給大家看看:
時鐘的躍變,有時候會導致很嚴重的問題.許多應用程序依賴連續的時鐘.畢竟,這是一項常見的假定,即:取得的時間是線性的,一些操作,例如數據庫事務,通常會地依賴這樣的事實:時間不會往回“跳躍”.
不幸的是,ntpdate調整時間的方式就是我們所說的“躍變”,這就導致了幾個非常明顯的問題:
1. 這樣做不安全.ntpdate的設置依賴于ntp服務器的安全性,攻擊者可以利用一些軟件設計上的缺陷,拿下ntp服務器并令與其同步的服務器執行某些消耗性的任務.由于ntpdate采用的方式是跳變,跟隨它的服務器無法知道是否發生了異常(時間不一樣的時候,唯一的辦法是以服務器為準).
2. 這樣做不精確.一旦ntp服務器宕機,跟隨它的服務器也就會無法同步時間.與此不同,ntpd不僅能夠校準計算機的時間,而且能夠校準計算機的時鐘.
3. 這樣做不夠優雅.由于是跳變,而不是使時間變快或變慢,依賴時序的程序會出錯(例如,如果ntpdate發現你的時間快了,則可能會經歷兩個相同的時刻,對某些應用而言,這是致命的).
因而,唯一可以令時間發生跳變的點,是計算機剛剛啟動,但還沒有啟動很多服務的那個時候.其余的時候,理想的做法是使用ntpd來校準時鐘,而不是調整計算機時鐘上的時間.
NTPD 在和時間服務器的同步過程中,會把 BIOS 計時器的振蕩頻率偏差,或者說 Local Clock 的自然漂移(drift)記錄下來.這樣即使網絡有問題,本機仍然能維持一個相當精確的走時.
所以最后的建議是:如果首次安裝操作系統還未啟動業務之前,建議先ntpdate,然后再開啟ntpd服務與時間服務器進行實時平滑同步.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4656.html