Ict-innovation/LPI/108.1
考生應能夠正確維護系統時間並透過 NTP 同步時鐘
關鍵知識領域
- 設定系統日期和時間。
- 將硬體時鐘設定為 UTC 的正確時間。
- 配置正確的時區。
- 基本 NTP 配置。
- 瞭解使用 pool.ntp.org 服務
Linux 系統中存在兩個獨立的時鐘。硬體時鐘(在主機板上)獨立於作業系統執行,即使計算機關閉時也是如此。系統時間由 Linux 核心維護,並由計時器中斷遞增。Linux 啟動時,它會從硬體時鐘初始化系統時間。Linux 通常不會在執行時再次引用硬體時鐘。
可以使用 hwclock 實用程式檢查和修改硬體時鐘。主要選項是
-r 或 --show 列印當前時間
-w 或 --systohc 將硬體時鐘設定為當前系統時間
-s 或 --hctosys 將系統時間設定為當前硬體時鐘時間
--set 將硬體時鐘設定為指定的時間和日期
只有超級使用者可以更改硬體時鐘設定
例子
|
# hwclock --set --date="10/14/2010 16:55:05" # hwclock --show Thu 14 Oct 2010 04:55:09 PM BST -0.673528 seconds |
系統時間由核心維護,作為自 1970 年 1 月 1 日開始的秒數。這個時間點被稱為“紀元”。
使用 date 命令顯示系統時間
|
$ date Tue Sep 14 10:18:33 BST 2010 |
系統時間也可以使用 date 命令更改。只有超級使用者可以執行此操作。語法是
date MMDDhhmmCCYY[.ss]
例子
|
# date 101216552010 Tue Oct 12 16:55:00 BST 2010 |
時區
計算機的硬體時鐘通常設定為 UTC,無論計算機的地理位置如何。但是,date 命令報告(和設定)的時間通常是計算機的本地時區。時區定義了本地時間與 UTC 之間的偏移量。在某些 Linux 發行版中,時區在 /etc/timezone 檔案中定義。
除了 UCT 時間,一些國家/地區還實施“夏令時”政策,每年在特定日期新增或刪除一小時。這些政策由 /usr/share/zoneinfo/ 中的檔案定義。這些是二進位制檔案。透過將適當的區域檔案複製到 /etc/localtime,可以建立特定的區域政策。
例如,如果我們將 /usr/share/zoneinfo/Hongkong 複製到 /etc/localtime,那麼下次我們執行 date 時,它將為我們提供香港的時間。這是因為 date 每次執行時都會讀取 /etc/localtime。
使用 NTP
由於時鐘頻率中的微小誤差,硬體時鐘和系統時間都可能漂移。隨著時間的推移,這些漂移可能會累積。計算機之間的時鐘偏差可能會導致諸如 make 之類的工具出現問題,這些工具會檢查檔案的時間戳,以及使用時間戳來限制身份驗證訊息有效性的身份驗證協議。
NTP(網路時間協議)是一種協議,可以將計算機的時鐘與時間伺服器同步,精度達到毫秒級。
直接更新(例如,透過原子鐘)的計算機稱為主時間伺服器,用於更新更多數量的從屬時間伺服器。這形成類似於 DNS 結構的樹結構。根伺服器位於第一層或stratum,從屬伺服器位於第二層,依此類推。
配置客戶端以查詢 NTP 伺服器:
一個名為 ntpd 的 NTP 守護程式用於定期查詢一個或多個遠端時間伺服器。它調整核心時鐘的速率,使其逐漸調整到正確的時間。避免突然變化,尤其是將時鐘調回。守護程式非常易於配置。只需在 /etc/ntp.conf 中有一個或多個伺服器條目指向公共或企業 NTP 伺服器即可。可以線上在 http://support.ntp.org 找到公共 NTP 伺服器列表
pool.ntp.org 上的時間伺服器使用 DNS“迴圈”從自願加入池的眾多時間伺服器池中隨機選擇一個。這對於許多終端使用者來說已經足夠了。使用池的簡單 ntp.conf 檔案可能如下所示
server 0.pool.ntp.orgserver 1.pool.ntp.org driftfile /var/lib/ntp/ntp.drift
NTP 協議還可以根據一系列查詢來估計硬體時鐘的頻率誤差;此估計值將寫入由 driftfile 標籤引用的檔案。
ntpd 啟動後,它本身將成為一個 NTP 伺服器,在埠 123 上提供使用 UDP 的服務。
一次性調整:
ntp 包還提供 ntpdate 工具,可用於從命令列設定時間。-q 選項只是查詢伺服器,沒有 -q,命令將設定系統時間。
例子
|
$ ntpdate -q ntp.ubuntu.com server 91.189.94.4, stratum 2, offset 0.009249, delay 0.05046 14 Sep 11:25:23 ntpdate[9493]: adjust time server 91.189.94.4 offset 0.009249 |
以下是使用過的檔案、術語和實用程式的部分列表:* /usr/share/zoneinfo
- /etc/timezone
- /etc/localtime
- /etc/ntp.conf
- date
- hwclock
- ntpd
- ntpdate
- pool.ntp.org