在實際使用中,計算機的時間比較重要,單位考勤、業務文檔的生成,都依據計算機以及服務器的時間。越來越多的服務器已經遷移到虛擬機中運行,而虛擬機的時間依賴于主機的時間,如果ESXi主機的時間不正確,則虛擬機的時間也不正確,這樣在實際生產中會造成問題。安裝VMware ESXi之后,要調整或修改VMware ESXi的時間配置,讓VMware ESXi的時間與服務器所在的時區同步。通常來說,如果網絡中有“NTP服 務 器”,如 管 理配置Microsoft的Active Directory服務器作為NTP服務器,則可以配置VMware ESXi使用局域網中的“NTP服務器”進行時間的同步。如果當前網絡中沒有NTP服務器,但VMware ESXi的配置可以連接到Internet,則可以采用Internet上提供的NTP服務器,例如VMware

圖1 NTP服務器是網絡中的一臺物理服務器
官方提供的4臺NTP服務器:
0.vmware.pool.ntp.org,
1.vmware.pool.ntp.org,
2.vmware.pool.ntp.org,
3.vmware.pool.ntp.org。
說 明 :NTP是Network Time Protocol的簡稱,是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源(如石英鐘、GPS等)做同步化,可以提供高精準度的時間校正(局域網中與標準時間差小于1毫秒,廣域網上與標準時間差為幾十毫秒)。
本文通過圖1所示的拓撲結構,介紹ESXi中NTP時間服務器的配置。
在圖1中,作為NTP時間服務器的是網絡中一臺獨立的物理機,這臺物理機與ESXi主機屬于同一個網絡。NTP是用的Windows Server 2012 R2的Active Directory服 務 器(在 將Windows升 級 到Active Directory服務器后,自動會啟用NTP服務)。在配置之后,ESXi主機會通過172.18.96.1的NTP進行同步,而ESXi中的虛擬機,例如“虛擬機 1”、“虛擬機 2”、“虛擬機3”這些運行在ESXi主機中的虛擬機,則會從ESXi主機進行同步。
如果作為NTP服務器的Active Directory,同 時 也是ESXi中的一臺虛擬機,那就存在一個“循環”的問題。虛擬機會從ESXi主機同步,而ESXi會從NTP同步,但作為NTP服務器的計算機又是ESXi中的一個虛擬機。因為同步是有周期的,如果ESXi主機時間不對的情況下,作為NTP服務器的虛擬機從ESXi獲得了不正確的時間,稍后ESXi從NTP同步,又會獲得錯誤的時間,這就造成“死循環”。
對于這種情況,就需要修改作為NTP服務器的虛擬機,不讓虛擬機與ESXi主機同步時間。
在默認情況下,即使未打開周期性時間同步,虛擬機有時也會與主機同步時間。若要完全禁用時間同步,則必須對虛擬機配置文件中的某些屬性進行設置。關閉虛擬機的電源,修改虛擬機的配置文件(.vmx),為時間同步屬性添加配置行,并將屬性設置為FALSE。
tools.syncTime ="FALSE"
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"

