跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / 使用 NTP 同步時間
適用範圍 SUSE Linux Enterprise Server 15 SP3

30 使用 NTP 同步時間

NTP (網路時間協定) 機制是一種協定,用於同步化網路上的系統時間。首先,機器可以從提供可靠時間來源的伺服器取得時間。其次,機器本身在網路中可以做為其他電腦的時間來源。這個目標是雙重的 — 即維護絕對正確的時間,並同步化網路內所有機器的系統時間。

維謢精準的系統時間對於許多情況都非重要。內建的硬體時鐘通常無法符合資料庫或叢集等應用程式的要求。手動校正系統時間有可能會造成嚴重的問題,因為,例如時間倒退將可能造成重要應用程式無法正常運作。在網路中,通常需要同步所有機器中的系統時間,而手動調整時間的做法並不可取。NTP 提供了一種用於解決這些問題的機制。NTP 服務會依據網路中可靠的時間伺服器持續調整系統時間。它可以進一步管理本地參考的時鐘,例如收音機控制的時鐘。

SUSE Linux Enterprise Server 15 起,採用 chrony 做為 NTP 的預設實作。chrony 包含兩個部分:chronyd 精靈可在開機時啟動,chronyc 指令行介面程式用於監控 chronyd 的效能,以及在執行時期變更各種操作參數。

SUSE Linux Enterprise Server 15.2 開始,如果不是設定為以精靈的形式執行,適用於 NTP 用戶端組態的 YaST 模組會設定 systemd-timer 而不是 cron 精靈來執行 chrony

30.1 使用 YaST 設定 NTP 用戶端

chrony 套件中隨附的 NTP 精靈 (chronyd) 預先設定為使用本地電腦硬體時鐘做為時間參考。硬體時鐘的精確度極大程度上取決於它的時間來源。例如,原子鐘或 GPS 接收器是非常精確的時間來源,而通用的 RTC 晶片則不是可靠的時間來源。YaST 簡化了 NTP 用戶端的組態。

在 YaST NTP 用戶端組態 (網路服務 › NTP 組態) 視窗中,您可以指定啟動 NTP 精靈的時間、組態來源的類型,以及新增自訂的時間伺服器。

NTP 組態視窗
圖 30.1︰ NTP 組態視窗

30.1.1 NTP 精靈啟動

您可以從下面三個選項中選擇啟動 NTP 精靈的時間:

僅手動

如果您想手動啟動 chrony 精靈,請選取僅手動

同步但不啟動精靈

選取同步但不啟動精靈可定期設定系統時間,而不會永久執行 chrony。您可以設定同步時間間隔(分鐘)

現在和開機時

選取現在和開機時可在系統開機時自動啟動 chronyd。建議您使用此設定。

30.1.2 組態來源的類型

組態來源下拉式方塊中,選取動態靜態。如果伺服器只使用固定的一組 (公用) NTP 伺服器,請設定靜態;如果您的內部網路透過 DHCP 提供 NTP 伺服器,則使用靜態更合適。

30.1.3 設定時間伺服器

供用戶端查詢的時間伺服器列在 NTP 組態視窗的下半部分。修改清單時,可依需要使用「新增」、「編輯」以及「刪除」。

按一下新增可新增新的時間伺服器:

新增時間伺服器
圖 30.2︰ 新增時間伺服器
  1. 位址欄位中,輸入要與機器時間同步的時間伺服器或時間伺服器池的 URL。填寫好 URL 後,按一下測試以驗證該 URL 是否指向有效的時間來源。

  2. 啟用快速初始同步,以便在 chronyd 精靈啟動時透過傳送更多要求來加速時間同步。

  3. 啟用離線啟動,以使自動啟動 chronyd 精靈且開機時可能沒有網際網路連接的系統加快開機速度。例如,對於由 NetworkManager 管理網路連接的筆記型機器,此選項非常實用。

  4. 按一下確定加以確認。

30.2 手動設定網路中的 NTP

chrony/etc/chrony.conf 檔案讀取其組態。若要讓電腦時鐘保持同步,您需要告訴 chrony 使用什麼時間伺服器。您可以使用特定的伺服器名稱或 IP 位址,例如:

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org

還可以指定名稱。池名稱會解析為數個 IP 位址:

pool pool.ntp.org
提示
提示:同一網路中的多部電腦

若要同步同一網路中多部電腦的時間,建議不要透過一部外部伺服器來同步所有電腦。比較好的做法是將其中一部電腦做為時間伺服器 (它與外部時間伺服器同步),其他電腦做為它的用戶端。將 local 指令新增至伺服器的 /etc/chrony.conf,以將其與權威時間伺服器區分開:

