Linux

在 RHEL6 上啟用帶有時鐘轉換的 NTP

  • May 3, 2017

我有一個執行 Oracle 數據庫的 RHEL6 伺服器。建構伺服器時,未啟用或配置 NTP。我的任務是在不影響數據庫的情況下做到這一點。在做了一些研究之後,我假設在 RHEL6 上啟用 NTP 時,時間會漂移直到同步。但是,當我在我的測試機器上執行此操作時,系統時鍾立即跳轉到 NTP 時間。在啟用 NTP 之前,時間大約減少了 2 1/2 分鐘。當我執行該ntpstat命令時,它有一段時間不同步,但現在已同步。

那麼,如何啟用 NTP 並讓它漂移到正確的時間,而不是“強制”它同步?謝謝你的幫助!!

[root@host etc]# service ntpd status
ntpd is stopped
[root@host etc]#
[root@host etc]# ntpdate -q time.mydomain.com
server 1.1.1.1, stratum 2, offset 154.573234, delay 0.02890
2 May 15:47:59 ntpdate[21584]: step time server 1.1.1.1 offset 154.573234 sec
[root@host etc]#
[root@host etc]# service ntpd start
Starting ntpd:                                             [  OK  ]
[root@host etc]# ntpdate -q time.mydomain.com
server 1.1.1.1, stratum 2, offset -0.000118, delay 0.02876 
2 May 15:50:47 ntpdate[21606]: adjust time server 1.1.1.1 offset -0.000118 sec
[root@host etc]# date
Tue May  2 15:51:01 EDT 2017
[root@host etc]# ntpstat
unsynchronised
polling server every 64 s
[root@host etc]# ntpstat
synchronised to NTP server (1.1.1.1) at stratum 3
time correct to within 80 ms
polling server every 1024 s

如果它關閉,NTPD 可以以緩慢的增量調整您的時鐘,時鐘擺動。其背後的想法是緩慢的步驟不會導致軟體計時器出現問題,日誌文件和數據中的奇怪間隙等。

Unix 核心將可能的最大轉換速率限制為百萬分之 500 (PPM)。因此,如果時鐘超出可接受的範圍,則時鐘每秒可能需要 2000 秒。

根據手冊頁,如果您的時鐘超過 1000 秒,ntpd 將無法工作。(儘管您可以使用**-g**開關來調整它,慢慢補償 1000 秒的偏移量已經需要超過 3 週的時間。)

其次,您在啟動時觀察到的時間跳躍ntpd是預設 ntpd 行為的結果,當 ntpd 啟動時偏移量大於 128 毫秒時,它會步進而不是擺動時鐘。當 ntpd 在引導時啟動但不是您在正在執行的系統上想要的那樣時,這是有道理的。

您可以通過將-x開關添加到 ntpd 的啟動選項來防止這種情況。從手冊:

-x

通常,如果偏移量小於步長門檻值(預設為 128 毫秒),則時間會被轉換,如果高於門檻值,則時間會被轉換。此選項將門檻值設置為 600 秒,這完全在手動設置時鐘的準確度視窗內。注意:由於典型 Unix 核心的轉換速率限制為 0.5 ms/s,因此每秒的調整需要 2000 s 的攤銷間隔,因此,多達 600 s 的調整將需要將近 14 天才能完成。此選項可與 -g 和 -q 選項一起使用

/etc/sysconfig/ntpd在啟動 ntpd 服務之前將在配置文件中調整的 RHEL 系統中:

# /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x" 

引用自:https://serverfault.com/questions/847998