Virtualbox

使用 ntpd 監控時間漂移,但不用於調整

  • November 26, 2019

我想使用通用ntpd守護程序來測試虛擬機是否保持時間,而不讓它實際調整時鐘。

我在 macOS 系統上的 VirtualBox 中執行 Solaris 11.4(Oracle 的英特爾標準映像),但我無法獲得正確同步的時間。讓我感到震驚的是,VM 很可能已經在使用 VirtualBox Guest Additions 來執行此操作(我不知道這是如何工作的),並且我可能會因為ntpd在來賓中執行而擾亂了時間保持。

為了測試這一點,我想我ntpd應該在 Solaris VM 中設置來監控一些公共時間伺服器,但不知何故阻止它修改本地時鐘。這樣我就可以查看loopstatspeerstats日誌如何隨著時間的推移而查看本地時鐘是否真的保持良好的時間。

問題是我找不到任何關於如何停止ntpd調整本地時鐘的提示。

我過去也想在我使用openntpd(來自 OpenBSD)進行實際計時的系統上執行此操作。然後,ntpd守護程序可以坐在後台進行監控,而不會干擾。但是我當時也找不到任何方法來實現這一點。

ntpd

了解您必須使用 ntpd,AFAIK 的唯一選項是:

禁用ntp

手冊頁所示ntp.conf有可能禁用 ntp回饋循環,或者用外行的話來說:刪除計算時間伺服器和本地時鐘之間時間校正的能力。ntp.conf啟動此類選項所需的行是:

disable ntp

注意:使用此選項時,ntpd 可能給其他系統要求時間參考的時間可能是錯誤的/關閉的。使用一行deny來拒絕來自其他系統的所有時間查詢似乎是合理的,除非您想監視來自外部系統的時間漂移(使用拒絕並允許外部系統的 IP)。

**注意:**我並不完全清楚 ntpd 實際上讓系統時鐘“自由執行”。但是,它是一個記錄的選項,因此如果 ntpd 不符合記錄的內容,則它是一個錯誤。

敏思

minsane minsane

這是時鐘選擇算法可用的最小候選數,以便為分群算法生成一個或多個真嵌合體。如果可用的數量少於此數量,則時鐘不受約束並允許自由執行

這是通過設置一行( in ntp.conf)來完成的,例如:

tos minsane 100

或其他一些高數字(大於可用或使用的伺服器)。

注意:我不清楚核心漂移值是否被重置為 0 以避免時鐘緩慢改變值。disable kernel額外設置禁用核心規程功能可能是合理的。

有關的

ntpd -qn

ntpd伺服器執行時ntpq -pn,可以報告 ntpd 伺服器在保持系統時鐘同步方面的工作情況。這是記錄時差的另一種方法。

ntpdate -q

該軟體包ntpdate(標記為已棄用)可用於檢查時差:

ntpdate -q 'pool.ntp.org'         # marked as deprecated.

使用ntpdate -qu 'pool.ntp.org'該命令不需要 root 權限即可執行(-u意味著“使用非特權網路埠”,但執行檔必須可供使用者訪問)。

sntp

有一個簡單的程序可以查詢(如果沒有使用 -s 或 -S 選項,則不會更改):

sntp pool.ntp.org

日期

該程序rdate能夠顯示遠端時間(和本地時間):

rdate -np pool.ntp.org; date

其中-n意味著:使用 SNTP (RFC 2030) 而不是(預設)RFC 868 時間協議;並且,只列印結果而不進行任何實際更改。

但是,此程序僅限於整秒(而不是分數)的解析度。而且,它在 solaris 中沒有選項

計時碼表

ntp(chrony)的替換包可以在不設置系統時鐘的情況下執行時差測試:

chronyd -Q 'pool pool.ntp.org iburst'

我相信這些都是檢測(不改變)網際網路ntp時間和系統時間之間時間差的方法。

引用自:https://unix.stackexchange.com/questions/553885