本技術(shù)涉及虛擬機(jī),尤其涉及一種虛擬機(jī)的還原方法、裝置及電子設(shè)備。
背景技術(shù):
1、隨著虛擬化和云計(jì)算技術(shù)的快速發(fā)展,云桌面的使用也越來越普及。云桌面中的虛擬操作系統(tǒng)基礎(chǔ)架構(gòu)(英文:virtual?operating?system?infrastructure,縮寫為voi),由于無任何硬件虛擬化層,規(guī)避了虛擬化層的開銷,性能幾乎零消耗,兼容性達(dá)到了最大化,進(jìn)而逐漸成為主流虛擬機(jī)技術(shù)之一,被廣大廠商所采用。
2、目前,在傳統(tǒng)的voi方案中,以統(tǒng)一可擴(kuò)展固件接口(英文:unified?extensiblefirmware?interface,縮寫為uefi)基本輸入輸出系統(tǒng)(英文:basic?input?outputsystem,縮寫為bios)直接啟動(dòng)虛擬機(jī)(英文:virtual?machine,縮寫為vm)為核心的voi技術(shù)方案,即uefi?voi方案,由于啟動(dòng)時(shí)間只引入了短暫的啟動(dòng)管理器(英文:boot?manager,縮寫為bootmgr)的加載時(shí)間,并且能夠兼容各種中央處理器(英文:central?processingunit,縮寫為cpu)架構(gòu),逐漸進(jìn)入人們的視野。
3、在上述uefi?voi方案啟動(dòng)vm時(shí),基于用戶需求,需在uefi?voi方案中引入還原操作,將待還原對(duì)象還原至目標(biāo)還原點(diǎn),從而避免vm故障或宕機(jī)時(shí)帶來的數(shù)據(jù)丟失等問題。該uefi?voi方案可分為uefi階段與客戶操作系統(tǒng)(guest?operating?system,縮寫為guestos)階段兩個(gè)階段。
4、在uefi階段中引入還原操作時(shí),首先需要通過可讀高級(jí)文件系統(tǒng)驅(qū)動(dòng)來讀取高級(jí)文件系統(tǒng)中的vm鏡像文件,再基于可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)對(duì)待還原對(duì)象進(jìn)行還原。
5、但是,uefi中只存在可讀高級(jí)文件系統(tǒng)驅(qū)動(dòng),因此,在uefi階段引入還原操作時(shí),還需要在uefi中實(shí)現(xiàn)一份完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng),進(jìn)而再基于該可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)對(duì)待還原對(duì)象進(jìn)行還原。
6、然而,在uefi中實(shí)現(xiàn)一份完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)時(shí),需要深入了解高級(jí)文件系統(tǒng)的工程師來編寫可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)的相關(guān)代碼,還需要大量的測(cè)試數(shù)據(jù)集來測(cè)試相關(guān)代碼的正確性等,從而使得實(shí)現(xiàn)一份完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)非常困難;同時(shí)在運(yùn)行該可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)過程中,一旦可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)本身存在缺陷,會(huì)導(dǎo)致數(shù)據(jù)丟失、數(shù)據(jù)覆蓋、數(shù)據(jù)不一致等嚴(yán)重后果。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種虛擬機(jī)的還原方法、裝置及電子設(shè)備,用以解決在uefi中實(shí)現(xiàn)一份完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng),用于對(duì)待還原對(duì)象進(jìn)行還原時(shí),由于在uefi中實(shí)現(xiàn)完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)的困難性,以及在運(yùn)行該完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)的過程中,由于其本身的缺陷而導(dǎo)致的數(shù)據(jù)丟失等嚴(yán)重后果的問題。具體實(shí)現(xiàn)方案如下:
2、第一方面,本技術(shù)提供了一種虛擬機(jī)的還原方法,所述方法包括:
3、響應(yīng)于啟動(dòng)目標(biāo)虛擬機(jī)中的客戶操作系統(tǒng)guestos,從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息,所述啟動(dòng)信息包括還原標(biāo)識(shí),所述還原標(biāo)識(shí)用于指示是否將待還原對(duì)象中的數(shù)據(jù)還原至目標(biāo)還原點(diǎn)對(duì)應(yīng)的數(shù)據(jù);
4、若所述還原標(biāo)識(shí)指示進(jìn)行還原,則按照所述目標(biāo)虛擬機(jī)對(duì)應(yīng)的還原策略信息將所述待還原對(duì)象中的數(shù)據(jù)還原至所述目標(biāo)還原點(diǎn)對(duì)應(yīng)的數(shù)據(jù),將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤,其中,所述還原策略信息指示所述待還原對(duì)象。
5、通過上述方式,基于還原標(biāo)識(shí)與還原策略信息,將虛擬機(jī)的還原操作配置到了guestos階段,因?yàn)間uestos中存在可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng),從而可以在guestos階段中基于該可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng),按照還原策略信息將待還原對(duì)象中的數(shù)據(jù)還原至目標(biāo)還原點(diǎn)對(duì)應(yīng)的數(shù)據(jù),所以避免了在uefi階段中實(shí)現(xiàn)一份完整的可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng),并且避免了在uefi階段運(yùn)行該可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)時(shí),由于其本身的缺陷而造成的數(shù)據(jù)丟失等嚴(yán)重后果。
6、在一種可能的實(shí)施方式中,所述從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息之前,所述方法還包括:
7、在統(tǒng)一可擴(kuò)展固件接口uefi階段中或者在維護(hù)系統(tǒng)中,生成所述啟動(dòng)信息,并將所述啟動(dòng)信息保存至所述指定存儲(chǔ)區(qū)域。
8、通過上述方式,既可以在uefi階段中生成啟動(dòng)信息,也可以在維護(hù)系統(tǒng)中生成啟動(dòng)信息,且該啟動(dòng)信息保存在指定存儲(chǔ)區(qū)域中,從而使得電子設(shè)備在guestos階段確定是否執(zhí)行還原操作時(shí),可以直接從指定存儲(chǔ)區(qū)域讀取生成的啟動(dòng)信息。同時(shí),若在維護(hù)系統(tǒng)中生成啟動(dòng)信息,則后續(xù)可以在uefi階段中直接解析啟動(dòng)信息,減少了uefi階段的運(yùn)行時(shí)間。
9、在一種可能的實(shí)施方式中,所述生成所述啟動(dòng)信息,包括:
10、獲取元數(shù)據(jù)文件路徑,所述元數(shù)據(jù)文件路徑對(duì)應(yīng)待啟動(dòng)的所述目標(biāo)虛擬機(jī);
11、根據(jù)所述還原標(biāo)識(shí)與所述元數(shù)據(jù)文件路徑生成所述啟動(dòng)信息。
12、通過上述方式,根據(jù)還原標(biāo)識(shí)與元數(shù)據(jù)文件路徑生成了啟動(dòng)信息,從而基于啟動(dòng)信息中的還原標(biāo)識(shí),可以使電子設(shè)備確定是否執(zhí)行還原操作,進(jìn)一步的保證了將還原操作延遲到guestos階段,避免了uefi不存在可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)的限制,從而進(jìn)一步的保證了電子設(shè)備能夠執(zhí)行還原操作。并且將還原標(biāo)識(shí)保存在啟動(dòng)信息中,可以動(dòng)態(tài)調(diào)整還原標(biāo)識(shí)中的內(nèi)容,便于每次啟動(dòng)虛擬機(jī)時(shí)實(shí)時(shí)更新該還原標(biāo)識(shí)。此外,根據(jù)元數(shù)據(jù)文件路徑,可以讀取元數(shù)據(jù)文件中的元數(shù)據(jù),而元數(shù)據(jù)是訪問目標(biāo)虛擬機(jī)中持久化數(shù)據(jù)的入口,包含了該目標(biāo)虛擬機(jī)的各種關(guān)鍵信息,從而可以根據(jù)元數(shù)據(jù)文件路徑確定待啟動(dòng)的目標(biāo)虛擬機(jī),以便于在存在多個(gè)虛擬機(jī)時(shí),電子設(shè)備能夠確定待操作的虛擬機(jī)。
13、在一種可能的實(shí)施方式中,在所述根據(jù)所述還原標(biāo)識(shí)與所述元數(shù)據(jù)文件路徑生成所述啟動(dòng)信息之前,還包括:
14、接收基于用戶操作生成的還原指令或基于所述還原策略信息生成的還原指令;
15、根據(jù)所述還原指令,更新所述還原標(biāo)識(shí)。
16、通過上述方式,可以根據(jù)用戶操作生成的還原指令來更新還原標(biāo)識(shí),從而可以基于用戶選擇來確定此次啟動(dòng)目標(biāo)虛擬機(jī)是否執(zhí)行還原操作。也可以根據(jù)還原策略信息來自動(dòng)生成還原指令,從而基于該還原指令來更新還原標(biāo)識(shí),以便于電子設(shè)備確定此次啟動(dòng)目標(biāo)虛擬機(jī)是否執(zhí)行還原動(dòng)作。
17、在一種可能的實(shí)施方式中,在所述從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息之前,還包括:
18、獲取所述目標(biāo)虛擬機(jī)對(duì)應(yīng)的還原時(shí)間與所述目標(biāo)虛擬機(jī)中的所述待還原對(duì)象;
19、根據(jù)所述還原時(shí)間與所述待還原對(duì)象生成所述還原策略信息。
20、通過上述方式,根據(jù)接收的目標(biāo)虛擬機(jī)對(duì)應(yīng)的還原時(shí)間與待還原對(duì)象,生成了還原策略信息,基于該還原策略信息,進(jìn)一步的保證了將還原操作延遲到guestos階段,避免了uefi不存在可寫高級(jí)文件系統(tǒng)驅(qū)動(dòng)的限制,從而進(jìn)一步的保證了電子設(shè)備能夠執(zhí)行還原操作;并且,基于該還原策略信息中的還原時(shí)間,可以為啟動(dòng)信息中的還原標(biāo)識(shí)提供數(shù)據(jù),用以支撐還原標(biāo)識(shí)指示是否進(jìn)行還原;同時(shí),基于該還原策略信息中的待還原對(duì)象,使得電子設(shè)備執(zhí)行還原操作時(shí)能夠明確還原操作的對(duì)象。
21、在一種可能的實(shí)施方式中,在所述從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息之前,還包括:
22、接收指示所述目標(biāo)還原點(diǎn)的指示指令;
23、基于所述指示指令,在所述啟動(dòng)信息中,將初始還原點(diǎn)修改為所述目標(biāo)還原點(diǎn)。
24、通過上述方式,基于接收的包含目標(biāo)還原點(diǎn)的指示指令,在啟動(dòng)信息中,將初始還原點(diǎn)修改為目標(biāo)還原點(diǎn),從而通過啟動(dòng)信息可以確定目標(biāo)還原點(diǎn),以便于電子設(shè)備可以明確待還原對(duì)象中的數(shù)據(jù)進(jìn)行還原時(shí)被還原至的數(shù)據(jù);并且,將目標(biāo)還原點(diǎn)設(shè)置在啟動(dòng)信息中,可以動(dòng)態(tài)調(diào)整具體的目標(biāo)還原點(diǎn),便于每次啟動(dòng)vm時(shí)實(shí)時(shí)修改該目標(biāo)還原點(diǎn)。
25、在一種可能的實(shí)施方式中,在所述從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息之后,還包括:
26、若所述還原標(biāo)識(shí)指示不進(jìn)行還原,則將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤。
27、通過上述方式,當(dāng)還原標(biāo)識(shí)指示不進(jìn)行還原時(shí),電子設(shè)備直接將目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為guestos可識(shí)別的磁盤,以便于在本次啟動(dòng)目標(biāo)虛擬機(jī)不執(zhí)行還原動(dòng)作時(shí),還可以繼續(xù)啟動(dòng)目標(biāo)虛擬機(jī)。
28、在一種可能的實(shí)施方式中,在所述將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤之后,還包括:
29、在所述目標(biāo)虛擬機(jī)運(yùn)行時(shí),將所述目標(biāo)虛擬機(jī)產(chǎn)生的變更信息中的數(shù)據(jù)保存至已創(chuàng)建的差分文件中;
30、將所述變更信息中的新路徑,更新至對(duì)應(yīng)元數(shù)據(jù)文件路徑的元數(shù)據(jù)文件中或者已創(chuàng)建的臨時(shí)文件中,其中,所述新路徑是所述目標(biāo)虛擬機(jī)中的文件對(duì)應(yīng)的路徑發(fā)生變化后的路徑。
31、通過上述方式,針對(duì)運(yùn)行目標(biāo)虛擬機(jī)時(shí)所產(chǎn)生的變更信息進(jìn)行了保存,避免了在下次啟動(dòng)目標(biāo)虛擬機(jī)執(zhí)行還原動(dòng)作后,無法復(fù)原本次運(yùn)行目標(biāo)虛擬機(jī)時(shí)所產(chǎn)生的變更信息。
32、在一種可能的實(shí)施方式中,所述啟動(dòng)信息存儲(chǔ)于可讀取可持久化的所述指定存儲(chǔ)區(qū)域中,在所述將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤之后,還包括:
33、獲取所述還原策略信息中的還原時(shí)間或者接收基于用戶操作生成的新還原指令;
34、根據(jù)所述還原時(shí)間或者所述新還原指令,生成新還原標(biāo)識(shí);
35、根據(jù)所述新還原標(biāo)識(shí)與獲取的新元數(shù)據(jù)文件路徑生成新啟動(dòng)信息,并將所述新啟動(dòng)信息保存至可讀寫可持久化的所述指定存儲(chǔ)區(qū)域,其中,所述新元數(shù)據(jù)文件路徑對(duì)應(yīng)待啟動(dòng)的所述目標(biāo)虛擬機(jī);
36、根據(jù)所述新啟動(dòng)信息,執(zhí)行所述目標(biāo)虛擬機(jī)的重啟操作。
37、通過上述方式,根據(jù)還原策略信息中的還原時(shí)間或者用戶操作的新還原指令,生成了新還原標(biāo)識(shí);再根據(jù)新還原標(biāo)識(shí)與新元數(shù)據(jù)文件路徑,生成了新啟動(dòng)信息;從而可以根據(jù)新啟動(dòng)信息中的新元數(shù)據(jù)文件路徑,使得電子設(shè)備可以明確待啟動(dòng)的虛擬機(jī),進(jìn)而使得電子設(shè)備可以執(zhí)行目標(biāo)虛擬機(jī)的重啟操作;并且還可以根據(jù)新啟動(dòng)信息中的新還原標(biāo)識(shí),使得電子設(shè)備可以明確在啟動(dòng)目標(biāo)虛擬機(jī)時(shí)是否需要執(zhí)行還原操作。
38、第二方面,本技術(shù)還提供了一種虛擬機(jī)的還原裝置,所述裝置包括:
39、讀取模塊,用于響應(yīng)于啟動(dòng)目標(biāo)虛擬機(jī)中的客戶操作系統(tǒng)guestos,從指定存儲(chǔ)區(qū)域讀取啟動(dòng)信息,所述啟動(dòng)信息包括還原標(biāo)識(shí),所述還原標(biāo)識(shí)用于指示是否將待還原對(duì)象中的數(shù)據(jù)還原至目標(biāo)還原點(diǎn)對(duì)應(yīng)的數(shù)據(jù);
40、處理模塊,用于若所述還原標(biāo)識(shí)指示進(jìn)行還原,則按照所述目標(biāo)虛擬機(jī)對(duì)應(yīng)的還原策略信息將所述待還原對(duì)象中的數(shù)據(jù)還原至所述目標(biāo)還原點(diǎn)對(duì)應(yīng)的數(shù)據(jù),將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤,其中,所述還原策略信息指示所述待還原對(duì)象。
41、在一種可能的實(shí)施方式中,所述讀取模塊,具體用于在統(tǒng)一可擴(kuò)展固件接口uefi階段中或者在維護(hù)系統(tǒng)中,生成所述啟動(dòng)信息,并將所述啟動(dòng)信息保存至所述指定存儲(chǔ)區(qū)域。
42、在一種可能的實(shí)施方式中,所述讀取模塊,具體用于獲取元數(shù)據(jù)文件路徑,所述元數(shù)據(jù)文件路徑對(duì)應(yīng)待啟動(dòng)的所述目標(biāo)虛擬機(jī);
43、根據(jù)所述還原標(biāo)識(shí)與所述元數(shù)據(jù)文件路徑生成所述啟動(dòng)信息。
44、在一種可能的實(shí)施方式中,所述讀取模塊,具體用于接收基于用戶操作生成的還原指令或基于所述還原策略信息生成的還原指令;
45、根據(jù)所述還原指令,更新所述還原標(biāo)識(shí)。
46、在一種可能的實(shí)施方式中,所述讀取模塊,具體用于獲取所述目標(biāo)虛擬機(jī)對(duì)應(yīng)的還原時(shí)間與所述目標(biāo)虛擬機(jī)中的所述待還原對(duì)象;
47、根據(jù)所述還原時(shí)間與所述待還原對(duì)象生成所述還原策略信息。
48、在一種可能的實(shí)施方式中,所述讀取模塊,具體用于接收指示所述目標(biāo)還原點(diǎn)的指示指令;
49、基于所述指示指令,在所述啟動(dòng)信息中,將初始還原點(diǎn)修改為所述目標(biāo)還原點(diǎn)。
50、在一種可能的實(shí)施方式中,所述處理模塊,具體用于若所述還原標(biāo)識(shí)指示不進(jìn)行還原,則將所述目標(biāo)虛擬機(jī)中的各個(gè)虛擬磁盤掛載為所述guestos可識(shí)別的磁盤。
51、在一種可能的實(shí)施方式中,所述處理模塊,具體用于在所述目標(biāo)虛擬機(jī)運(yùn)行時(shí),將所述目標(biāo)虛擬機(jī)產(chǎn)生的變更信息中的數(shù)據(jù)保存至已創(chuàng)建的差分文件中;
52、將所述變更信息中的新路徑,更新至對(duì)應(yīng)元數(shù)據(jù)文件路徑的元數(shù)據(jù)文件中或者已創(chuàng)建的臨時(shí)文件中,其中,所述新路徑是所述目標(biāo)虛擬機(jī)中的文件對(duì)應(yīng)的路徑發(fā)生變化后的路徑。
53、在一種可能的實(shí)施方式中,所述處理模塊,具體用于獲取所述還原策略信息中的還原時(shí)間或者接收基于用戶操作生成的新還原指令;
54、根據(jù)所述還原時(shí)間或者所述新還原指令,生成新還原標(biāo)識(shí);
55、根據(jù)所述新還原標(biāo)識(shí)與獲取的新元數(shù)據(jù)文件路徑生成新啟動(dòng)信息,并將所述新啟動(dòng)信息保存至可讀寫可持久化的所述指定存儲(chǔ)區(qū)域,其中,所述新元數(shù)據(jù)文件路徑對(duì)應(yīng)待啟動(dòng)的所述目標(biāo)虛擬機(jī);
56、根據(jù)所述新啟動(dòng)信息,執(zhí)行所述目標(biāo)虛擬機(jī)的重啟操作。
57、第三方面,本技術(shù)提供了一種電子設(shè)備,包括:
58、存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
59、處理器,用于執(zhí)行所述存儲(chǔ)器上所存放的計(jì)算機(jī)程序時(shí),實(shí)現(xiàn)上述的一種虛擬機(jī)的還原方法步驟。
60、第四方面,本技術(shù)提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的一種虛擬機(jī)的還原方法步驟。
61、上述第二方面至第四方面中的各個(gè)方面以及各個(gè)方面可能達(dá)到的技術(shù)效果請(qǐng)參照上述針對(duì)第一方面或第一方面中的各種可能方案可以達(dá)到的技術(shù)效果說明,這里不再重復(fù)贅述。