自動時間同步:ntpdate
有效,但 chrony
無效
我的 Linux 伺服器的時間同步有問題。這台機器和 NTP 伺服器都位於(較小的)大學數據中心,因此是本地地址。
奇怪的是該
ntpdate
命令有效:ntpdate -u 172.16.0.25
輸出:
17 Jan 15:03:53 ntpdate[25993]: adjust time server 172.16.0.25 offset 0.036043 sec
但是,
chronyd
沒有(它只是掛起):chronyd -q 'server 172.16.0.25 iburst'
我正在嘗試所有方法來設置自動時間同步,
ntpd
但沒有成功,最後求助於chrony
但仍然無法弄清楚。這是發生了什麼事
ntpd
。我使用https://vitux.com/how-to-setup-ntp-server-and-client-on-debian-10ntpdate
上的說明進行安裝。conf文件有一個命令server 172.16.0.25 prefer iburst
而係統狀態ntp報告
Jan 18 10:26:11 akulab1 ntpd[26957]: kernel reports active service TIME_ERROR: 0x41: Clock Unsynchronized
具有以下
ntpq -p
輸出HKS-SRV01.unica .LOCL. 1 u 9 64 15 0.557 2275.65 9.515 –
但是,一段時間後,服務報告
Jan 18 10:31:01 akulab1 ntpd[26957]: ntpd exiting on signal 15 (Terminated)
因為 NTP 同步沒有成功。但是, ntpdate -u 172.16.0.25 報告同步:18 Jan 10:33:13 ntpdate
$$ 26990 $$: step time server 172.16.0.25 offset 2.282101 sec (如果我沒記錯的話…) – ksonofre 7 分鐘前 這是我的
/etc/ntp.conf
文件:driftfile /var/lib/ntp/ntp.drift leapfile /usr/share/zoneinfo/leap-seconds.list statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server 172.16.0.25 prefer iburst restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited restrict 127.0.0.1 restrict ::1 restrict source notrap nomodify noquery
我再次重新啟動了 NTP 服務:
systemctl restart ntp
的輸出
ntpq -np
如下:root@akulab1:~# ntpq -np remote refid st t when poll reach delay offset jitter ============================================================================== 172.16.0.25 .LOCL. 1 u 63 64 377 0.518 104.685 14.815
但是,服務 (
systemctl status ntp
) 仍然報告:Jan 18 11:04:10 akulab1 ntpd[27089]: kernel reports TIME_ERROR: 0x4041: Clock Unsynchronized
而且,在我設置
timedatectl set-ntp true
NTP 服務後,它會簡單地關閉,即報告不活動。我再次重新啟動了 ntpd 服務並且它處於活動狀態。此外,我已經等了一個多小時進行同步,但它從來沒有得到它(伺服器地址前面沒有星號或加號) - 這是輸出
ntpq -np
:remote refid st t when poll reach delay offset jitter ============================================================================== 172.16.0.25 .LOCL. 1 u 61 64 377 0.588 269.847 14.797
此外,這是
ntpdate -qu
命令的輸出:18 Jan 13:57:44 ntpdate[1975]: no servers can be used, exiting
好的,上面的命令不完整,所以
ntpdate -qu 172.16.0.25
有以下輸出:server 172.16.0.25, stratum 1, offset 0.435131, delay 0.02621 18 Jan 14:51:56 ntpdate[6951]: adjust time server 172.16.0.25 offset 0.435131 sec
並
ntpq -np
給出以下內容:remote refid st t when poll reach delay offset jitter ============================================================================== 172.16.0.25 .LOCL. 1 u 17 64 377 0.554 436.092 14.279
解決方案在下面接受的答案中給出。我假設時間同步現在正在工作,但我仍然會跟踪時鐘漂移並更新我的問題,如果它沒有正確同步。
最終解決方案發佈在這篇文章中:ntp server reachable but never select/set the time
你的時鐘幾乎肯定是同步的。“時鐘未同步”具有誤導性,因為它僅在
ntpd
等待與其上游源同步時適用。NTP 有兩條路由:
systemd
一條(通過 管理timedatectl
)和ntpd
一條(通過 監控ntpq
)。我建議你timedatectl
一個人離開。systemctl start ntp # don't restart ntpd if it was already running watch -n1 ntpq -pn # while :; do clear; date; echo; ntpq -pn; sleep 1; done
您應該會看到列出的上游,最初的可達性為 0,在大約五分鐘的時間內奇怪地增加到 377。它應該
+
在左側列中顯示它是時間同步的候選者,並更改為*
最終被接受的時間。延遲和偏移欄位以毫秒為單位。在你的大學 WAN 中,我希望延遲很低,500ns 非常好。在數小時和數天內,偏移量應趨於零。
這是我的伺服器中一個穩定範例的摘錄。37ms 的延遲對於 xDSL 線路來說是合理的。來自上行伺服器的偏移量非常低,並且抖動是可以忍受的:
remote refid st t when poll reach delay offset jitter ============================================================================== *51.155.16.62 .GPS. 1 u 10 64 377 37.420 0.524 34.067
sysinfo
您可以使用 NTP 的命令查看同步狀態。在這裡,我們正在查看第一行輸出;注意sync_ntp
,它的存在確認我的客戶端與上游伺服器同步:ntpq -c sysinfo | head -n1 associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
最後的警告。當您有服務試圖保持時間正確時,不要更改本地系統的時間,這一點很*重要。*該服務會注意到時間的變化,並假設本地時鐘不能保持正確的時間。然後它會非常努力地糾正時鐘,最終可能會導致它嚴重擺動,本地時鐘無法再與上游同步。請參閱NTPD 多久(以及何時)更新時間?
如果發生這種情況,您將需要等待(很長時間)讓 NTP 注意到或自行修復。您可以通過禁用和停止 ntpd (
systemctl stop ntp; systemctl disable ntp
) 自行修復它,然後刪除/etc/adjtime
並立即重新啟動。(您可能需要兩次執行此刪除/重新啟動步驟。)然後使用ntpdate -u 51.155.16.62
正確設置時間並再次重新啟動。最後,重新啟用 NTP (systemctl enable ntp; systemctl start ntp
)。如果您已
ntpdate
安裝,您可以使用ntpdate -qu {server}
. 請勿在ntpd
執行時嘗試設置時間。其他參考資料