• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于COLO的主備虛擬機(jī)桌面同步研究與設(shè)計(jì)

    2024-03-21 01:49:36王瑞聰張明慶
    關(guān)鍵詞:桌面鼠標(biāo)備份

    王瑞聰,韓 瓊,張明慶,張 帆

    (中國航天科工集團(tuán)第二研究院 七〇六所,北京 100854)

    0 引 言

    近年來,隨著虛擬化技術(shù)[1]的發(fā)展,越來越多的業(yè)務(wù)、應(yīng)用被部署于虛擬機(jī)上,這樣雖然可以獲得靈活性與便捷性,提升物理資源的利用率,但也對(duì)虛擬機(jī)的高可用性提出更嚴(yán)格的要求。虛擬機(jī)依托于物理服務(wù)器,物理服務(wù)器故障是所有企業(yè)都不可避免的問題。一旦物理服務(wù)器出現(xiàn)故障,運(yùn)行在其上的虛擬機(jī)將會(huì)出現(xiàn)故障,虛擬機(jī)上所有的應(yīng)用服務(wù)將會(huì)中斷,給企業(yè)造成巨大的經(jīng)濟(jì)損失[2]。因此,如何保障虛擬機(jī)上應(yīng)用服務(wù)的連續(xù)性,即虛擬機(jī)的容錯(cuò)能力成為研究熱點(diǎn)[3]。

    在廣泛的需求推動(dòng)下,市場(chǎng)上已經(jīng)涌現(xiàn)出許多虛擬機(jī)容錯(cuò)服務(wù),主流的如Xen Remus、everRun VM、VMware FT、QEMU/KVM COLO等[4]。這些虛擬機(jī)容錯(cuò)功能大都以雙機(jī)容錯(cuò)實(shí)現(xiàn),即在兩臺(tái)物理服務(wù)器上,分別創(chuàng)建一個(gè)虛擬機(jī),一個(gè)作為主虛擬機(jī)PVM(primary virtual machine)對(duì)外提供服務(wù),另一個(gè)作為備虛擬機(jī)SVM(seco-ndary virtual machine),作為主虛擬機(jī)的有效副本,在主虛擬機(jī)宕機(jī)后,無縫接替主虛擬機(jī)繼續(xù)對(duì)外提供服務(wù)。容錯(cuò)功能的實(shí)現(xiàn)是通過高速網(wǎng)線將主虛擬機(jī)上的內(nèi)存、寄存器狀態(tài)、磁盤等信息不斷地傳輸至備份虛擬機(jī),使備虛擬機(jī)始終同步為一個(gè)可靠可用的副本[5]。

    COLO(coarse-grained lock-stepping virtual machine for non-stop service)是一種針對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的粗粒度鎖步虛擬機(jī)方法,提供容錯(cuò)功能實(shí)現(xiàn)不間斷服務(wù)[14]。當(dāng)部署圖形化操作系統(tǒng)的虛擬機(jī)啟用COLO功能,通過遠(yuǎn)程連接操作虛擬機(jī)桌面會(huì)遇到主備虛擬機(jī)界面顯示不一致的現(xiàn)象,這將導(dǎo)致主備虛擬機(jī)間同步次數(shù)增多、同步耗時(shí)增加等問題。本文針對(duì)上述問題,提出一種通過分發(fā)鼠標(biāo)鍵盤輸入,檢查桌面窗口輸出的方法,減少界面不一致情況以降低同步時(shí)間,提高系統(tǒng)性能,優(yōu)化用戶體驗(yàn)。

    1 背景與相關(guān)工作

    1.1 QEMU/KVM架構(gòu)

    QEMU/KVM屬于虛擬機(jī)監(jiān)控器VMM(virtual machine monitor)的一種[6],可以運(yùn)行在多個(gè)操作系統(tǒng)平臺(tái)上,對(duì)國產(chǎn)化平臺(tái)也有較好的支持。QEMU是一個(gè)快速的開源模擬器,而內(nèi)核虛擬機(jī)KVM(kernel-based virtual machine)是一個(gè)基于Linux內(nèi)核的虛擬化解決方案[7],其架構(gòu)如圖1所示。QEMU和KVM相互補(bǔ)充,KVM負(fù)責(zé)處理虛擬機(jī)的調(diào)度和資源管理,而QEMU則負(fù)責(zé)提供虛擬設(shè)備模擬等功能,使得在Linux系統(tǒng)上能夠高效地創(chuàng)建和運(yùn)行虛擬機(jī)。

    圖1 QEMU/KVM整體架構(gòu)

    QEMU/KVM提供了熱遷移技術(shù),允許將運(yùn)行中的虛擬機(jī)從一個(gè)物理主機(jī)遷移到另一個(gè)物理主機(jī),而無需中斷虛擬機(jī)運(yùn)行,并且用戶在遷移過程中沒有明顯感知。熱遷移技術(shù)是虛擬機(jī)容錯(cuò)功能的實(shí)現(xiàn)基礎(chǔ),通過連續(xù)的熱遷移操作,主虛擬機(jī)的狀態(tài)信息會(huì)定期復(fù)制到備份虛擬機(jī)上,這被稱為雙機(jī)熱備[8]。在此基礎(chǔ)上,COLO通過時(shí)刻保持備份虛擬機(jī)是一個(gè)有效且可用的副本,實(shí)現(xiàn)了高可用性的雙機(jī)容錯(cuò)功能。當(dāng)主虛擬機(jī)發(fā)生故障時(shí),備份虛擬機(jī)可以無縫接替主虛擬機(jī)的工作,確保系統(tǒng)的持續(xù)運(yùn)行[9]。本文以COLO容錯(cuò)機(jī)制為基礎(chǔ),在國產(chǎn)平臺(tái)下研究解決COLO對(duì)于桌面同步表現(xiàn)不佳的問題。

    1.2 VNC遠(yuǎn)程桌面訪問

    使用QEMU/KVM創(chuàng)建虛擬機(jī)后,可以通過VNC遠(yuǎn)程連接虛擬機(jī)桌面進(jìn)行訪問與操作[6]。VNC(virtual network console)是一種用于遠(yuǎn)程桌面訪問和控制的開源技術(shù)。VNC允許用戶通過網(wǎng)絡(luò)連接到遠(yuǎn)程計(jì)算機(jī),以實(shí)時(shí)查看、操作遠(yuǎn)程計(jì)算機(jī)[10]。VNC有viewer與server端分別運(yùn)行于本地計(jì)算機(jī)與遠(yuǎn)程計(jì)算機(jī)上,viewer端將用戶在本地的輸入操作反饋給遠(yuǎn)程計(jì)算機(jī),同時(shí)遠(yuǎn)程計(jì)算機(jī)的server端將屏幕圖像捕獲并傳輸?shù)娇蛻舳?。VNC基于RFB(remote frame buffer)協(xié)議進(jìn)行通信,使用基于幀的圖像傳輸方式,只傳輸屏幕上發(fā)生變化的像素矩陣,從而降低了網(wǎng)絡(luò)帶寬的需求。

    TigerVNC是一個(gè)開源的VNC實(shí)現(xiàn),它提供了高性能、可靠的遠(yuǎn)程桌面訪問和控制功能[10]。本文依托于開源的TigerVNC,設(shè)計(jì)實(shí)現(xiàn)同時(shí)連接兩臺(tái)遠(yuǎn)程計(jì)算機(jī)的功能,并實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)輸入一致機(jī)制。

    2 分析與改進(jìn)

    2.1 COLO容錯(cuò)機(jī)制分析

    QEMU/KVM提供了粗粒度鎖步虛擬機(jī)復(fù)制的雙機(jī)容錯(cuò)功能COLO,以實(shí)現(xiàn)系統(tǒng)高可用性。COLO的核心設(shè)計(jì)思想是,對(duì)于虛擬機(jī)容錯(cuò),只要備虛擬機(jī)可以在主虛擬機(jī)出現(xiàn)故障無法繼續(xù)提供網(wǎng)絡(luò)服務(wù)時(shí)能夠成功接管對(duì)外網(wǎng)絡(luò)服務(wù)即可。也就是說,只要備虛擬機(jī)和主虛擬機(jī)對(duì)于外部網(wǎng)絡(luò)請(qǐng)求的響應(yīng)是一致的,即使兩個(gè)虛擬機(jī)的其它一些狀態(tài)信息可能不一致,仍然認(rèn)為備虛擬機(jī)是主虛擬機(jī)的一個(gè)有效副本[13],可以接替主虛擬機(jī)提供服務(wù)。

    COLO的架構(gòu)設(shè)計(jì)如圖2所示,包含兩個(gè)由高速網(wǎng)絡(luò)連接起來的物理服務(wù)器:主節(jié)點(diǎn)和備節(jié)點(diǎn)。主虛擬機(jī)運(yùn)行在主節(jié)點(diǎn)上,備虛擬機(jī)運(yùn)行在備節(jié)點(diǎn)上,主節(jié)點(diǎn)通過高速網(wǎng)線不斷地將主虛擬機(jī)的狀態(tài)信息拷貝傳輸至備節(jié)點(diǎn),備節(jié)點(diǎn)利用這些狀態(tài)信息修改備虛擬機(jī)的狀態(tài),以此來保存一個(gè)主虛擬機(jī)的有效備份。COLO要求主備虛擬機(jī)同時(shí)運(yùn)行,并響應(yīng)外部網(wǎng)絡(luò)請(qǐng)求。來自外部的請(qǐng)求被主節(jié)點(diǎn)接收,然后分發(fā)給主虛擬機(jī)和備虛擬機(jī),從而使得主備虛擬機(jī)獲得同樣的請(qǐng)求。COLO接收到來自主虛擬機(jī)和備虛擬機(jī)的響應(yīng),然后在將響應(yīng)輸出到外部之前,先比較二者響應(yīng)是否一致。只要兩個(gè)響應(yīng)一致,則認(rèn)為備虛擬機(jī)是主虛擬機(jī)的一個(gè)有效備份,不需要進(jìn)行虛擬機(jī)同步操作。一旦兩個(gè)響應(yīng)出現(xiàn)差異,則先緩存來自主虛擬機(jī)的響應(yīng),與此同時(shí)進(jìn)行主備虛擬機(jī)的同步操作,待同步操作完成之后,再將響應(yīng)發(fā)送出去[14]。

    圖2 COLO整體架構(gòu)設(shè)計(jì)

    2.2 COLO容錯(cuò)機(jī)制的不足

    COLO Proxy是COLO容錯(cuò)功能的核心模塊,其主要功能是實(shí)現(xiàn)主備虛擬機(jī)響應(yīng)數(shù)據(jù)包的比較,檢測(cè)二者是否一致。COLO Proxy模塊設(shè)計(jì)如圖3所示,其中A、B、C、D、E是一些轉(zhuǎn)發(fā)數(shù)據(jù)包的子模塊。A負(fù)責(zé)接收網(wǎng)絡(luò)設(shè)備中的外部請(qǐng)求,并將請(qǐng)求傳輸給主虛擬機(jī)與D模塊。B接收colo compare模塊比較后的響應(yīng),并發(fā)送給網(wǎng)絡(luò)設(shè)備。C接收主虛擬機(jī)的響應(yīng),并將該響應(yīng)發(fā)送至colo compare模塊供比較使用。D模塊接收A模塊發(fā)來的網(wǎng)絡(luò)請(qǐng)求,經(jīng)過一定數(shù)據(jù)包處理,發(fā)送給備虛擬機(jī),使備虛擬機(jī)能正確與外部請(qǐng)求端建立連接。同樣地,備虛擬機(jī)的響應(yīng)包也需要經(jīng)過處理,發(fā)送至E模塊,然后E模塊將數(shù)據(jù)包發(fā)送至colo compare模塊。colo compare接收來自主備虛擬機(jī)的響應(yīng)包進(jìn)行比較,一致則丟棄備虛擬機(jī)響應(yīng)包,將主虛擬機(jī)響應(yīng)包發(fā)送給B,不一致則暫緩輸出,觸發(fā)同步操作[15]。

    圖3 COLO Proxy模塊設(shè)計(jì)

    通過上述分析,可以發(fā)現(xiàn)COLO非常適用于類似ssh連接遠(yuǎn)程虛擬機(jī)對(duì)外提供網(wǎng)絡(luò)服務(wù)的操作。通過引入COLO機(jī)制,可以將周期性的同步間隔由毫秒級(jí)延長(zhǎng)至分鐘級(jí),期間通過網(wǎng)絡(luò)響應(yīng)包的不一致來觸發(fā)同步,有效降低主備虛擬機(jī)的同步頻率,減少虛擬機(jī)用于同步的資源開銷,提升虛擬機(jī)性能[16]。

    然而,當(dāng)虛擬機(jī)內(nèi)運(yùn)行擁有圖形界面的操作系統(tǒng),QEMU會(huì)模擬一個(gè)顯示設(shè)備,將虛擬機(jī)的圖形輸出保存到虛擬顯存中,通過VNC連接虛擬機(jī)桌面并在圖形化桌面上進(jìn)行各種操作,如鼠標(biāo)拖拽窗口、鍵盤鍵入字符時(shí),備虛擬機(jī)不能實(shí)時(shí)與主虛擬機(jī)顯示一致,在COLO降低同步頻率的情況下,主備的屏幕顯示可能會(huì)有分鐘級(jí)的差異,這會(huì)造成主備虛擬機(jī)機(jī)器狀態(tài),顯存數(shù)據(jù)等的不同,這時(shí)觸發(fā)同步會(huì)增加同步傳輸?shù)臄?shù)據(jù)量,延長(zhǎng)同步時(shí)間。除此之外,在用戶使用界面進(jìn)行頻繁網(wǎng)絡(luò)訪問操作時(shí),該操作的數(shù)據(jù)包發(fā)送至QEMU中的VNC server端,而不會(huì)被COLO轉(zhuǎn)發(fā)至備份虛擬機(jī)內(nèi),此時(shí)備機(jī)不會(huì)進(jìn)行同樣的網(wǎng)絡(luò)訪問操作,主備會(huì)產(chǎn)生不同的網(wǎng)絡(luò)數(shù)據(jù)包,不斷地觸發(fā)COLO同步操作,進(jìn)而導(dǎo)致系統(tǒng)性能大大降低。

    2.3 COLO容錯(cuò)機(jī)制改進(jìn)策略

    為了解決COLO在圖形化操作系統(tǒng)的虛擬機(jī)下表現(xiàn)不佳的問題,可以借鑒COLO在網(wǎng)絡(luò)數(shù)據(jù)包處理方面的方法進(jìn)行改進(jìn)。QEMU提供了VNC服務(wù),允許用戶通過VNC客戶端遠(yuǎn)程連接到由QEMU創(chuàng)建的虛擬機(jī),并通過圖形界面執(zhí)行各種操作。在這個(gè)基礎(chǔ)上,可以采用類似COLO將網(wǎng)絡(luò)請(qǐng)求包轉(zhuǎn)發(fā)給備用虛擬機(jī)的方式來改善性能。

    具體過程如下,使用VNC連接主虛擬機(jī)時(shí),在VNC客戶端中捕獲對(duì)主虛擬機(jī)的輸入操作(例如鍵盤和鼠標(biāo)操作),然后將這些操作同步發(fā)送給備用虛擬機(jī)。通過這種方式,備用虛擬機(jī)的初始狀態(tài)與主虛擬機(jī)保持一致。隨著相同輸入操作在兩個(gè)虛擬機(jī)上執(zhí)行,主備虛擬機(jī)的桌面顯示也會(huì)保持一致。這種改進(jìn)方法可以有效提升在圖形化操作系統(tǒng)的虛擬機(jī)下COLO的性能,使得用戶能夠通過VNC客戶端實(shí)現(xiàn)對(duì)主虛擬機(jī)的遠(yuǎn)程操作,并且保持主備虛擬機(jī)之間的一致性。

    VNC遠(yuǎn)程連接虛擬機(jī)也是通過網(wǎng)絡(luò)傳輸數(shù)據(jù),viewer端與server端通過TCP協(xié)議傳輸數(shù)據(jù),但其數(shù)據(jù)包并不經(jīng)過COLO模塊。COLO模塊轉(zhuǎn)發(fā)請(qǐng)求主虛擬機(jī)服務(wù)的網(wǎng)絡(luò)包,并且捕獲比較主備虛擬機(jī)內(nèi)產(chǎn)生的各種網(wǎng)絡(luò)數(shù)據(jù)包(目前支持捕獲TCP、UDP、ICMP等),而VNC遠(yuǎn)程連接虛擬機(jī)是由QEMU處理,QEMU實(shí)現(xiàn)了VNC Server功能,響應(yīng)遠(yuǎn)端VNC Client的連接請(qǐng)求,連接中傳輸?shù)臄?shù)據(jù)包不會(huì)經(jīng)過COLO模塊。一種直觀的改進(jìn)策略是在主節(jié)點(diǎn)的QEMU內(nèi)將響應(yīng)的VNC數(shù)據(jù)包轉(zhuǎn)發(fā)給COLO模塊,備節(jié)點(diǎn)也將VNC數(shù)據(jù)包發(fā)送至主節(jié)點(diǎn)COLO模塊進(jìn)行比較。然而VNC使用基于幀的圖像傳輸方式,只傳輸屏幕上發(fā)生變化的部分,通過傳輸一個(gè)個(gè)像素矩陣進(jìn)行屏幕更新[17],通過實(shí)驗(yàn)驗(yàn)證,相同的屏幕變化,VNC Server發(fā)送的像素矩陣的個(gè)數(shù)、大小不盡相同,同時(shí)像素矩陣的數(shù)據(jù)量過大,并且存在壓縮編碼處理,因此,將VNC響應(yīng)數(shù)據(jù)包引入COLO比較模塊并不現(xiàn)實(shí)。

    雖然無法對(duì)主備桌面像素?cái)?shù)據(jù)進(jìn)行對(duì)比,但可以追溯桌面像素?cái)?shù)據(jù)產(chǎn)生之前的過程。圖形界面由桌面系統(tǒng)繪制,國產(chǎn)平臺(tái)下的桌面系統(tǒng)使用X Window System開發(fā)實(shí)現(xiàn)。X Window System,又叫X Protocol、X11,是一種開源的圖形用戶界面系統(tǒng)[11]。如圖4所示,X11采用客戶端-服務(wù)器架構(gòu),X11服務(wù)端負(fù)責(zé)管理顯示設(shè)備(如顯示器)和用戶輸入設(shè)備(如鍵盤、鼠標(biāo)),接收來自客戶端的事件請(qǐng)求并將圖形繪制到屏幕上[12]。

    圖4 X11整體架構(gòu)

    用戶在桌面的操作經(jīng)過X11客戶端的處理返回X11事件,X11服務(wù)端根據(jù)窗口事件繪制顯示屏幕設(shè)備。因此,可以通過引入X11事件進(jìn)行主備虛擬機(jī)界面的比較。常見的窗口事件包括創(chuàng)建、隱藏、關(guān)閉窗口,窗口大小更改,窗口獲取焦點(diǎn)。X11客戶端對(duì)于相同的輸入操作產(chǎn)生的X11事件是完全相同的。因此,可以在虛擬機(jī)內(nèi)創(chuàng)建服務(wù)Xsync捕獲相關(guān)X11事件,并將事件封裝為數(shù)據(jù)包通過網(wǎng)絡(luò)發(fā)送至VNC viewer端,使X11數(shù)據(jù)包經(jīng)過COLO模塊進(jìn)行比較。通過比較主備虛擬機(jī)X11事件是否一致,可以保證主備虛擬機(jī)的圖形界面保持一致。

    3 主備虛擬機(jī)桌面同步實(shí)現(xiàn)

    如圖5所示,基于COLO容錯(cuò)機(jī)制下的遠(yuǎn)程桌面同步實(shí)現(xiàn)主要分為兩個(gè)部分。一是修改VNC viewer端,檢測(cè)用戶對(duì)主虛擬機(jī)的鼠標(biāo)鍵盤輸入并分發(fā)至備份虛擬機(jī),使主備虛擬機(jī)的輸入一致。二是在主備虛擬機(jī)內(nèi)部通過X11捕獲并對(duì)外發(fā)送相關(guān)的X11事件,使其經(jīng)過COLO模塊進(jìn)行比較。

    圖5 主備虛擬機(jī)桌面同步組件框架

    3.1 TigerVNC viewer分發(fā)鍵鼠操作

    TigerVNC viewer在vncviewer.cxx的mainloop()函數(shù)中使用 Conn(vncServerName,sock)建立與TigerVNC server的TCP連接cc,其中包含有輸入流is和輸出流os用以通信。為了使備份虛擬機(jī)可以接收到主虛擬機(jī)的輸入流,首先需要使用Conn(vncServerName,sock)創(chuàng)建兩條分別與主備虛擬機(jī)相連的連接cc_primary與cc_secondary,然后在cc_primary中添加輸出流os2,將備連接cc_secondary中的輸出流os賦給備連接cc_primary的os2以達(dá)到輸入分發(fā)。CMsgWriter.cxx中包含了viewer端向server端發(fā)送各種消息的操作,根據(jù)RFB協(xié)議格式組裝數(shù)據(jù)包并通過輸出流發(fā)送出去,在writeKeyEvent()、writePointerEvent()中,通過增添輸出流os2可以將主虛擬機(jī)的鍵盤鼠標(biāo)事件發(fā)送到備份虛擬機(jī)。

    3.2 捕獲發(fā)送X11事件進(jìn)入COLO模塊

    在虛擬機(jī)內(nèi)部,使用X11的擴(kuò)展庫xtestlib和recordlib獲得鍵盤鼠標(biāo)控制權(quán),捕獲用戶在界面上的操作與產(chǎn)生的X11事件。XRecordRange用于標(biāo)識(shí)一組要記錄的事件類型,這里設(shè)置為CreateNotify到ConfigureNotify,這其中包含了窗口的創(chuàng)建、關(guān)閉以及窗口大小、位置改變的事件。然后通過socket編程對(duì)外發(fā)送基于UDP的X11事件數(shù)據(jù)包。由虛擬機(jī)內(nèi)部發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包會(huì)進(jìn)入COLO模塊,進(jìn)行檢查比較。這樣就填補(bǔ)了COLO未檢測(cè)比較主備虛擬機(jī)桌面數(shù)據(jù)是否一致的不足。

    4 實(shí)驗(yàn)測(cè)試與評(píng)估

    4.1 實(shí)驗(yàn)條件與環(huán)境

    實(shí)驗(yàn)所用設(shè)備的連接拓?fù)淙鐖D6所示,包括兩臺(tái)國產(chǎn)飛騰機(jī)架式服務(wù)器作為主備節(jié)點(diǎn),一臺(tái)國產(chǎn)一體式計(jì)算機(jī)作為陪測(cè)PC機(jī)。其中兩臺(tái)服務(wù)器物理機(jī)操作系統(tǒng)為open-Euler,虛擬機(jī)操作系統(tǒng)為銀河麒麟系統(tǒng)(桌面版),使用QEMU創(chuàng)建虛擬機(jī),陪測(cè)PC為銀河麒麟系統(tǒng)(桌面版),詳細(xì)配置見表1。兩臺(tái)物理服務(wù)器使用萬兆網(wǎng)線互聯(lián),一體機(jī)與兩臺(tái)物理機(jī)處于同一局域網(wǎng)中,在一體機(jī)上使用VNC viewer連接兩臺(tái)物理服務(wù)器上的虛擬機(jī)。

    表1 實(shí)驗(yàn)環(huán)境詳細(xì)說明

    圖6 實(shí)驗(yàn)設(shè)備連接關(guān)系

    4.2 實(shí)驗(yàn)測(cè)試方法

    實(shí)驗(yàn)首先觀察主備虛擬機(jī)桌面顯示是否實(shí)時(shí)一致,在主備虛擬機(jī)上執(zhí)行播放視頻操作,觀察主備虛擬機(jī)視頻播放界面是否一致。

    實(shí)驗(yàn)使用xdotool工具模擬鼠標(biāo)鍵盤輸入,測(cè)試比較引入本文改進(jìn)后與原QEMU默認(rèn)開啟COLO情況下的界面同步耗時(shí)情況。對(duì)于無網(wǎng)絡(luò)服務(wù)情況,設(shè)定操作序列:打開WPS輸入一段字符->關(guān)閉WPS->打開終端執(zhí)行命令ls->關(guān)閉終端->打開txt文本文件輸入一段字符>關(guān)閉txt文件->打開QT->關(guān)閉QT->打開影音播放器->關(guān)閉影音播放器。在每個(gè)操作后記錄同步所用時(shí)間并計(jì)算平均值。模擬操作序列的腳本需要在陪測(cè)的一體式計(jì)算機(jī)上編寫與執(zhí)行,而不在虛擬機(jī)內(nèi)執(zhí)行,因?yàn)橥讲僮鲿?huì)使主備虛擬機(jī)同時(shí)執(zhí)行相同的腳本文件。對(duì)于通過桌面操作訪問網(wǎng)絡(luò)的情況,實(shí)驗(yàn)分別模擬每隔5 s,10 s,15 s,20 s進(jìn)行一次對(duì)外網(wǎng)絡(luò)請(qǐng)求,記錄1 min內(nèi)觸發(fā)同步的次數(shù)和同步耗時(shí)。

    4.3 實(shí)驗(yàn)結(jié)果與分析

    使用VNC連接訪問主備虛擬機(jī),界面如圖7所示,在主虛擬機(jī)上進(jìn)行視頻播放時(shí),備虛擬機(jī)保持與主虛擬機(jī)界面一致。

    圖7 主備虛擬機(jī)界面同步展示

    在無網(wǎng)絡(luò)服務(wù)情況下,測(cè)試無任何操作、改進(jìn)前后進(jìn)行界面操作情況下的主備同步時(shí)間,分別記錄10組10 min內(nèi)虛擬機(jī)的同步時(shí)間并取平均值。實(shí)驗(yàn)結(jié)果如圖8所示,在不操作虛擬機(jī)時(shí)COLO默認(rèn)20 s同步一次,平均每次同步耗時(shí)257 ms,改進(jìn)后主備虛擬機(jī)平均同步時(shí)間由523 ms縮短為435 ms,降低了16.82%。10 min內(nèi),無操作情況下總同步時(shí)間開銷為7710 ms,改進(jìn)后,會(huì)偶爾發(fā)生主備虛擬機(jī)界面不一致觸發(fā)的同步,主備虛擬機(jī)總同步時(shí)間由15 690 ms縮短至14 355 ms,降低了8.50%。

    圖8 主備虛擬機(jī)同步時(shí)間對(duì)比

    在虛擬機(jī)上進(jìn)行對(duì)外網(wǎng)絡(luò)操作時(shí),原默認(rèn)情況下,只有主虛擬機(jī)發(fā)出網(wǎng)絡(luò)數(shù)據(jù)包,備虛擬機(jī)沒有對(duì)應(yīng)的網(wǎng)絡(luò)操作,此時(shí)COLO便會(huì)觸發(fā)同步。改進(jìn)后主備虛擬機(jī)會(huì)同時(shí)進(jìn)行相同的網(wǎng)絡(luò)操作,避免觸發(fā)檢查點(diǎn)同步。進(jìn)行10組實(shí)驗(yàn)取平均值,結(jié)果如圖9所示,在進(jìn)行高頻網(wǎng)絡(luò)操作時(shí),本文方法優(yōu)化提升明顯,在每隔5 s進(jìn)行一次網(wǎng)絡(luò)請(qǐng)求情況下,1 min內(nèi)主備虛擬機(jī)的同步次數(shù)減少了69.1%,同步耗時(shí)減少了64.7%。

    圖9 不同網(wǎng)絡(luò)請(qǐng)求間隔下的對(duì)比

    5 結(jié)束語

    本文利用QEMU中COLO的設(shè)計(jì)方法,即轉(zhuǎn)發(fā)對(duì)主虛擬機(jī)的網(wǎng)絡(luò)請(qǐng)求包至備虛擬機(jī),使主備有相同的網(wǎng)絡(luò)請(qǐng)求輸入,比較檢查主備虛擬機(jī)的網(wǎng)絡(luò)響應(yīng)包是否一致,不一致時(shí)觸發(fā)同步操作。針對(duì)裝有圖形化操作系統(tǒng)的虛擬機(jī),提出通過VNC輸入分發(fā),使主備虛擬機(jī)接收相同的鼠標(biāo)鍵盤輸入,比較檢查主備虛擬機(jī)的X11事件是否一致,不一致時(shí)觸發(fā)同步操作,進(jìn)而保證主備虛擬機(jī)一致。實(shí)驗(yàn)結(jié)果表明,本文方法保證主備虛擬機(jī)圖形界面實(shí)時(shí)一致,對(duì)于虛擬機(jī)同步次數(shù)有減少作用,并且有效降低同步時(shí)間。后續(xù)的工作將研究主備虛擬機(jī)界面顯示快慢誤差所造成的不一致情況,進(jìn)一步提高虛擬機(jī)性能。

    猜你喜歡
    桌面鼠標(biāo)備份
    “備份”25年:鄧清明圓夢(mèng)
    桌面舞龍
    Progress in Neural NLP: Modeling, Learning, and Reasoning
    Engineering(2020年3期)2020-09-14 03:42:00
    基于APP在線控制雙擠出頭FDM桌面3D打印機(jī)的研制
    淺析數(shù)據(jù)的備份策略
    科技視界(2015年6期)2015-08-15 00:54:11
    出版原圖數(shù)據(jù)庫遷移與備份恢復(fù)
    最貼心21款Win7桌面小工具展示
    45歲的鼠標(biāo)
    超能力鼠標(biāo)
    IM家庭電子(2008年11期)2008-12-05 09:49:20
    鼠標(biāo)也可以是這樣的
    抚松县| 图木舒克市| 蒙阴县| 新兴县| 砀山县| 宜州市| 平山县| 延吉市| 集贤县| 铜鼓县| 永修县| 柘城县| 沁阳市| 五指山市| 安宁市| 许昌县| 黔东| 绥阳县| 麻江县| 东乡| 永登县| 九龙坡区| 湘乡市| 潢川县| 施甸县| 罗山县| 祁连县| 蓬安县| 修水县| 运城市| 保山市| 万安县| 科技| 桃江县| 闵行区| 石屏县| 临安市| 留坝县| 大石桥市| 盐源县| 沁源县|