圖2 添加時間同步屬性配置行
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
如果虛擬機是VMware Workstation,則可以直接用“記事本”修改虛擬機配置文件,添加以上內容。如果虛擬機是VMware ESXi,則需要按照如下步驟操作。
1.使用vSphere Client連接到ESXi,關閉想禁用時間同步的虛擬機,編輯虛擬機設置。打開虛擬機屬性后,在“選項→高級→常規”選項中,單擊“配置參數”。
2.單擊“添加行”,會添加一個空行,在“名稱”及“值”處輸入配置參數(一行一個,需要添加六行,這些內容可以看本文開始介紹的配置行,不要添加=和英文的雙引號)。添加之后如圖2所示。添加后單擊“確定”按鈕返回虛擬機配。經過這樣設置,虛擬機的時間將不再與ESXi主機同步。
如果NTP工作不正常,可以參考本文內容一一檢查或配置。下面介紹將Windows Server(例 如 Windows Server 2008 R2、Windows Server 2012、Windows Server 2016)配置為NTP時間服務器的內容。
1.運 行regedit,打 開“注 冊 表 編 輯 器”,定位到HKEY_LOCAL_M A C H I N ES Y S T E MC u r r e n t C o n t r o l S e tS e r v i c e sW 3 2 T i m eParameters,雙擊 Type查看參數是否為NTP,如果不是請改為NTP。
2.雙 擊 NtpServer,為當前的Windows Server指定上游的NTP服務器(當前這臺即將配置為NTP服務器的計算機,使用的基準時間服務器,可以通過網絡訪問到),通常情況下Windows操作系統使用的NTP服務器是time.windows.com。可以雙擊NtpServer進行查看與修改。
3.修 改H K E Y_LOCAL_MACHINESYSTEMC u r r e n t C o n t r o l S e tServicesW32TimeConfig注冊表項中AnnounceFlags的值為5。
4.定 位 到HKEY_LOCAL_MACHINESYSTEMC u r r e n t C o n t r o l S e tServicesW32TimeTimeProvidersNtpClient,修改SpecialPolllnterval為十進制的600(10分鐘)。修改后如圖3所示。
5.在“服 務”中 修 改“Windows Time”的“啟動類型”為“自動(延遲啟動)”,并重新啟動Windows Time服務器。
經過上述設置,這臺Windows Server即可用作NTP服務器。
要為ESXi指定NTP,還需要修改配置文件。為了修改ESXi配置文件,需要使用SSH客戶端登錄到ESXi,要先啟用VMware ESXi的SSH服務,關于為ESXi主機啟用SSH服務的操作不做介紹。

圖3 修改參數后截圖

圖4 查看Type 參數
在啟用SSH服務之后,使用SSH客戶端登錄到ESXi主機,修改以下配置文件。
1.使用Xshell 5登錄到ESXi主機,進入ESXi的Shell后,執 行vi /etc/npt.conf命令。
2.用vi編輯器打開ntp.conf配置文件后,按Insert鍵進入編輯模式,移動光標到最后一行最后一個字符,按回車鍵新添加一行,輸入以下內容(全部為小寫):
tos maxdist 30
添加之后按Esc鍵,輸入:wq,按回車鍵存盤退出。
3.如果是ESXi 5.5的主機,還需要修改/etc/likewise/lsassd.conf文件,去 掉#sync-systemtime的注釋,并設置:
sync-system-time =yes
ESXi 6.0主機則沒有此項設置。
在ESXi中,管理員可以手動配置主機的時間設置,也可以使用NTP服務器同步主機的時間和日期。在大多數的情況下,第一次配置的時候應先調整主機的時間,然后再使用NTP進行同步。
(1)在“配置→時間配置”選項中,單擊右上角的“屬性”按鈕,在彈出的“時間配置”對話框中,調整VMware ESXi主機的時間與你所在時區當前時間相同,然后單擊“確定”按鈕。
(2)如果要設置VMware ESXi的NTP“時間服務器”,可以在圖4中單擊“選項”按鈕,在彈出的“NTP守護進程(ntpd)選項”對話框中,選擇“NTP設置”,單擊“添加”按鈕,添加NTP服務器。如果ESXi主機可以連接到Internet,則推薦采用 VMware提供的NTP服務器:
0.vmware.pool.ntp.org
1.vmware.pool.ntp.org
2.vmware.pool.ntp.org
3.vmware.pool.ntp.org
如果使用vSphere Client添加NTP服務器,則每行添加一個;如果使用vSphere Web Client添加NTP服務器,則可以同時添加多臺NTP服務器,NTP服務器之間需要用英文的逗號分隔。

圖5 ESXi時間已經同步
(3)如果使用局域網中配置的NTP服務器,例如本示例中,采用網絡中的Active Directory服務器作為時間服務器,其地址為172.18.96.1。
(4)在添加NTP服務器之后,可以在“常規”選項中,選擇“與主機一起啟動和停止”單選按鈕。設置之后單擊“確定”按鈕。
經過上述配置后,ESXi主機會從指定的NTP服務器進行時間同步,如圖5所示,右下角為172.18.96.1的Active Directory服務器的時間,而圖中ESXi的時間已經同步。
說明: 在使用vSphere Client、vSphere Web Client查看ESXi主機的時間時,顯示的時間與當前時區的時間相同,而使用vSphere Host Client登錄到ESXi查看主機時間時,顯示的是UTC時間。請注意,這只是不同的計時方式(和下午3點也被稱為15點相同),虛擬機的時間仍然是正確的。