NTP 是通過網(wǎng)絡(luò)來同步時(shí)間的一種 TCP/IP 協(xié)議。通??蛻舳讼蚍?wù)器請求當(dāng)前的時(shí)間,并根據(jù)結(jié)果來設(shè)置其時(shí)鐘。
這個(gè)描述是挺簡單的,實(shí)現(xiàn)這一功能卻是極為復(fù)雜的 - 首先要有多層 NTP 服務(wù)器,第一層 NTP 服務(wù)器連接原子時(shí)鐘,第二層、第三層服務(wù)器則擔(dān)起負(fù)載均衡的責(zé)任,以處理因特網(wǎng)傳來的所有請求。另外,客戶端可能也超乎你想象的復(fù)雜 - 它必須排除通訊延遲,調(diào)整時(shí)間的同時(shí)不干擾其它在服務(wù)器中運(yùn)行的進(jìn)程。幸運(yùn)的是,所有的這些復(fù)雜性都進(jìn)行了封裝,你是不可見也不需要見到的。
在 Ubuntu 中,是使用 ntpdate 和 ntpd 來同步時(shí)間的。
timedatectl
在最新的 Ubuntu 版本中,timedatectl 替代了老舊的 ntpdate。默認(rèn)情況下,timedatectl 在系統(tǒng)啟動的時(shí)候會立刻同步時(shí)間,并在稍后網(wǎng)絡(luò)連接激活后通過 socket 再次檢查一次。
如果已安裝了 ntpdate / ntp,timedatectl 會退而讓你使用之前的設(shè)置。這樣確保了兩個(gè)時(shí)間同步服務(wù)不會相互沖突,同時(shí)在你升級的時(shí)候還保留原本的行為和配置。但這也意味著從舊版本的發(fā)行版升級時(shí) ntp/ntpdate 仍會安裝,因此會導(dǎo)致新的基于 systemd 的時(shí)間服務(wù)被禁用。
timesyncd
在最新的 Ubuntu 版本中,timesyncd 替代了 ntpd 的客戶端的部分。默認(rèn)情況下 timesyncd 會定期檢測并同步時(shí)間。它還會在本地存儲更新的時(shí)間,以便在系統(tǒng)重啟時(shí)做時(shí)間單步調(diào)整。
通過 timedatectl 和 timesyncd 設(shè)置的當(dāng)前時(shí)間狀態(tài)和時(shí)間配置,可以使用 timedatectl status 命令來進(jìn)行確認(rèn)。
timedatectl status
Local time: Fri 2016-04-29 06:32:57 UTC
Universal time: Fri 2016-04-29 06:32:57 UTC
RTC time: Fri 2016-04-29 07:44:02
Time zone: Etc/UTC (UTC, +0000)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
如果安裝了 NTP,并用它替代 timedatectl 來同步時(shí)間,則 NTP synchronized 將被設(shè)置為 yes。
timedatectl 和 timesyncd 用來獲取時(shí)間的 nameserver 可以通過 /etc/systemd/timesyncd.conf 來指定,另外在 /etc/systemd/timesyncd.conf.d/ 下還有靈活的附加配置文件。
ntpdate
由于 timedatectl 的存在,各發(fā)行版已經(jīng)棄用了 ntpdate,默認(rèn)不再進(jìn)行安裝。如果你安裝了,它會在系統(tǒng)啟動的時(shí)候根據(jù) Ubuntu 的 NTP 服務(wù)器來設(shè)置你電腦的時(shí)間。之后每當(dāng)一個(gè)新的網(wǎng)絡(luò)接口啟動時(shí),它就會重新嘗試同步時(shí)間 —— 在這期間只要其涵蓋的時(shí)間差不是太大,它就會慢慢偏移時(shí)間。該行為可以通過 -B/-b 開關(guān)來進(jìn)行控制。
時(shí)間服務(wù)器
默認(rèn)情況下,基于 systemd 的工具都是從 ntp.ubuntu.com 請求時(shí)間同步的。經(jīng)典的基于 ntpd 的服務(wù)基本上都是使用 [0-3].ubuntu.pool.ntp.org 池中的 2.ubuntu.pool.ntp.org,還有 ntp.ubuntu.com,此外需要的話還支持 IPv6。如果想強(qiáng)制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com,不過這并非默認(rèn)配置。
ntpd
ntp 的守護(hù)進(jìn)程 ntpd 會計(jì)算你的系統(tǒng)時(shí)鐘的時(shí)間偏移量并且持續(xù)的進(jìn)行調(diào)整,所以不會出現(xiàn)時(shí)間差距較大的更正,比如說,不會導(dǎo)致不連續(xù)的日志。該進(jìn)程只花費(fèi)少量的進(jìn)程資源和內(nèi)存,但對于現(xiàn)代的服務(wù)器來說實(shí)在是微不足道的了。
安裝
要安裝 ntpd,在終端命令行中輸入:sudo apt install ntp
配置
編輯 /etc/ntp.conf —— 增加/移除 server 行。默認(rèn)配置有以下服務(wù)器:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
修改配置文件之后,你需要重新加載 ntpd:
sudo systemctl reload ntp.service
查看狀態(tài)
使用 ntpq 來查看更多信息:
# sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334
+ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882
*145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343
+stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612
+europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792
PPS 支持
從 Ubuntu 16.04 開始,ntp 支持 PPS 規(guī)范,給 ntp 提供了本地時(shí)間源,以提供更高的精度。查看下邊列出的鏈接來獲取更多配置信息。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。