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