在 Ubuntu 中使用 NTP 進行時間同步
在 Ubuntu 中,是使用 ntpdate
和 ntpd
來同步時間的。
timedatectl
在最新的 Ubuntu 版本中,timedatectl
替代了老舊的 ntpdate
。默認情況下,timedatectl
在系統啟動的時候會立刻同步時間,並在稍後網路連接激活後通過 socket 再次檢查一次。
如果已安裝了 ntpdate
/ ntp
,timedatectl
會退而讓你使用之前的設置。這樣確保了兩個時間同步服務不會相互衝突,同時在你升級的時候還保留原本的行為和配置。但這也意味著從舊版本的發行版升級時 ntp
/ntpdate
仍會安裝,因此會導致新的基於 systemd 的時間服務被禁用。
timesyncd
在最新的 Ubuntu 版本中,timesyncd
替代了 ntpd
的客戶端的部分。默認情況下 timesyncd
會定期檢測並同步時間。它還會在本地存儲更新的時間,以便在系統重啟時做時間單步調整。
通過 timedatectl
和 timesyncd
設置的當前時間狀態和時間配置,可以使用 timedatectl status
命令來進行確認。
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
來同步時間,則 NTP synchronized
將被設置為 yes
。
timedatectl
和 timesyncd
用來獲取時間的 nameserver 可以通過 /etc/systemd/timesyncd.conf
來指定,另外在 /etc/systemd/timesyncd.conf.d/
下還有靈活的附加配置文件。
ntpdate
由於 timedatectl
的存在,各發行版已經棄用了 ntpdate
,默認不再進行安裝。如果你安裝了,它會在系統啟動的時候根據 Ubuntu 的 NTP 伺服器來設置你電腦的時間。之後每當一個新的網路介面啟動時,它就會重新嘗試同步時間 —— 在這期間只要其涵蓋的時間差不是太大,它就會慢慢偏移時間。該行為可以通過 -B
/-b
開關來進行控制。
ntpdate ntp.ubuntu.com
時間伺服器
默認情況下,基於 systemd 的工具都是從 ntp.ubuntu.com
請求時間同步的。經典的基於 ntpd
的服務基本上都是使用 [0-3].ubuntu.pool.ntp.org
池中的 2.ubuntu.pool.ntp.org
,還有 ntp.ubuntu.com
,此外需要的話還支持 IPv6。如果想強制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com
,不過這並非默認配置。
ntpd
ntp 的守護進程 ntpd
會計算你的系統時鐘的時間偏移量並且持續的進行調整,所以不會出現時間差距較大的更正,比如說,不會導致不連續的日誌。該進程只花費少量的進程資源和內存,但對於現代的伺服器來說實在是微不足道的了。
安裝
要安裝 ntpd
,在終端命令行中輸入:
sudo apt install ntp
配置
編輯 /etc/ntp.conf
—— 增加/移除 server
行。默認配置有以下伺服器:
# 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
查看狀態
使用 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 規範,給 ntp 提供了本地時間源,以提供更高的精度。查看下邊列出的鏈接來獲取更多配置信息。
參考資料
- 參考 Ubuntu Time wiki 頁來獲取更多信息
- ntp.org,網路時間協議項目主頁
- ntp.org,關於配置 PPS 的 FAQ
via: https://help.ubuntu.com/lts/serverguide/NTP.html
作者:Ubuntu 譯者:GHLandy 校對:jasminepeng
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive