Linux系統(tǒng)配置時間同步后可以保證系統(tǒng)本地時間和時間服務(wù)器標(biāo)準(zhǔn)時間保持一致,使業(yè)務(wù)系統(tǒng)內(nèi)所有Linux服務(wù)器時間統(tǒng)一。一般情況下,我們只需要配置ntpd或者chrony服務(wù)即可實現(xiàn)時間同步。
注:centos7或Redhat7以下的版本使用ntpd服務(wù)來維護(hù)本地時間,而高于7版本的Linux系統(tǒng)統(tǒng)一時候chrony服務(wù)。ntpd服務(wù)默認(rèn)是跳躍式修正本地時間。chrony雖然默認(rèn)采用了微調(diào)模式,但微調(diào)幅度在83ms。
NTP協(xié)議在局域網(wǎng)的標(biāo)準(zhǔn)誤差值是≤10ms,也就是說,當(dāng)客戶端向NTP服務(wù)器校時時,如果誤差在10ms,則會立即修改本地時間為NTP授出的標(biāo)準(zhǔn)時間,這時本地時間將會出現(xiàn)10ms的跳躍,但是有些特殊服務(wù)器對時間跳變特別敏感,不允許出現(xiàn)10ms級別的時間跳躍。此時可以使用微調(diào)模式來修正本地時間。
Linux系統(tǒng)下有兩種校時模式:slew和step。
slew是平滑、緩慢的漸進(jìn)式調(diào)整(adjusts the clock in small steps所謂的微調(diào)),微調(diào)模式每次調(diào)整0.5ms,調(diào)整1秒需要2000秒(大約33.3分鐘)的時間,調(diào)整600s需要將近14天
step是分步,分階段,跳躍式調(diào)整,跳躍模式默認(rèn)立即修改本地時間為標(biāo)準(zhǔn)時間,一次ntp請求后立即修改本地時間為ntp服務(wù)器的標(biāo)準(zhǔn)時間,調(diào)整幅度參考ntp在局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)中運行時的offset
centos6.5使用的是ntpd服務(wù),可以給ntpd的options添加-x的選項即可:
vi /etc/sysconfig/ntpd
#給OPTIONS添加-x
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"
#讓ntpd每次同步時間之后把時間寫入hwclock,相當(dāng)于命令hwclock -w 按需添加
SYNC_HWCLOCK="yes"
如下圖所示:
修改完成后,重啟服務(wù):
service ntpd restart
附1:ntpd服務(wù)-x說明
offset值 | 0-128ms | 128ms~600s | 600s~1000s | 1000s以上 |
有-x參數(shù) | 微調(diào) | 微調(diào)(0.5ms/s) | 跳躍 | 退出(加-g參數(shù)可忽略一次) |
無-x參數(shù) | 微調(diào) | 跳躍 | 跳躍 | 退出(加-g參數(shù)可忽略一次) |
注1:開啟微調(diào)模式后,在128ms~600s之內(nèi)的偏差,會使用slew方式以0.5ms/s的速度緩慢平滑的進(jìn)行微調(diào)(即調(diào)整1秒需要2000秒(大約33.3分鐘)的時間,調(diào)整600秒需要將近14天才能消除偏差),如果偏差超過600秒(10分鐘)還是會使用step的方式跳躍式的調(diào)整本地時間,
注2:不管使用哪種方式,如果系統(tǒng)時間與NTP服務(wù)器授出的標(biāo)準(zhǔn)時間誤差大于1000秒以上(16.6分鐘左右)ntpd服務(wù)會退出服務(wù)并記錄日志到文件,如果加上-g參數(shù),則忽略一次,不退出服務(wù),但只能有效一次,當(dāng)下次校時發(fā)現(xiàn)誤差還是1000秒以上(16.6分鐘左右),在ntpd服務(wù)會退出并記錄到日志,一般與-x組合使用。
附2:如何確認(rèn)我們的NTP服務(wù)已經(jīng)更新了自己的數(shù)據(jù)呢?
使用ntpstat命令查看ntpd服務(wù)是否與上層聯(lián)機。
從上圖可知,時間校正在13ms內(nèi),且64秒后會主動更新時間,該同步間隔會根據(jù)本地時鐘與NTP服務(wù)器的時鐘誤差大小而進(jìn)行自動調(diào)整,同步間隔:最小8秒,最大1024秒。
注:當(dāng)出現(xiàn)unsynchronised時,請檢查配置,如配置沒錯,請等待ntpd服務(wù)識別ntpd服務(wù)器,如下圖所示:remote表示上級時間源地址,當(dāng)?shù)刂非皹?biāo)“*”則表示系統(tǒng)選定了該時間源地址。
Linux系統(tǒng)7及以上版本的系統(tǒng)統(tǒng)一使用chrony來維護(hù)本地時間,chrony默認(rèn)已經(jīng)使用了微調(diào)模式調(diào)整本地時間,默認(rèn)調(diào)試幅度是83333.333ppm(one twelfth),即每秒同步1/12秒(即0.08333s=83.33ms),這里可以和centos6.5保持一致,即每次調(diào)整0.5ms,chrony通過maxslewrate關(guān)鍵字來實現(xiàn)該功能。
參考:https://chrony-project.org/doc/4.3/chrony.conf.html
修改修改/etc/chrony.conf文件,注釋 “makestep 1.0 3”,并在下方添加 “maxslewrate 500” 保存并重啟chrony服務(wù):
systemctl restart chronyd.service
下面針對chronyd4.3做了一個默認(rèn)配置和ppm500微調(diào)模式的對比,從下圖可以看出,能將系統(tǒng)本地時間的誤差控制在0.2ms內(nèi)。
end。
--------------------------
原創(chuàng)聲明:
作者:yxj
出處:http://m.baiyunworld.cn/nts/index.php/content/269
版權(quán):本文版權(quán)歸作者和北京昕辰清虹科技有限公司共有
轉(zhuǎn)載:歡迎轉(zhuǎn)載,但未經(jīng)作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責(zé)任