本技術(shù)涉及時鐘同步,特別是涉及一種虛擬機(jī)時鐘同步方法、產(chǎn)品、計算機(jī)設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、隨著數(shù)據(jù)中心云計算的成熟部署,大量業(yè)務(wù)已經(jīng)遷移上云。然而,對于一些對時鐘精度要求極高的業(yè)務(wù),如超高清4k視頻播控等業(yè)務(wù),在上云過程中面臨著諸多挑戰(zhàn)。虛擬化技術(shù)在時鐘模擬精度方面存在不足,容易導(dǎo)致視頻播出黑屏、業(yè)務(wù)卡頓等問題。這些問題嚴(yán)重影響了視頻類業(yè)務(wù)的穩(wěn)定性和用戶體驗。為了確保數(shù)據(jù)傳輸?shù)耐?、有序和穩(wěn)定運行,精確的時鐘及策略配置成為視頻類業(yè)務(wù)制作的安全保障。
技術(shù)實現(xiàn)思路
1、基于此,提供一種虛擬機(jī)時鐘同步方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì),解決現(xiàn)有技術(shù)中虛擬機(jī)時鐘同步精度不足,容易導(dǎo)致視頻播出黑屏、業(yè)務(wù)卡頓的問題。
2、一方面,提供一種虛擬機(jī)時鐘同步方法,所述方法包括:
3、在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問;
4、配置所述宿主機(jī)的所述高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步;
5、所述虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述宿主機(jī)的所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù),將所述高精度時鐘模擬模塊的當(dāng)前時間數(shù)據(jù)復(fù)制到所述虛擬機(jī)的時鐘設(shè)備。
6、在其中一個實施例中,所述在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問包括:
7、在宿主機(jī)上安裝支持硬件時間戳功能的網(wǎng)卡;
8、在所述網(wǎng)卡中安裝并配置支持獲取硬件時間戳的驅(qū)動;
9、將所述網(wǎng)卡作為計算節(jié)點,在所述網(wǎng)卡中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口,所述高精度時鐘模擬模塊通過所述虛擬設(shè)備接口連接至虛擬機(jī);
10、設(shè)置所述虛擬機(jī)的內(nèi)核模塊與所述宿主機(jī)的高精度時鐘模擬模塊通過所述虛擬設(shè)備接口連接。
11、在其中一個實施例中,所述配置所述宿主機(jī)的所述高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步包括:
12、設(shè)置高精度時鐘源包括gps時鐘或原子鐘;
13、配置所述宿主機(jī)通過網(wǎng)絡(luò)或時間同步軟件定期與所述高精度時鐘源進(jìn)行時間同步;
14、當(dāng)所述宿主機(jī)與所述高精度時鐘源進(jìn)行時間同步時,控制所述網(wǎng)卡的系統(tǒng)時鐘采用精確時間協(xié)議服務(wù)通過所述硬件時間戳與所述高精度時鐘源進(jìn)行時間同步。
15、在其中一個實施例中,所述控制所述網(wǎng)卡的系統(tǒng)時鐘采用精確時間協(xié)議服務(wù)通過所述硬件時間戳與所述高精度時鐘源進(jìn)行時間同步包括:
16、在所述網(wǎng)卡的驅(qū)動層實現(xiàn)硬件時間戳,設(shè)置所述網(wǎng)卡通過硬件加速方式獲取時間戳;
17、設(shè)置時鐘同步協(xié)議,用于計算所述網(wǎng)卡的系統(tǒng)時鐘與所述高精度時鐘源之間的時鐘偏差;
18、所述網(wǎng)卡與所述高精度時鐘源之間交互發(fā)送與接收帶有時間戳的報文,通過所述時鐘同步協(xié)議判斷所述高精度時鐘源與所述網(wǎng)卡的系統(tǒng)時鐘之間是否存在時鐘偏差;
19、若存在所述時鐘偏差,則根據(jù)所述時鐘偏差調(diào)整所述網(wǎng)卡的系統(tǒng)時鐘的偏差。
20、在其中一個實施例中,所述網(wǎng)卡與所述高精度時鐘源之間交互發(fā)送與接收帶有時間戳的報文,通過所述時鐘同步協(xié)議判斷所述高精度時鐘源與所述網(wǎng)卡的系統(tǒng)時鐘之間是否存在時鐘偏差包括:
21、所述高精度時鐘源向所述網(wǎng)卡發(fā)送一個時間同步報文,并記錄下發(fā)送所述時間同步報文的時間戳t1;
22、當(dāng)所述網(wǎng)卡接收到所述時間同步報文后,記錄下接收所述時間同步報文的時間戳t2;
23、所述網(wǎng)卡在接收到所述時間同步報文時,生成一個響應(yīng)報文并發(fā)送回所述高精度時鐘源,同時記錄下發(fā)送所述響應(yīng)報文的時間戳t3;
24、當(dāng)所述高精度時鐘源接收到所述響應(yīng)報文后,記錄下接收所述響應(yīng)報文的時間戳t4;
25、獲取所述網(wǎng)卡與所述高精度時鐘源之間的往返總時延為(t4-t1)-(t3-t2);
26、所述時鐘同步協(xié)議中假設(shè)所述網(wǎng)卡與所述高精度時鐘源發(fā)送和接收報文的兩個方向的時延相同,則將所述往返總時延除以二即為單向時延;
27、根據(jù)所述單向時延獲取從所述網(wǎng)卡至所述高精度時鐘源的時間偏差δt=(t2-t1)-[(t4-t1)-(t3-t2)]/2;
28、當(dāng)所述時間偏差δt不為零時,判定所述高精度時鐘源與所述網(wǎng)卡的系統(tǒng)時鐘之間存在時鐘偏差;
29、當(dāng)δt<0時,則判定所述網(wǎng)卡的系統(tǒng)時鐘早于所述高精度時鐘源的時鐘時間,將所述網(wǎng)卡的系統(tǒng)時鐘的時間調(diào)慢δt;
30、當(dāng)δt>0時,則判定所述網(wǎng)卡的系統(tǒng)時鐘晚于所述高精度時鐘源的時鐘時間,將所述網(wǎng)卡的系統(tǒng)時鐘的時間調(diào)快δt。
31、在其中一個實施例中,所述虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述宿主機(jī)的所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù),將所述高精度時鐘模擬模塊的當(dāng)前時間數(shù)據(jù)復(fù)制到所述虛擬機(jī)的時鐘設(shè)備包括:
32、將所述虛擬機(jī)設(shè)置在客戶機(jī)中,所述客戶機(jī)包括內(nèi)核態(tài)空間和用戶態(tài)空間,所述內(nèi)核態(tài)空間中設(shè)有內(nèi)核模塊,所述用戶態(tài)空間中設(shè)有時鐘設(shè)備;
33、設(shè)置所述虛擬機(jī)定期與所述宿主機(jī)的高精度時鐘模擬模塊進(jìn)行時間同步;
34、在所述用戶態(tài)空間中,當(dāng)時間同步服務(wù)通過設(shè)置硬件時鐘命令調(diào)用所述時鐘設(shè)備時,所述內(nèi)核模塊調(diào)用超級調(diào)用(hypercall)路由到所述宿主機(jī)的所述高精度時鐘模擬模塊,請求獲取所述宿主機(jī)的墻上時間/計數(shù)器周期;
35、所述高精度時鐘模擬模塊超級調(diào)用服務(wù)響應(yīng)對應(yīng)請求并將當(dāng)前時間數(shù)據(jù)發(fā)送回所述客戶機(jī);
36、在所述客戶機(jī)中將所述當(dāng)前時間數(shù)據(jù)復(fù)制到用戶態(tài)空間的所述時鐘設(shè)備。
37、在其中一個實施例中,所述虛擬機(jī)時鐘同步方法還包括:
38、設(shè)置一個所述宿主機(jī)上連接多個虛擬機(jī),所述多個虛擬機(jī)形成虛擬化集群,所述宿主機(jī)構(gòu)成所述虛擬化集群的計算節(jié)點;
39、設(shè)置調(diào)度器模塊收集并監(jiān)測所述虛擬化集群內(nèi)每個計算節(jié)點的時鐘偏差;
40、利用調(diào)度算法評估時鐘偏差,將時鐘偏差超出預(yù)設(shè)閾值的計算節(jié)點對應(yīng)的虛擬機(jī)從所述虛擬化集群中移除;
41、從所述虛擬化集群中移除的計算節(jié)點進(jìn)行時鐘同步調(diào)整,直至偏差縮小至小于所述預(yù)設(shè)閾值后,將調(diào)整后計算節(jié)點對應(yīng)的虛擬機(jī)重新加入所述虛擬化集群的故障域,所述故障域內(nèi)的虛擬機(jī)允許進(jìn)行高可用(ha)和遷移操作。
42、另一方面,提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,該計算機(jī)程序被處理器執(zhí)行時實現(xiàn)以下步驟:
43、在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問;
44、配置所述宿主機(jī)的所述高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步;
45、所述虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述宿主機(jī)的所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù),將所述高精度時鐘模擬模塊的當(dāng)前時間數(shù)據(jù)復(fù)制到所述虛擬機(jī)的時鐘設(shè)備。
46、再一方面,提供了一種計算機(jī)設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)以下步驟:
47、在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問;
48、配置所述宿主機(jī)的所述高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步;
49、所述虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述宿主機(jī)的所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù),將所述高精度時鐘模擬模塊的當(dāng)前時間數(shù)據(jù)復(fù)制到所述虛擬機(jī)的時鐘設(shè)備。
50、又一方面,提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)以下步驟:
51、在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問;
52、配置所述宿主機(jī)的所述高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步;
53、所述虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述宿主機(jī)的所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù),將所述高精度時鐘模擬模塊的當(dāng)前時間數(shù)據(jù)復(fù)制到所述虛擬機(jī)的時鐘設(shè)備。
54、上述虛擬機(jī)時鐘同步方法、產(chǎn)品、計算機(jī)設(shè)備和存儲介質(zhì),通過在宿主機(jī)的內(nèi)核中設(shè)置高精度時鐘模擬模塊,所述高精度時鐘模擬模塊設(shè)置虛擬設(shè)備接口供虛擬機(jī)訪問,高精度時鐘模擬模塊定期與高精度時鐘源進(jìn)行時間同步,將虛擬機(jī)定期通過所述虛擬設(shè)備接口從所述高精度時鐘模擬模塊中獲取當(dāng)前時間數(shù)據(jù)進(jìn)行時間同步,使得虛擬機(jī)的時間與宿主機(jī)的時間保持一致,避免了虛擬機(jī)時鐘同步精度不足導(dǎo)致視頻播出黑屏、業(yè)務(wù)卡頓的問題,提升了視頻類業(yè)務(wù)的穩(wěn)定性和用戶體驗。