local stratum 10

若要啟動 chrony,請執行:

systemctl start chronyd.service

啟始化 chronyd 後,系統需要花費一些時間來穩定時間,以及建立用於校正本地電腦時鐘的偏移檔案。使用漂移檔案,可以在電腦開機時計算硬體時鐘的系統錯誤。它會立即使用校正,使系統時間具有更高的穩定性。

若要啟用 chrony,以便該服務在開機時自動啟動,請執行:

systemctl enable chronyd.service

30.3 在執行時期使用 chronyc 設定 chronyd

在執行時期,您可以使用 chronyc 來變更 chronyd 的行為。它會產生有關 chronyd 操作的狀態報告。

您可以採用互動模式或非互動模式執行 chronyc。若要採用互動模式執行 chronyc,請在指令行上輸入 chronyc。如此會顯示提示符並等待您輸入指令。例如,若要檢查有多少 NTP 來源在線上或離線,請執行:

root # chronyc
chronyc> activity
200 OK
4 sources online
2 sources offline
1 sources doing burst (return to online)
1 sources doing burst (return to offline)
0 sources with unknown address

若要結束 chronyc 的提示符,請輸入 quitexit

如果您不需要使用互動式提示符,請直接輸入指令:

root # chronyc activity
注意
注意:暫時的變更

使用 chronyc 進行的變更不是永久性的。當 chronyd 下次重新啟動時,它們將會遺失。若要進行永久變更,請修改 /etc/chrony.conf

如需 chronyc 指令的完整清單,請參閱它的手冊頁 (man 1 chronyc)。

30.4 執行時期的動態時間同步

儘管 chronyd 通常在開機時沒有網路連接的系統上啟動,但該工具無法解析組態檔案中所指定時間伺服器的 DNS 名稱。

chronyd 會依遞增的時間間隔,不斷嘗試解析由 serverpoolpeer 指令指定的時間伺服器名稱,直到成功為止。

如果啟動 chronyd 時將無法存取時間伺服器,您可以指定 offline 選項:

server server_address offline

如此,chronyd 將不會嘗試輪詢該伺服器,除非使用以下指令啟用它:

root # chronyc online server_address

設定 auto_offline 選項後,如果向時間伺服器傳送了兩個要求,但未接收到任何回應,chronyd 會假設時間伺服器已離線。此選項使 chronyc 在網路連結斷開時,無需執行「離線」指令。

30.5 設定本地參考時鐘

套裝軟體 chrony 依賴於其他程式 (例如 gpsd) 來透過 SHM 或 SOCK 驅動程式存取計時資料。在 /etc/chrony.conf 中使用 refclock 指令可指定要當成時間來源使用的硬體參考時鐘。它有兩個強制參數:驅動程式名稱和驅動程式特定的參數。這兩個參數後面跟著零或多個 refclock 選項。chronyd 包含以下驅動程式:

  • PPS:核心「pulse per second」API 的驅動程式。例如:

    refclock PPS /dev/pps0 lock NMEA refid GPS
  • SHM:NTP 共用記憶體驅動程式。例如:

    refclock SHM 0 poll 3 refid GPS1
    refclock SHM 1:perm=0644 refid GPS2
  • SOCK:Unix 網域通訊端驅動程式。例如:

    refclock SOCK /var/run/chrony.ttyS0.sock
  • PHC:PTP 硬體時鐘驅動程式。例如:

    refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37
    refclock PHC /dev/ptp1:nocrossts poll 3 pps

如需各驅動程式的選項的詳細資訊,請參閱 man 8 chrony.conf

30.6 與外部時間參考 (ETR) 的時鐘同步

支援將時鐘與外部時間參考 (ETR) 同步。外部時間參考每 2**20 (2 的 20 次方) 微秒傳送一次振盪器訊號與同步訊號,以將所有連結伺服器的 TOD 時鐘保持同步。

為了便利,兩個 ETR 裝置可連接到一個機器。如果時鐘偏差超出同步檢查容錯,將會對所有 CPU 執行一次機器檢查,這表示時鐘未同步。如果出現這種狀況,則所有啟用了 DASD I/O 到 XRC 的裝置就會停止運作,直到時鐘重新同步。

ETR 支援透過兩個 sysfs 屬性啟動;請以 root 身分執行下列指令:

echo 1 > /sys/devices/system/etr/etr0/online
echo 1 > /sys/devices/system/etr/etr1/online