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