采用動態(tài)操作系統(tǒng)容器的應用遷移的制作方法
【專利摘要】采用動態(tài)操作系統(tǒng)容器(205-1,205-2)遷移應用(105-1至105-3)的方法和系統(tǒng)被披露,其中,多個當前在第一操作系統(tǒng)環(huán)境內被執(zhí)行的應用(105-1至105-3)被識別以便遷移到第二操作系統(tǒng)環(huán)境;在第一操作系統(tǒng)環(huán)境內創(chuàng)建新的操作系統(tǒng)容器(205-1,205-2);所述多個被識別的應用(105-1至105-3)被轉移到操作系統(tǒng)容器(205-1,205-2)中;以及,所述操作系統(tǒng)容器(205-1,205-2)被遷移到所述第二操作系統(tǒng)環(huán)境。
【專利說明】采用動態(tài)操作系統(tǒng)容器的應用遷移
【背景技術】
[0001]對于某些計算機程序連續(xù)可用性的需求不斷增加。長的正常運行時間(up-time)(例如在客戶期望一直能夠訪問的網絡服務上)通常是令人期望的。隨著網絡服務領域的發(fā)展,許多組織把高優(yōu)先級設置在確保它們的網絡服務連續(xù)運行并且持續(xù)可用上。例如,組織可能高度依賴于任務關鍵的企業(yè)應用(mission-critical enterprise applications)(諸如,數據庫應用和其他服務應用)以有效地執(zhí)行那個組織的目標。如此,所述組織可能希望減少或消除這些應用的中斷時間(downtime)。高可用性可能是令人期望的另一個示例是使用大量連續(xù)處理時間來執(zhí)行復雜計算的應用的示例。
[0002]然而,挑戰(zhàn)存在于維持計算機程序的連續(xù)操作。例如,計算機程序通常在可能經受定期維護的操作系統(tǒng)環(huán)境內執(zhí)行。某些類型的操作系統(tǒng)維護(諸如,修補(patching)操作)在操作系統(tǒng)離線之時被執(zhí)行,這典型涉及對在操作系統(tǒng)環(huán)境內正在運行的計算機程序的中斷。另外,執(zhí)行操作系統(tǒng)環(huán)境以及執(zhí)行計算機程序的計算系統(tǒng)可能需要維護,從而計算機系統(tǒng)的硬件在維護期間被斷電。在還有的其他示例中,執(zhí)行計算機程序的計算系統(tǒng)的處理資源可能會變得負擔過重,因而,威脅到計算系統(tǒng)連續(xù)執(zhí)行計算機程序的能力。
【專利附圖】
【附圖說明】
[0003]附圖圖示了在此描述原理的各種示例,并且成為說明書的一部分。圖示的示例僅僅是示例,并且不限制本公開的范圍。
[0004]圖1是依據在此描述原理的一個示例的示例性計算系統(tǒng)的框圖。
[0005]圖2是依據在此描述原理的一個示例在示例性計算系統(tǒng)的操作系統(tǒng)環(huán)境中創(chuàng)建操作系統(tǒng)容器的框圖。
[0006]圖3是依據在此描述原理的一個示例在示例性計算系統(tǒng)的操作系統(tǒng)環(huán)境中轉移應用到操作系統(tǒng)容器的框圖。
[0007]圖4是依據在此描述原理的一個示例把操作系統(tǒng)容器從第一操作系統(tǒng)環(huán)境遷移到第二操作系統(tǒng)環(huán)境以及第三操作系統(tǒng)環(huán)境的框圖。
[0008]圖5是依據在此描述原理的一個示例的用于使用操作系統(tǒng)容器進行應用遷移的示例性體系結構的框圖。
[0009]圖6是依據在此描述原理的一個示例使用操作系統(tǒng)容器進行應用遷移的示例性方法的流程圖。
[0010]圖7是依據在此描述原理的一個示例的示例性計算環(huán)境的框圖。
[0011]貫穿整個附圖,相同的附圖標記可以指代相似但不必須相同的單元。
【具體實施方式】
[0012]如上所述,連續(xù)地執(zhí)行計算機程序達一擴展時間段之久在一些情況下可能是令人期望的。然而,在執(zhí)行計算機程序的過程期間,使計算設備的硬件平臺和/或操作系統(tǒng)環(huán)境離線以執(zhí)行維護可能要變得審慎些。另外,執(zhí)行計算機程序的計算系統(tǒng)的處理資源可能變得負擔過重,從而威脅計算系統(tǒng)連續(xù)執(zhí)行計算機程序的能力。
[0013]鑒于這些和其他的考慮,本說明書披露了一種方法和系統(tǒng),其使用動態(tài)地被創(chuàng)建的操作系統(tǒng)容器把正在運行的應用從第一操作系統(tǒng)環(huán)境遷移到至少一個其他操作系統(tǒng)環(huán)境,從而允許第一操作系統(tǒng)環(huán)境或它的基礎硬件平臺在不干擾應用執(zhí)行的情況下經受維護。另外或可替代地,本說明書的方法或系統(tǒng)可以被用于釋放在第一操作系統(tǒng)環(huán)境上的處理資源。
[0014]在遷移應用的一個示例性方法中,多個當前在第一操作系統(tǒng)環(huán)境中被執(zhí)行的應用被識別以便遷移到第二操作系統(tǒng)環(huán)境。然后,新的操作系統(tǒng)容器在第一操作系統(tǒng)環(huán)境內被創(chuàng)建,并且所述多個被識別的應用被轉移(transfer)到所述操作系統(tǒng)容器中。然后,所述操作系統(tǒng)容器可以被遷移(migrate)到第二操作系統(tǒng)環(huán)境。
[0015]在遷移應用的另一個示例性方法中,來自用戶的指令在第一操作系統(tǒng)環(huán)境中被接收來創(chuàng)建至少第一操作系統(tǒng)容器和第二操作系統(tǒng)容器。當前在第一操作系統(tǒng)環(huán)境內正在運行的第一數量的應用到第一操作系統(tǒng)容器,以及當前在第一操作系統(tǒng)環(huán)境內正在運行的第二數量的應用到第二操作系統(tǒng)容器的分配也被接收。第一數量的應用被相應地轉移到第一操作系統(tǒng)容器,并且第二數量的應用被轉移到第二操作系統(tǒng)容器。然后,第一操作系統(tǒng)容器被遷移到第二操作系統(tǒng)環(huán)境,并且第二操作系統(tǒng)容器被遷移到第三操作系統(tǒng)環(huán)境。
[0016]本說明書的示例性系統(tǒng)包括至少一個處理器以及通信地耦合到所述處理器的存儲器。所述存儲器包括可執(zhí)行代碼,當所述可執(zhí)行代碼由至少一個處理器執(zhí)行時,所述可執(zhí)行代碼使所述至少一個處理器:實現第一操作系統(tǒng)環(huán)境;識別多個當前在第一操作系統(tǒng)環(huán)境內被執(zhí)行的應用以便遷移到第二操作系統(tǒng)環(huán)境;在第一操作系統(tǒng)環(huán)境內創(chuàng)建新的操作系統(tǒng)容器;把所述多個被識別的應用轉移到所述操作系統(tǒng)容器中;以及把所述操作系統(tǒng)容器遷移到第二操作系統(tǒng)環(huán)境。
[0017]這些方法和系統(tǒng)提供大量益處。與應用在容器內部被啟動的傳統(tǒng)操作系統(tǒng)容器相比較而言,本說明書的方法和系統(tǒng)披露了操作系統(tǒng)容器的創(chuàng)建,當有理由把應用移動到一個或多個其他OS實例時,所述操作系統(tǒng)容器的創(chuàng)建允許把不是從所述容器被啟動的應用移到所述容器中。
[0018]如本說明書和所附權利要求中所使用的,術語“應用”指的是不同于操作系統(tǒng)內核或硬件驅動程序的計算機程序。
[0019]如本說明書和所附權利要求中所使用的,術語“操作系統(tǒng)環(huán)境”指的是操作系統(tǒng)內核的實例以及一組條件,在所述條件下應用可以被使用操作系統(tǒng)內核執(zhí)行。
[0020]如本說明書和所附權利要求中所使用的,術語“操作系統(tǒng)容器”指的是具有其自己的操作系統(tǒng)名稱空間(包括進程、文件系統(tǒng)、進程間通信(IPC)、主機名、以及網絡空間)的虛擬操作系統(tǒng)。操作系統(tǒng)容器(如在此所定義的)被在操作系統(tǒng)環(huán)境內實現,并且與在那個相同操作系統(tǒng)環(huán)境內被執(zhí)行的其他應用、進程以及操作系統(tǒng)容器邏輯上隔離。
[0021]如本說明書和所附權利要求中所使用的,術語“動態(tài)操作系統(tǒng)容器”指的是在要求時能夠被創(chuàng)建以包含當操作系統(tǒng)容器被創(chuàng)建時已經正在運行的應用的操作系統(tǒng)容器。
[0022]如本說明書和所附權利要求中所使用的,術語“內核”或“操作系統(tǒng)內核”指的是控制應用的執(zhí)行和應用對硬件資源的訪問的計算機操作系統(tǒng)的核心部件。
[0023]如本說明書和所附權利要求中所使用的,術語“驅動程序”指的是機器可讀指令的自治集合,其在操作系統(tǒng)內核與通信地耦合到執(zhí)行所述操作系統(tǒng)內核的處理器的物理設備之間提供接口。
[0024]在接下來的描述中,為了解釋的目的,許多具體的細節(jié)被闡述以提供對本系統(tǒng)和方法的徹底的理解。然而,本裝置、系統(tǒng)和方法可以在沒有這些具體細節(jié)的情況下被實施,這對于本領域的技術人員而言是顯然的。本說明書中對“示例”或類似的參考意味著:相對于那個示例被描述的特定特征、結構、或特點如描述的那樣被包括,但可以不被包括在其他示例中。
[0025]在此披露的原理現在將相對于示例性的系統(tǒng)和方法被討論。
[0026]圖1是示例性計算系統(tǒng)(100)的框圖,所述計算系統(tǒng)(100)被配置成實現其中各種應用(105-1至105-3)被執(zhí)行的操作系統(tǒng)環(huán)境。所述示例性計算系統(tǒng)(100)包括物理硬件(110)的平臺。所述物理硬件(110)可以包括例如至少一個處理器、計算機存儲器、總線、本地存儲器和對外部設備的接口。特別地,所述物理硬件(110)被配置成執(zhí)行被存儲以實現某些功能性單元的機器可讀指令。
[0027]由所述物理硬件(110)實現的功能性單元中的一個是操作系統(tǒng)(115)的功能性單元。所述操作系統(tǒng)包括內核,所述內核協(xié)調應用(105-1至105-3)的執(zhí)行和由所述應用(105-1至105-3)對物理資源的訪問。在操作系統(tǒng)(115)的指導下,每個應用(105-1至105-3)可以被實現為一個或多個由物理硬件(110)執(zhí)行的不同的進程。
[0028]在某些示例中,所述計算系統(tǒng)(100)是具有用于所述操作系統(tǒng)(115)的專用物理硬件的獨立計算系統(tǒng)??商娲?,所述計算系統(tǒng)(100)可以是具有由真實的物理硬件執(zhí)行的虛擬化軟件所實現的虛擬物理硬件(110)的虛擬機器。
[0029]圖2是具有兩個額外的新的操作系統(tǒng)容器(205-1,205-2)的圖1中計算系統(tǒng)(100)的框圖。如上所述,出于多種原因把應用(105-1至105-3)遷移到新的操作系統(tǒng)環(huán)境可能是令人期望的。例如,管理者可能希望修補或更新所述計算系統(tǒng)(100)的操作系統(tǒng),或者計算系統(tǒng)(100)的處理資源有可能過載。
[0030]考慮到正在運行的應用(105-1至105-3)到新的計算系統(tǒng)的無縫遷移,兩個操作系統(tǒng)容器(205-1,205-2)被創(chuàng)建。所述操作系統(tǒng)容器(205-1,205-2)可以在用戶的指導下被創(chuàng)建,所述用戶通過用戶接口與計算系統(tǒng)(100)交互。另外或可替代地,所述操作系統(tǒng)容器(205-1,205-2)可以響應于觸發(fā)器(諸如,過載條件或維護進程)自動地被創(chuàng)建。每個所述操作系統(tǒng)容器(205-1,205-2)虛擬化隔離的、自治的操作系統(tǒng),所述操作系統(tǒng)具有其自己的進程、文件系統(tǒng)、IPC,主機名和網絡空間。然而,所述操作系統(tǒng)容器(205-1,205-2)不執(zhí)行操作系統(tǒng)內核的分離的實例。相比之下,所述操作系統(tǒng)容器(205-1,205-2)的功能性由所述計算系統(tǒng)(100)的驅動程序和已經存在的操作系統(tǒng)(115)實現。
[0031]每個應用(105-1至105-3)可以被分配到所述被創(chuàng)建的容器(205_1,205-2)中的一個。應用(105-1至105-3)到操作系統(tǒng)容器(205-1,205-2)的分配可以基于來自計算系統(tǒng)的用戶通過用戶接口的輸入。
[0032]另外或可替代地,應用(105-1至105-3)的分配可以由操作系統(tǒng)(115)基于試探法和/或規(guī)則自動地加以確定。例如,所述操作系統(tǒng)(115)可以確定被每個正在運行的應用(105-1至105-3)利用的處理資源的數量,確定外部計算系統(tǒng)中可用的處理資源的數量,并且通過將應用(105-1至105-3)以及操作系統(tǒng)容器(205-1,205-2)與外部計算系統(tǒng)匹配,而把應用(105-1至105-3)劃分到操作系統(tǒng)容器(205-1至205-3)中。
[0033]如圖2所示,在一些示例中,所述操作系統(tǒng)(115)可以執(zhí)行分別來自、并且并排于被創(chuàng)建的容器(205-1,205-2)的應用(105-1至105-3)。一旦應用(105-1至105-3)已被分配到它們各自的操作系統(tǒng)容器(205-1,205-2),所述操作系統(tǒng)(115)可以把應用(105-1至105-3)轉移到它們各自的操作系統(tǒng)容器(205-1,205-2)。
[0034]圖3是所述應用(105-1至105-3)已被轉移到它們各自被分配的操作系統(tǒng)容器(205-1,205-2)之后,圖1和圖2中的示例性計算系統(tǒng)(100)的框圖。如圖3所示,一個應用(105-1)已被轉移到第一操作系統(tǒng)容器(205-1),以及兩個應用(105-2至105-3)已被轉移到第二操作系統(tǒng)容器(205-2)。所述操作系統(tǒng)(115)可以被配置成:在把正在運行的應用(105-1至105-3)轉移到它們各自的操作系統(tǒng)容器(205-1,205-2)之前,適配它們以便容器化。
[0035]例如,所述操作系統(tǒng)(115)可以檢索用于每個應用(105-1至105_3)的每個進程的進程數據結構,并且更新那個數據結構,以反映所述進程已被分配到特定的容器、所述容器屬于某個類型(即,為應用遷移而被動態(tài)地創(chuàng)建的)、以及那個進程已被分配到的容器的身份標識。
[0036]所述操作系統(tǒng)內核可以被最優(yōu)化,以便按照可以適合于在此描述原理的特定實現的方式,基于這些進程數據結構而辨別容器中正在運行的進程,并且向被容器化的進程提供特殊處理。
[0037]圖4示出了圖2-3中的第一操作系統(tǒng)容器和第二操作系統(tǒng)容器(205-1,205-2)分別從它們初始的計算系統(tǒng)(100)向第二計算系統(tǒng)(405-1)和第三計算系統(tǒng)(405-2)的遷移。第二計算系統(tǒng)(405-1)可以實現第二操作系統(tǒng)環(huán)境,其中第二組硬件(410-1)執(zhí)行第二操作系統(tǒng)(415-1),并且第三計算系統(tǒng)(405-2)可以實現第三操作系統(tǒng)環(huán)境,其中第三組硬件(410-2)執(zhí)行第三操作系統(tǒng)(415-2)。
[0038]在某些示例中,第二計算系統(tǒng)(405-1)和第三計算系統(tǒng)(405-2)中的至少一個可以被動態(tài)地創(chuàng)建并作為其各自操作系統(tǒng)容器(205-1,205-2)的目的地。例如,響應于對執(zhí)行第二操作系統(tǒng)容器(205-2)的應用的計算資源的需求,新的物理或虛擬計算平臺可以被實例化為第三計算系統(tǒng)(405-2)以接收第二操作系統(tǒng)容器(205-2)。
[0039]除了遷移自第一計算環(huán)境(100)的操作系統(tǒng)容器(205-1,205-2)之外,第二計算系統(tǒng)和第三計算系統(tǒng)(405-1,405-2)中的一個或二個還可以執(zhí)行額外的進程和/或容器。在本示例中,包含來自第一計算系統(tǒng)(100)的第一應用(105-1)的第一操作系統(tǒng)容器(205-1)已被遷移到第二計算系統(tǒng)(405-1),所述第二計算系統(tǒng)(405-1)同時執(zhí)行與第一操作系統(tǒng)容器(205-1)并行的兩個額外的應用(420-1,420-2)。同樣在本示例中,包含第一計算系統(tǒng)100的第二應用和第三應用(105-2,105-3)的第二操作系統(tǒng)容器(205-2)已被遷移到第三計算系統(tǒng)(405-2 ),所述第三計算系統(tǒng)(405-2 )同時執(zhí)行額外的容器(425 )。
[0040]一旦第一計算系統(tǒng)(100)的第一容器和第二容器(205-1,205-2)已經分別被遷移到第二計算系統(tǒng)和第三計算系統(tǒng)(405-1,405-2),第一計算系統(tǒng)(100)可以被離線用于維修或承擔額外的工作負荷。從被遷移自第一計算系統(tǒng)(100)的應用(105-1至105-3)的用戶或客戶的角度,這看起來就好像所述應用(105-1至105-3)—直在連續(xù)運行而沒有任何功能性上的實質變化。所述操作系統(tǒng)容器(205-1,205-2)為運行在目標計算系統(tǒng)(405-1,405-2)上的被遷移應用(105-1至105-3)提供模擬操作系統(tǒng)環(huán)境,好像它們正運行在源計算系統(tǒng)(100)上一樣。
[0041]在本說明書中描述的第一操作系統(tǒng)容器和第二操作系統(tǒng)容器(205-1,205-2)相比于本領域中使用的其他類型操作系統(tǒng)容器是獨特的。其他操作系統(tǒng)容器在啟動包含在它們中的應用之前被創(chuàng)建,并且所述應用被從操作系統(tǒng)容器內被啟動。
[0042]相比之下,本說明書的操作系統(tǒng)容器(205-1,205-2)能夠基于需求被動態(tài)地創(chuàng)建,并且在操作系統(tǒng)容器(205-1,205-2)創(chuàng)建之前已開始的正在運行的工作負荷可以被轉移到新創(chuàng)建的操作系統(tǒng)容器(205-1,205-2)中。如此,虛擬機器或操作系統(tǒng)容器不需要被預先配置,并且工作負荷不需要在VM或容器內被初始啟動以把所述工作負荷遷移到其他操作系統(tǒng)環(huán)境。這些特征節(jié)省了寶貴的處理資源,并且降低了操作系統(tǒng)環(huán)境的復雜度。
[0043]另外,本說明書中的操作系統(tǒng)容器(205-1,205-2)允許用戶創(chuàng)建操作系統(tǒng)容器(205-1,205-2),并且基于通過用戶接口輸入到主機計算系統(tǒng)(100)的輸入把正在運行的應用分配到被創(chuàng)建的所述容器(205-1,205-2)。此特征為管理用戶有選擇地把正在運行的應用遷移到外部操作系統(tǒng)環(huán)境以在主機計算系統(tǒng)環(huán)境上執(zhí)行維護或平衡多個計算系統(tǒng)(100,405-1, 405-2)之間的工作負荷提供了靈活性。
[0044]這個靈活性進一步使用戶能夠創(chuàng)建多個操作系統(tǒng)容器(205-1,205-2),并且把正在運行的應用分配到所述多個容器,因而,允許用戶把工作負荷從主機計算系統(tǒng)(100)撤出并轉至多個目標計算系統(tǒng)(405-1,405-2)。如此,整個系統(tǒng)負荷能夠被分布到多個操作系統(tǒng)容器(205-1,205-2)之間,因而,在目標計算系統(tǒng)(405-1,405-2)的可用處理資源之間平衡來自被遷移應用的工作負荷。
[0045]然而,由本說明書的操作系統(tǒng)容器(205-1,205-2)提供的再另一個益處是把被撤出的應用遷移回源計算系統(tǒng)的能力。例如,如果應用(105-1至105-3)被遷移到目標計算系統(tǒng)(405-1,405-2)以在源計算系統(tǒng)(100)上執(zhí)行維護,而一旦所述維護已被執(zhí)行了并且源計算系統(tǒng)(100)恢復在線,把應用(105-1至105-3)返回到源計算系統(tǒng)(100)可能是令人期望的。這可以通過把所述容器(205-1,205-2)簡單地遷移回源計算系統(tǒng)(100)而完成。然后,所述應用(105-1至105-3)可以從所述容器(205-1,205-2)中被移除或保留在所述容器(205-1,205-2)中以便在源計算系統(tǒng)(100)處操作。
[0046]圖5是用于使用操作系統(tǒng)容器遷移應用的系統(tǒng)的示例性體系結構(500)的框圖。所述系統(tǒng)體系結構(500)可以例如在具有正在運行的應用(105-1至105-3)的計算系統(tǒng)(100)內被實現。
[0047]所述系統(tǒng)體系結構500包括允許用戶(505)與即時(Just-1n-Time (JIT))容器管理實用程序(515)交互的用戶接口(510)。對于本示例而言,具有相對于圖1-4的討論所描述的特點和特征的操作系統(tǒng)容器可以被簡稱為JIT容器。
[0048]現在將給出用于使用圖5的所述系統(tǒng)體系結構(500)把應用遷移到外部計算系統(tǒng)的順序過程的示例。所述過程開始于用戶(505)通過用戶接口(510)向JIT容器管理實用程序(515)發(fā)出指令,以創(chuàng)建新的JIT操作系統(tǒng)容器。所述指令可以包括兩個參數:用于JIT容器的名稱以及將被轉移到新的JIT容器中的每個正在運行的應用的標識。如果沒有應用被指定,所述指令將被視為默認指定在主機計算系統(tǒng)的操作系統(tǒng)上當地正在運行的所有應用和進程。[0049]當接收到來自用戶(505)的指令,JIT容器管理實用程序(515)可以驗證所述參數,并且把用于新的JIT容器的配置信息存儲在磁盤(525)上的文件中。然后,JIT容器管理實用程序(515)可以向JIT容器協(xié)調器(orchestrator) (520)發(fā)送請求以創(chuàng)建JIT容器。然后,JIT協(xié)調器(520)可以向操作系統(tǒng)內核的進程容器化模塊(530)發(fā)送觸發(fā)器,所述進程容器化模塊(530)響應于所述觸發(fā)器開始用于將被轉移到JIT容器的每個應用的每個進程的容器化進程。
[0050]作為容器化進程的一部分,所述進程容器化模塊(530)與進程管理子系統(tǒng)(535)交互以檢索對應于將被轉移到JIT容器的每個應用的每個進程的數據結構,通過在數據結構的字段中指定JIT進程屬于JIT容器而標記所述數據結構為所述JIT進程,并且把JIT容器標識符輸入到數據結構。所述JIT容器標識符可以是由用戶指定的名稱或是另一標識符。
[0051]然后,所述容器遷移協(xié)調器(540)可以與操作系統(tǒng)內核的實時遷移協(xié)調器(545)交互,以把JIT容器遷移到外部計算系統(tǒng),所述外部計算系統(tǒng)由用戶(505)指定或者使用試探法或基于規(guī)則的計算自動地被選擇。
[0052]圖6是示例性方法(600)的流程圖,所述方法(600)通過操作系統(tǒng)容器的使用把至少一個正在運行的應用從由至少一個處理器執(zhí)行的第一操作系統(tǒng)環(huán)境遷移到第二操作系統(tǒng)環(huán)境。所述方法(600)可以例如由圖1-4的計算系統(tǒng)(100)執(zhí)行。第一操作系統(tǒng)和第二操作系統(tǒng)中的至少一個可以由例如虛擬機實現,所述虛擬機通過由物理機執(zhí)行的管理程序實現。
[0053]所述方法(600)開始于識別(方框605)進程,所述進程作為遷移候選當前在第一操作系統(tǒng)環(huán)境內正在被執(zhí)行。如前所述,所述進程可以由用戶和/或自動地識別。然后,新的操作系統(tǒng)容器在第一操作系統(tǒng)環(huán)境內被創(chuàng)建(方框610),并且被識別的應用被轉移(方框615)到新創(chuàng)建的操作系統(tǒng)容器中。
[0054]在某些示例中,被識別的應用在被轉移到操作系統(tǒng)容器中之前可以被適配以便在操作系統(tǒng)容器內執(zhí)行。例如,與每個被識別應用的每個進程相對應的數據結構可以被按照上述方式更新以適配所述被識別的應用以便在操作系統(tǒng)容器內運行。在某些示例中,被識別的應用可以在它們轉移到新創(chuàng)建的操作系統(tǒng)容器之前還沒有在任何操作系統(tǒng)容器內被執(zhí)行。所述被識別的應用在它們轉移到操作系統(tǒng)容器期間可以連續(xù)運行。
[0055]然后,所述操作系統(tǒng)容器被遷移(方框620)到第二操作系統(tǒng)環(huán)境。所述被識別的應用可以在操作系統(tǒng)容器到第二操作系統(tǒng)環(huán)境的遷移的之前和之后連續(xù)運行,以最小化或消除應用中斷時間。在某些示例中,被識別應用的狀態(tài)可以在操作系統(tǒng)容器的遷移之前被保存,并且在操作系統(tǒng)容器的遷移完成之后被恢復。另外或可替代地,所述應用可以在到第二操作系統(tǒng)環(huán)境的遷移期間連續(xù)執(zhí)行。如此,在操作系統(tǒng)容器到第二操作系統(tǒng)環(huán)境的遷移之前和之后,對于每個被識別應用,執(zhí)行的連續(xù)性可以被維持。
[0056]在某些示例中,在操作系統(tǒng)容器到第二操作系統(tǒng)環(huán)境的遷移之后,第一操作系統(tǒng)容器可以被修補或以另外的方式經受維護。一旦第一操作系統(tǒng)環(huán)境上的維護已被完成,所述操作系統(tǒng)容器可以響應于來自第一操作系統(tǒng)環(huán)境的觸發(fā)器被遷移回第一操作系統(tǒng)環(huán)境。當返回到第一操作系統(tǒng)環(huán)境時,所述操作系統(tǒng)容器中的應用可以在所述操作系統(tǒng)容器內繼續(xù)運行,或直接地在第一操作系統(tǒng)環(huán)境內當地被執(zhí)行。在某些示例中,用戶可以被給出選項來選擇是在所述操作系統(tǒng)容器內繼續(xù)執(zhí)行所述應用還是直接地在第一操作系統(tǒng)環(huán)境內當地執(zhí)行所述應用。
[0057]圖7是示例性計算設備(705)的框圖,所述計算設備(705)可以被用于實現與在此描述原理一致的之前圖中的計算系統(tǒng)(100,405-1, 405-2)、系統(tǒng)體系結構500)和/或方法(600,700)中的任一項。
[0058]在這個示例性設備(705)中,基礎的硬件平臺執(zhí)行機器可讀指令來展示期望的功能性。例如,如果所述示例性設備(705)實現圖1的計算系統(tǒng)(100),所述機器可讀指令可以包括至少用于下述操作的指令:實現第一操作系統(tǒng)環(huán)境,識別多個當前在第一操作系統(tǒng)環(huán)境內被執(zhí)行的應用以便遷移到第二操作系統(tǒng)環(huán)境;在第一操作系統(tǒng)環(huán)境內創(chuàng)建新的操作系統(tǒng)容器;把所述被識別的多個應用轉移到所述操作系統(tǒng)容器中;以及把所述操作系統(tǒng)容器遷移到第二操作系統(tǒng)環(huán)境。
[0059]所述示例性設備(705)的硬件平臺可以包括至少一個執(zhí)行在主存儲器(725)中所存儲的代碼的處理器(720)。在某些示例中,所述處理器(720)可以包括至少一個具有多個獨立中央處理單元(CPU)的多核處理器,每個CPU具有其自己的LI高速緩存并且所有CPU共享公共總線接口和L2高速緩存。另外或可替代地,所述處理器(720)可以包括至少一個單核處理器。
[0060]所述至少一個處理器(720)可以通過主總線(735)通信地耦合到所述硬件平臺的主存儲器(725)和主機外圍部件接口橋(PCI) (730)。所述主存儲器(725)可以包括動態(tài)非易失存儲器,諸如,隨機存取存儲器(RAM)。所述主存儲器(725)可以存儲可由所述處理器(720)通過主總線(735)獲得的可執(zhí)行代碼和數據。
[0061]所述主機PCI橋(730)可以充當所述主總線(735)和用于與外圍設備通信的外圍總線(740)之間的接口。其中的這些外圍設備可以是與一個或多個網絡通信的一個或多個網絡接口控制器(745 )、用于與本地存儲設備(755 )通信的接口( 750 )、以及其他外圍輸入/輸出設備接口(760)。
[0062]本示例中的所述設備(705)的硬件平臺的配置僅僅舉例說明一類可以相對于本說明書所描述的原理被使用的硬件平臺。對所述硬件平臺的各種修改、添加以及刪除可以被做出而仍然實現本說明書所描述的原理。
[0063]之前的描述已被給出僅用以圖示和說明所述原理的示例。該描述并不旨在窮盡或把這些原理限制到所披露的任何精確形式。依據上述教導,許多修改和變化是可能的。
【權利要求】
1.一種采用動態(tài)操作系統(tǒng)容器(205-1,205-2)遷移應用(105-1至105-3)的方法,所述方法包括: 在由至少一個處理器(720)實現的第一操作系統(tǒng)環(huán)境中,識別多個當前在所述第一操作系統(tǒng)環(huán)境內被執(zhí)行的應用(105-1至105-3)以便遷移到第二操作系統(tǒng)環(huán)境; 在所述第一操作系統(tǒng)環(huán)境內創(chuàng)建新的操作系統(tǒng)容器(205-1,205-2); 把所述多個被識別的應用(105-1至105-3)轉移到所述操作系統(tǒng)容器(205-1,205-2)中;以及 把所述操作系統(tǒng)容器(205-1,205-2)遷移到所述第二操作系統(tǒng)環(huán)境。
2.根據權利要求1所述的方法,進一步包括:適配所述多個被識別的應用(105-1至105-3)以便在所述操作系統(tǒng)容器內執(zhí)行。
3.根據權利要求1所述的方法,進一步包括:在所述操作系統(tǒng)容器(205-1,205-2)到所述第二操作系統(tǒng)環(huán)境的所述遷移之前和之后,維持對于每個被識別的應用(105-1至105-3)的執(zhí)行連續(xù)性。
4.根據權利要求1所述的方法,其中,在把所述多個被識別的應用(105-1至105-3)轉移到所述操作系統(tǒng)容器(205-1,205-2)之前,所述多個被識別的應用(105-1至105-3)不在任何操作系統(tǒng)容器內被執(zhí)行。
5.根據權利要求1所述的方法,進一步包括:所述多個應用(105-1至105-3)在所述第二操作系統(tǒng)環(huán)境上的所述操作系統(tǒng)容器(205-1,205-2)內正在被執(zhí)行之時,修補所述第一操作系統(tǒng)環(huán)境。
6.根據權利要求1所述的方法,其中,所述第一操作系統(tǒng)環(huán)境和所述第二操作系統(tǒng)環(huán)境中的至少一個被在虛擬機內實現。`
7.根據權利要求1所述的方法,進一步包括:響應于觸發(fā)器,把所述多個應用(105-1至105-3)遷移回所述第一操作系統(tǒng)環(huán)境。
8.一種遷移由計算系統(tǒng)(100)執(zhí)行的應用(105-1至105-3)的方法,所述方法包括: 在由至少一個處理器(720)實現的第一操作系統(tǒng)環(huán)境中,接收來自用戶的指令來創(chuàng)建至少第一操作系統(tǒng)容器(205-1)和第二操作系統(tǒng)容器(205-2); 在所述第一操作系統(tǒng)環(huán)境中,接收當前在所述第一操作系統(tǒng)環(huán)境內正在運行的第一數量應用(105-1)到所述第一操作系統(tǒng)容器(205-1)的分配,以及當前在所述第一操作系統(tǒng)環(huán)境內正在運行的第二數量應用(105-2,105-3)到所述第二操作系統(tǒng)容器(205-2)的分配; 把所述第一數量應用(105-1)轉移到所述第一操作系統(tǒng)容器(205-1),以及把所述第二數量應用(105-2,105-3)轉移到所述第二操作系統(tǒng)容器(205-2); 把所述第一操作系統(tǒng)容器(205-1)遷移到第二操作系統(tǒng)環(huán)境,以及把所述第二操作系統(tǒng)容器(205-2)遷移到第三操作系統(tǒng)環(huán)境。
9.根據權利要求8所述的方法,其中,所述第二操作系統(tǒng)環(huán)境和所述第三操作系統(tǒng)環(huán)境由用戶選擇。
10.根據權利要求8所述的方法,進一步包括:把所述第一操作系統(tǒng)容器(205-1)分配到所述第二操作系統(tǒng)環(huán)境,以及把所述第二操作系統(tǒng)容器(205-2)分配到所述第三操作系統(tǒng)環(huán)境,所述分配基于:a)所述第二操作系統(tǒng)環(huán)境和所述第三操作系統(tǒng)環(huán)境中處理資源的可用性,以及b)由所述第一數量應用(105-1)和所述第二數量應用(105-2, 105-3)中的每個應用(105-1至105-3)消耗的處理資源的數量。
11.根據權利要求8所述的方法,進一步包括:動態(tài)地創(chuàng)建所述第二操作系統(tǒng)環(huán)境和所述第三操作系統(tǒng)環(huán)境中的至少一個,作為所述第一操作系統(tǒng)容器(205-1)和所述第二操作系統(tǒng)容器(205-2)中的至少一個的目的地。
12.—種系統(tǒng),包括: 至少一個處理器(720); 存儲器(725),通信地耦合至所述至少一個處理器(720),所述存儲器(725)包括可執(zhí)行代碼,當所述可執(zhí)行代碼由所述至少一個處理器(720 )執(zhí)行時,所述可執(zhí)行代碼使所述至少一個處理器(720): 實現第一操作系統(tǒng)環(huán)境; 識別多個當前在所述第一操作系統(tǒng)環(huán)境內被執(zhí)行的應用(105-1至105-3)以便遷移到第二操作系統(tǒng)環(huán)境; 在所述第一操作系統(tǒng)環(huán)境內創(chuàng)建新的操作系統(tǒng)容器(205-1,205-2); 把所述多個被識別的應用(105-1至105-3)轉移到所述操作系統(tǒng)容器(205-1,205-2)中;以及 把所述操作系統(tǒng)容器(205-1,205-2)遷移到所述第二操作系統(tǒng)環(huán)境。
13.根據權利要求12所述的系統(tǒng),所述可執(zhí)行代碼進一步使所述至少一個處理器(720)適配所述多個被識別的應用(105-1至105-3)以便在所述操作系統(tǒng)容器(205-1,205-2)內執(zhí)行。
14.根據權利要求12所述的系統(tǒng),所述可執(zhí)行代碼進一步使所述至少一個處理器(720)響應于觸發(fā)器,把所述多個被識別的應用(105-1至105-3)遷移回所述第一操作系統(tǒng)環(huán)境。
15.根據權利要求12所述的系統(tǒng),所述可執(zhí)行代碼進一步使所述至少一個處理器(720)在所述多個應用(105-1至105-3)在所述第二操作系統(tǒng)環(huán)境上的所述操作系統(tǒng)容器(205-1,205-2)內正在被執(zhí)行之時,修補所述第一操作系統(tǒng)環(huán)境。
【文檔編號】G06F9/06GK103620552SQ201180071938
【公開日】2014年3月5日 申請日期:2011年6月29日 優(yōu)先權日:2011年6月29日
【發(fā)明者】W-Y.蘇 申請人:惠普發(fā)展公司,有限責任合伙企業(yè)