ntpd與ntpdate的區別
ntpd與ntpdate的區別
轉:http://www.cnblogs.com/liuyou/archive/2012/07/29/2614330.html之前配置ntpd的時候搜到一句話,印象很深刻,也覺得很有標題黨的效果,就借鑑為標題了:
“我認為有幾種人是必須不招聘/裁掉的: 1 用ntpdate代替ntpd的人”
但具體原因不太懂,總覺得還是用ntpdate比較方便。
今天問了紅帽技術支援,對方的解釋是:
ntpd在實際同步時間時是一點點的校準過來時間的,最終把時間慢慢的校正對。而ntpdate不會考慮其他程式是否會陣痛,直接調整時間。
一個是校準時間,一個是調整時間。
以下是一個形象的假設:
linuxtone限制使用者註冊1小時才能發帖。
資料庫伺服器在 10:00分接受了我的註冊邀請;
10:03分,ntpdate將資料庫時間強行改成9:35分;
然後10:05分(9:37分)我嘗試發帖,系統判斷我註冊時間是否滿一小時會使用:9:37 - 10:00
最後電腦就邏輯混亂了。。。
類似的帖子網上也有很詳細的說明,貼出來給大家看看:
時鐘的躍變,有時候會導致很嚴重的問題。許多應用程式依賴連續的時鐘??畢竟,這是一項常見的假定,即,取得的時間是線性的,一些操作,例如資料庫事務,通常會地依賴這樣的事實:時間不會往回跳躍。
不幸的是,ntpdate調整時間的方式就是我們所說的”躍變“:在獲得一個時間之後,ntpdate使用settimeofday(2)設定系統時間,這有幾個非常明顯的問題:
第 一,這樣做不安全。ntpdate的設定依賴於ntp伺服器的安全性,攻擊者可以利用一些軟體設計上的缺陷,拿下ntp伺服器並令與其同步的伺服器執行某 些消耗性的任務。由於ntpdate採用的方式是跳變,跟隨它的伺服器無法知道是否發生了異常(時間不一樣的時候,唯一的辦法是以伺服器為準)。
第二,這樣做不精確。一旦ntp伺服器當機,跟隨它的伺服器也就會無法同步時間。與此不同,ntpd不僅能夠校準計算機的時間,而且能夠校準計算機的時鐘。
第三,這樣做不夠優雅。由於是跳變,而不是使時間變快或變慢,依賴時序的程式會出錯(例如,如果ntpdate發現你的時間快了,則可能會經歷兩個相同的時刻,對某些應用而言,這是致命的)。
因而,唯一一個可以令時間發生跳變的點,是計算機剛剛啟動,但還沒有啟動很多服務的那個時候。其餘的時候,理想的做法是使用ntpd來校準時鐘,而不是調整計算機時鐘上的時間。
NTPD 在和時間伺服器的同步過程中,會把 BIOS 計時器的振盪頻率偏差??或者說 Local Clock 的自然漂移(drift)??記錄下來。這樣即使網路有問題,本機仍然能維持一個相當精確的走時。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2122746/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ntpdate和ntpd的區別
- ??與?:的區別
- linux ntpdLinux
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- ntpd 時間同步
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別
- let與var的區別
- post與get的區別
- HashSet與HashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- TCP與UDP的區別TCPUDP
- Mysql與mongodb的區別MySqlMongoDB
- typedef與define的區別
- Eureka與Zookeeper的區別
- buffer與cache的區別
- async與defer的區別
- synchronized與Lock的區別synchronized
- kill與pkill的區別
- int與Integer的區別
- HTML與XHTML的區別HTML
- mysql與Oracle的區別MySqlOracle
- UDP與TCP的區別UDPTCP
- Javascript中“==”與“===”的區別JavaScript
- for...in與for...of的區別