本發(fā)明總體上涉及一種主機裝置的容器運行加速方法及容器運行加速系統(tǒng),具體地涉及一種主機裝置的容器同時運行時進行日志文件讀寫的加速方法及系統(tǒng)。
背景技術(shù):
近年,以Docker為代表的容器技術(shù)作為輕量化的虛擬化方案,在互聯(lián)網(wǎng)中被大量部署。容器為應(yīng)用程序提供了隔離的運行空間:每個容器內(nèi)都包含一個獨享的完整用戶環(huán)境空間,并且一個容器內(nèi)的變動不會影響其他容器的運行環(huán)境。為了達到這種效果,容器技術(shù)使用了一系列的系統(tǒng)級別的機制,例如,利用Linux namespaces來進行空間隔離,通過文件系統(tǒng)的掛載點來決定容器可以訪問哪些文件,通過cgroups來確定每個容器可以利用多少資源。此外,容器之間共享同一系統(tǒng)內(nèi)核。這樣,當同一個庫(即,文件系統(tǒng))被多個容器使用時,內(nèi)存的使用效率會得到提升。
通常,單臺物理機上可以有幾十到幾百個容器同時運行,這些容器在進行數(shù)據(jù)讀寫的時候會產(chǎn)生IO瓶頸,特別是在帶有日志功能的文件系統(tǒng)上,情況會變的更糟,文件日志的讀寫成為瓶頸,導(dǎo)致容器間的資源競爭和容器對外服務(wù)中斷(DOS)。
以常用的linux的EXT3/4文件系統(tǒng)為例,在現(xiàn)在的情況下,假設(shè)多個容器(容器1、容器2和容器3等)在同時寫硬盤的時候,為了防止系統(tǒng)突發(fā)故障,每次文件的操作要寫入日志文件中。這樣,這個日志文件的讀寫就成為系統(tǒng)瓶頸,每次的文件操作,都要排隊來更新日志文件內(nèi)容。更糟糕的是,由于這個文件是存在于硬盤上,因此,每次都要確認文件改動內(nèi)容并寫入日志文件后才可以進行下一步動作,這樣,就使容器的存儲IO性能變得更差。
在現(xiàn)有技術(shù)中,日志文件存在于硬盤上,每次文件系統(tǒng)更新都要把相關(guān)操作寫入日志文件中,以防止系統(tǒng)突然掉電后文件系統(tǒng)的崩潰。
其缺點在于,首先,日志文件存于硬盤上,性能差且IO延時長。其次,當多個容器并行運行的時候,日志文件會成為系統(tǒng)瓶頸,在嚴重的情況下還會導(dǎo)致系統(tǒng)拒絕服務(wù)(DOS)。
技術(shù)實現(xiàn)要素:
本發(fā)明的一個方面提供了一種主機裝置的容器運行加速方法,包括:當由多個容器對所共享的文件系統(tǒng)進行操作時,將日志文件寫入非易失性內(nèi)存,其中,所述日志文件用于記錄所述多個容器對所述文件系統(tǒng)進行的操作,在所述主機裝置啟動時,將所述非易失性內(nèi)存映射到該主機裝置的內(nèi)核地址空間。
根據(jù)本發(fā)明的一個方面的主機裝置的容器運行加速方法,所述多個容器對所共享的文件系統(tǒng)同時進行操作。
根據(jù)本發(fā)明的一個方面的主機裝置的容器運行加速方法,所述日志文件僅被寫入非易失性內(nèi)存,而不被寫入所述主機裝置的硬盤。
根據(jù)本發(fā)明的一個方面的主機裝置的容器運行加速方法,在所述主機裝置正常關(guān)機時,從所述非易失性內(nèi)存中讀取所述日志文件,并將所讀取的該日志文件寫入所述主機裝置的硬盤。
根據(jù)本發(fā)明的一個方面的主機裝置的容器運行加速方法,所述內(nèi)核地址空間是所述主機裝置的操作系統(tǒng)的邏輯地址空間。
本發(fā)明的另一個方面提供了一種主機裝置的容器運行加速系統(tǒng),包括:寫入模塊,當由多個容器對所共享的文件系統(tǒng)進行操作時,將日志文件寫入非易失性內(nèi)存,其中,所述日志文件用于記錄所述多個容器對所述文件系統(tǒng)進行的操作;以及映射模塊,在所述主機裝置啟動時,將所述非易失性內(nèi)存映射到該主機裝置的內(nèi)核地址空間。
根據(jù)本發(fā)明的另一個方面的主機裝置的容器運行加速系統(tǒng),所述多個容器對所共享的文件系統(tǒng)同時進行操作。
根據(jù)本發(fā)明的另一個方面的主機裝置的容器運行加速系統(tǒng),所述日志文件僅被寫入非易失性內(nèi)存,而不被寫入所述主機裝置的硬盤。
根據(jù)本發(fā)明的另一個方面的主機裝置的容器運行加速系統(tǒng),在所述主機裝置正常關(guān)機時,從所述非易失性內(nèi)存中讀取所述日志文件,并將所讀取的該日志文件寫入所述主機裝置的硬盤。
根據(jù)本發(fā)明的另一個方面的主機裝置的容器運行加速系統(tǒng),所述內(nèi)核地址空間是所述主機裝置的操作系統(tǒng)的邏輯地址空間。
本發(fā)明的其他另一個方面提供了一種主機裝置,包括:非易失性內(nèi)存;處理器;以及存儲器,存儲有計算機可執(zhí)行指令,所述指令在被處理器執(zhí)行時,使得處理器執(zhí)行本發(fā)明的一個方面的所述主機裝置的容器運行加速方法。
本發(fā)明的其他另一個方面提供了一種計算機可讀存儲介質(zhì),存儲有計算機可執(zhí)行指令,所述指令在被處理器執(zhí)行時,使得處理器執(zhí)行本發(fā)明的一個方面的所述主機裝置的容器運行加速方法。
附圖說明
為了更完整地理解本發(fā)明及其優(yōu)勢,現(xiàn)在將參考結(jié)合附圖的以下描述,其中:
圖1示意性示出了本發(fā)明的實施例的主機裝置100的結(jié)構(gòu)圖。
圖2示意性示出了本發(fā)明的實施例的主機裝置100的容器運行加速方法的流程圖;
圖3示意性示出了本發(fā)明的實施例的主機裝置100的容器運行加速方法的變形例的局部流程圖;
圖4示意性示出了本發(fā)明的與實施例的主機裝置100的容器運行加速方法對應(yīng)的容器運行加速系統(tǒng)500的框圖;
圖5示意性示出了本發(fā)明的變形例的主機裝置200的結(jié)構(gòu)圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進行詳細說明。
應(yīng)當注意,這里描述的實施例只用于舉例說明,并不用于限制本公開。在以下描述中,為了提供對本公開的透徹理解,闡述了大量特定細節(jié)。然而,對于本領(lǐng)域普通技術(shù)人員顯而易見的是:不必采用這些特定細節(jié)來實行本公開。
在整個說明書中,對“一個實施例”、“實施例”、“一個示例”或“示例”的提及意味著:結(jié)合該實施例或示例描述的特定特征、結(jié)構(gòu)或特性被包含在本公開至少一個實施例中。因此,在整個說明書的各個地方出現(xiàn)的短語“在一個實施例中”、“在實施例中”、“一個示例”或“示例”不一定都指同一實施例或示例。此外,可以以任何適當?shù)慕M合和/或子組合將特定的特征、結(jié)構(gòu)或特性組合在一個或多個實施例或示例中。此外,本領(lǐng)域普通技術(shù)人員應(yīng)當理解,在此提供的附圖都是為了說明的目的,并且附圖不一定是按比例繪制的。相同的附圖標記指示相同的要素。這里使用的術(shù)語“和/或”包括一個或多個相關(guān)列出的項目的任何和所有組合。術(shù)語“包括”和“含有”及其派生詞意為包括而非限制;術(shù)語“或”是包含性的,意為和/或。
在本說明書中,下述用于描述本發(fā)明原理的各種實施例只是說明,不應(yīng)該以任何方式解釋為限制發(fā)明的范圍。參照附圖的下述描述用于幫助全面理解由權(quán)利要求及其等同物限定的本發(fā)明的示例性實施例。下述描述包括多種具體細節(jié)來幫助理解,但這些細節(jié)應(yīng)認為僅僅是示例性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)認識到,在不背離本發(fā)明的范圍和精神的情況下,可以對本文中描述的實施例進行多種改變和修改。此外,為了清楚和簡潔起見,省略了公知功能和結(jié)構(gòu)的描述。此外,貫穿附圖,相同參考數(shù)字用于相似功能和操作。
本發(fā)明的實施例提供了一種能夠使容器的存儲IO性能得到大幅提升的主機裝置的容器運行加速方法及容器運行加速系統(tǒng)。
圖1示意性示出了本發(fā)明的實施例的主機裝置100的結(jié)構(gòu)圖。
如圖1所示,本發(fā)明的主機裝置100包括處理器103(例如,微處理器(μP)、數(shù)字信號處理器(DSP)等)。處理器103可以是用于執(zhí)行本文描述的流程的不同動作的單一處理單元或者是多個處理單元。主機裝置100還可以包括用于從其他實體接收信號的輸入單元101、以及用于向其他實體提供信號的輸出單元102。輸入單元101和輸出單元102可以被布置為單一實體或者是分離的實體。
此外,主機裝置100包括具有非易失性內(nèi)存105,存儲在該非易失性內(nèi)存105中的數(shù)據(jù)在系統(tǒng)掉電后可以恢復(fù)。主機裝置100還可以包括硬盤104。在該硬盤104中存儲有文件系統(tǒng)11,當由主機裝置100中的多個容器對所共享的文件系統(tǒng)11進行操作時,將用于記錄多個容器對文件系統(tǒng)11進行的操作的日志文件寫入非易失性內(nèi)存105。其中,多個容器在主機裝置100中可以是同時運行的,即:多個容器對所共享的文件系統(tǒng)11同時進行操作。此外,該硬盤104中還可以存儲有計算機程序模塊12,該計算機程序模塊12包括代碼/計算機可讀指令,其在由主機裝置100中的處理器103執(zhí)行時使得主機裝置100可以執(zhí)行例如下面圖2~3所描述的流程及其任何變形。
處理器103可以是單個CPU(中央處理單元),但也可以包括兩個或更多個處理單元。例如,處理器可以包括通用微處理器、指令集處理器和/或相關(guān)芯片組和/或?qū)S梦⑻幚砥?例如,專用集成電路(ASIC))。處理器103還可以包括用于緩存用途的板載存儲器。計算機程序模塊可以由連接到處理器103的計算機程序產(chǎn)品來承載。
下面,以圖2來具體描述本發(fā)明實施例的主機裝置100的容器運行加速方法。
圖2示意性示出了本發(fā)明的實施例的主機裝置100的容器運行加速方法的流程圖。
如圖2所示,首先,在主機裝置100啟動時,通過使用非易失性內(nèi)存105的APP模式,將非易失性內(nèi)存105映射到該主機裝置100的內(nèi)核地址空間(步驟S1)。其中,上述內(nèi)核地址空間是指主機裝置100的操作系統(tǒng)的邏輯地址空間。
接著,判斷主機裝置100的多個容器是否對所共享的文件系統(tǒng)11進行了操作而要將用于記錄上述多個容器對文件系統(tǒng)11進行的操作的日志文件寫入(步驟S2)。
然后,當上述步驟S2的判斷結(jié)果為“是”,即:上述多個容器對文件系統(tǒng)11進行了操作而要寫入上述日志文件時,將上述日志文件寫入非易失性內(nèi)存105(步驟S3),處理結(jié)束。當上述步驟S2的判斷結(jié)果為“否”,即:上述多個容器未對文件系統(tǒng)11進行操作而不需要寫入上述日志文件時,處理結(jié)束。
這樣,根據(jù)本發(fā)明的實施例的主機裝置及主機裝置的容器運行加速方法,日志寫入非易失性內(nèi)存緩存后,可以直接返回(write back模式),并不需要等待同步到后臺存儲設(shè)備(硬盤)上,這樣就解決了日志文件瓶頸問題。
此外,日志寫入的設(shè)備是非易失性內(nèi)存,相當于數(shù)據(jù)的內(nèi)存拷貝,性能提升很大。對于容器的存儲IO性能會有一個數(shù)量級的性能提升。
而且,由于非易失性內(nèi)存的特性,緩存中的數(shù)據(jù)在系統(tǒng)掉電后可以恢復(fù),所以日志文件是安全的。
下面,作為上述實施例的一種變形例,在上述實施例的將日志文件寫入非易失性內(nèi)存而不寫入硬盤這樣的技術(shù)方案的基礎(chǔ)上,還優(yōu)選在主機裝置100的正常關(guān)機時,可以考慮追加如下圖3所示的日志讀寫處理。
圖3示意性示出了本發(fā)明的實施例的主機裝置100的容器運行加速方法的變形例的局部流程圖。
如圖3所示,在上述步驟S3之后,即:將日志文件寫入非易失性內(nèi)存105之后,判斷主機裝置100是否正常關(guān)機(步驟S3-1)。
接著,在上述步驟S3-1的判斷結(jié)果為“是”,即:正常關(guān)機時,從非易失性內(nèi)存105中讀取上述日志文件(步驟S3-2),處理進入步驟S3-3。在上述步驟S3-1的判斷結(jié)果為“否”,即:非正常關(guān)機時,處理結(jié)束。
在步驟S3-3中,將由上述步驟S3-2所讀取的上述日志文件寫入上述硬盤104,作為最終備份,處理結(jié)束。
這樣,該變形例的方法,通過在正常關(guān)機時,才最終將日志文件寫入硬盤,作為最終備份,從而不僅實現(xiàn)了如上述實施例的方法那樣的技術(shù)效果,而且通過雙重備份,進一步確保了日志文件的安全保存、和在系統(tǒng)故障時利用日志文件的可靠恢復(fù)。
以上的詳細描述通過使用方框圖、流程圖和/或示例,已經(jīng)闡述了主機裝置的容器運行加速方法的實施例。在這種方框圖、流程圖和/或示例包含一個或多個功能和/或操作的情況下,本領(lǐng)域技術(shù)人員應(yīng)理解,這種方框圖、流程圖或示例中的每一功能和/或操作可以通過各種硬件、軟件、固件或?qū)嵸|(zhì)上它們的任意組合來單獨和/或共同實現(xiàn)。在一個實施例中,本公開的實施例所述主題的若干部分可以通過專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器(DSP)、或其他集成格式來實現(xiàn)。然而,本領(lǐng)域技術(shù)人員應(yīng)認識到,這里所公開的實施例的一些方面在整體上或部分地可以等同地實現(xiàn)在集成電路中,實現(xiàn)為在一臺或多臺計算機上運行的一個或多個計算機程序(例如,實現(xiàn)為在一臺或多臺計算機系統(tǒng)上運行的一個或多個程序),實現(xiàn)為在一個或多個處理器上運行的一個或多個程序(例如,實現(xiàn)為在一個或多個微處理器上運行的一個或多個程序),實現(xiàn)為同件,或者實質(zhì)上實現(xiàn)為上述方式的任意組合,并且本領(lǐng)域技術(shù)人員根據(jù)本公開,將具備設(shè)計電路和/或?qū)懭胲浖?或固件代碼的能力。此外,本領(lǐng)域技術(shù)人員將認識到,本公開所述主題的機制能夠作為多種形式的程序產(chǎn)品進行分發(fā),并且無論實際用來執(zhí)行分發(fā)的信號承載介質(zhì)的具體類型如何,本公開所述主題的示例性實施例均適用。信號承載介質(zhì)的示例包括但不限于:可記錄型介質(zhì),如軟盤、硬盤驅(qū)動器、緊致盤(CD)、數(shù)字通用盤(DVD)、數(shù)字磁帶、計算機存儲器等;以及傳輸型介質(zhì),如數(shù)字和/或模擬通信介質(zhì)(例如,光纖光纜、波導(dǎo)、有線通信鏈路、無線通信鏈路等)。
下面,以圖4為例,說明一種以硬件方式實現(xiàn)了上述主機裝置的容器運行加速方法的容器運行加速系統(tǒng)。
圖4示意性示出了本發(fā)明的與實施例的主機裝置100的容器運行加速方法對應(yīng)的容器運行加速系統(tǒng)500的框圖。
如圖4所示,容器運行加速系統(tǒng)500包括映射模塊501和日志寫入模塊502。
在映射模塊501中,在主機裝置100啟動時,通過使用非易失性內(nèi)存105的APP模式,將非易失性內(nèi)存105映射到該主機裝置100的內(nèi)核地址空間。其中,上述內(nèi)核地址空間是指主機裝置100的操作系統(tǒng)的邏輯地址空間。
在日志寫入模塊502中,判斷主機裝置100的多個容器是否對所共享的文件系統(tǒng)11進行了操作而要將用于記錄上述多個容器對文件系統(tǒng)11進行的操作的日志文件寫入。
當上述判斷結(jié)果為“是”,即:上述多個容器對文件系統(tǒng)11進行了操作而要寫入上述日志文件時,將上述日志文件寫入非易失性內(nèi)存105。當上述判斷結(jié)果為“否”,即:上述多個容器未對文件系統(tǒng)11進行操作而不需要寫入上述日志文件時,結(jié)束處理。
這樣,根據(jù)本發(fā)明的實施例的主機裝置的容器運行加速系統(tǒng),日志寫入非易失性內(nèi)存緩存后,可以直接返回(write back模式),并不需要等待同步到后臺存儲設(shè)備(硬盤)上,這樣就解決的日志文件瓶頸問題。
此外,日志寫入的設(shè)備是非易失性內(nèi)存,相當于數(shù)據(jù)的內(nèi)存拷貝,性能提升很大。對于容器的存儲IO性能會有一個數(shù)量級的性能提升。
而且,由于非易失性內(nèi)存的特性,緩存中的數(shù)據(jù)在系統(tǒng)掉電后可以恢復(fù),所以日志文件是安全的。
此外,如圖4所示,優(yōu)選在上述主機裝置的容器運行加速系統(tǒng)中還包括日志讀寫模塊503。
在日志讀寫模塊503中,首先判斷主機裝置100是否正常關(guān)機。在上述判斷結(jié)果為“是”,即:正常關(guān)機時,從非易失性內(nèi)存105中讀取上述日志文件,并將由所讀取的上述日志文件寫入上述硬盤104,作為最終備份。在上述判斷結(jié)果為“否”,即:非正常關(guān)機時,結(jié)束處理。
這樣,通過在正常關(guān)機時,才最終將日志文件寫入硬盤,作為最終備份,從而通過雙重備份,進一步確保了日志文件的安全保存、和在系統(tǒng)故障時利用日志文件的可靠恢復(fù)。
下面,作為上述實施例的主機裝置100的變形例,以圖5為例說明程序模塊并非保存于硬盤而保存于任意其他記錄介質(zhì)的結(jié)構(gòu)。
圖5示意性示出了本發(fā)明的變形例的主機裝置200的結(jié)構(gòu)圖。
如圖5所示,主機裝置200包括具有非易失性內(nèi)存205,存儲在該非易失性內(nèi)存205中的數(shù)據(jù)在系統(tǒng)掉電后可以恢復(fù)。主機裝置200還可以包括硬盤204。在該硬盤204中存儲有文件系統(tǒng)22,當由主機裝置200中的多個容器對所共享的文件系統(tǒng)21進行操作時,將用于記錄多個容器對文件系統(tǒng)21進行的操作的日志文件寫入非易失性內(nèi)存205。其中,多個容器在主機裝置200中可以是同時運行的,即:多個容器對所共享的文件系統(tǒng)11同時進行操作。此外,主機裝置200還包括記錄介質(zhì)206(即,計算機可讀存儲介質(zhì))。該記錄介質(zhì)206中可以存儲有計算機程序模塊22,該計算機程序模塊22包括代碼/計算機可讀指令,其在由主機裝置200中的處理器203執(zhí)行時使得主機裝置200可以執(zhí)行例如上面圖2~3所描述的流程及其任何變形。
此外,上述記錄介質(zhì)206可以是ROM、隨機存取內(nèi)存(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等,且上述計算機程序模塊22在備選實施例中可以用UE內(nèi)的存儲器的形式被分布到不同計算機程序產(chǎn)品中。
這樣,本發(fā)明的該變形例的主機裝置200也同樣可以實現(xiàn)上述各實施例的技術(shù)效果。
這樣,根據(jù)本發(fā)明實施例的主機裝置、計算機可讀存儲介質(zhì)和主機裝置的容器運行加速方法及系統(tǒng),日志寫入非易失性內(nèi)存緩存后,可以直接返回(write back模式),并不需要等待同步到后臺存儲設(shè)備上,這樣就解決的日志文件瓶頸問題。
此外,日志寫入的設(shè)備是非易失性內(nèi)存,相當于數(shù)據(jù)的內(nèi)存拷貝,性能提升很大。
此外,對于NAS一類的網(wǎng)絡(luò)文件系統(tǒng),有著同樣的加速效果。
而且,由于非易失性內(nèi)存的特性,緩存中的數(shù)據(jù)在系統(tǒng)掉電后可以恢復(fù),所以日志文件是安全的。
此外,對于容器的存儲IO性能會有一個數(shù)量級的性能提升。
如本領(lǐng)域技術(shù)人員將會理解的,為了任何的以及所有的目的,例如在提供書面說明書的方面,本申請中所公開的所有范圍也涵蓋任何的以及所有的可能的子范圍以及其子范圍的組合。任何所列出的范圍均能夠被容易地識別成充分的描述以及使同樣的范圍能夠至少被分解成同等的兩部分、三部分、四部分、五部分、十部分,等等。作為非限制性的例子,本申請中所討論的每個范圍均能夠被容易地分解成下三分之一、中三分之一以及上三分之一等等。如本領(lǐng)域技術(shù)人員還將會理解的,諸如“直到”、“至少”、“大于”、“小于”等的所有語言均包括所表述的數(shù)量并且是指能夠隨之被分解成如以上所討論的子范圍的范圍。最后,如本領(lǐng)域技術(shù)人員將會理解的,范圍包括各個單獨的成分。所以,例如,具有1-3個單元的組是指具有1、2或者3個單元的組。類似地,具有1-5個單元的組是指具有1、2、3、4或者5個單元的組,等等。
盡管已經(jīng)參照本發(fā)明的特定示例性實施例示出并描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該理解,在不背離所附權(quán)利要求及其等同物限定的本發(fā)明的精神和范圍的情況下,可以對本發(fā)明進行形式和細節(jié)上的多種改變。因此,本發(fā)明的范圍不應(yīng)該限于上述實施例,而是應(yīng)該不僅由所附權(quán)利要求來進行確定,還由所附權(quán)利要求的等同物來進行限定。