用于遠程更新執(zhí)行進程的方法和設備的制作方法
【專利摘要】本發(fā)明公開了用于遠程更新執(zhí)行進程的方法、設備以及計算機可訪問存儲介質,所述執(zhí)行進程在I/O端口上接收I/O請求,將寫數(shù)據(jù)存儲到本地存儲的寫日志,并將數(shù)據(jù)從所述寫日志上傳到遠程存儲。檢測到并下載用于所述進程的更新,并且從所述更新對更新后的進程進行實例化。在更新窗口期間,當前進程被指示來執(zhí)行關閉以進行更新。作為響應,所述當前進程保存其當前配置、將所述寫日志的存儲器中的部分轉儲清除到本地存儲,并釋放其I/O端口。更新后的進程加載所保存的配置,檢測到所述端口已被釋放,并在所述端口上開始接受I/O請求。在轉儲清除期間,當前進程轉儲清除存儲器中的當前數(shù)據(jù),同時繼續(xù)追加新的寫數(shù)據(jù),停止接受新的寫請求并且然后轉儲清除所述新的寫數(shù)據(jù)。
【專利說明】用于遠程更新執(zhí)行進程的方法和設備
【背景技術】
[0001]許多公司和其它組織操作互連眾多計算系統(tǒng)的計算機網(wǎng)絡以支持其運營,例如其中所述計算系統(tǒng)位于同一位置(例如,作為本地網(wǎng)絡的一部分)或者位于多個不同的地理位置中(例如,經(jīng)由一個或多個私有或公共中間網(wǎng)絡連接)。例如,包括顯著數(shù)量的互連的計算系統(tǒng)的數(shù)據(jù)中心已變得司空見慣,如由單一組織操作并用于所述組織的私有數(shù)據(jù)中心和由實體進行商業(yè)運營來向客戶提供計算資源的公共數(shù)據(jù)中心。一些公共數(shù)據(jù)中心運營商為由各種客戶所擁有的硬件提供網(wǎng)絡接入、電源以及安全安裝設施,而其它公共數(shù)據(jù)中心運營商提供還包括可供其客戶使用的硬件資源的“全方位服務”設施。然而,隨著典型的數(shù)據(jù)中心的規(guī)模和范圍不斷增加,供應、操縱以及管理物理計算資源的任務已變得日益復雜。
[0002]用于商用硬件的虛擬化技術的出現(xiàn)已為管理用于具有多樣化需求的眾多客戶的大規(guī)模計算資源提供了益處,從而允許各種計算資源高效且安全地由多個客戶共享。例如,虛擬化技術可以通過為每個用戶提供由單一物理計算機作主機的一個或多個虛擬機而允許所述單一物理計算機在多個用戶之間共享,其中每個這樣的虛擬機充當不同邏輯計算系統(tǒng)的軟件模擬,所述軟件模擬為用戶提供了以為自己是給定硬件計算資源的唯一操作者和管理員的錯覺,同時還提供了各種虛擬機之間的應用程序隔離和安全性。此外,一些虛擬化技術能夠提供跨越兩個或更多個物理資源的虛擬資源,如具有跨越多個不同物理計算系統(tǒng)的多個虛擬處理器的單一虛擬機。
[0003]作為另一實例,虛擬化技術可以通過為每個用戶提供可以橫跨多個數(shù)據(jù)存儲裝置分布的虛擬化的數(shù)據(jù)存儲器而允許數(shù)據(jù)存儲硬件在多個用戶之間共享,其中每個這樣的虛擬化的數(shù)據(jù)存儲器充當不同的邏輯數(shù)據(jù)存儲器,所述邏輯數(shù)據(jù)存儲器為用戶提供了以為自己是數(shù)據(jù)存儲資源的唯一操作者和管理員的錯覺。
[0004]Web 服備
[0005]常規(guī)Web模型允許客戶端經(jīng)由HTTP客戶端程序(如Web瀏覽器)訪問Web資源(例如,應用程序、服務以及數(shù)據(jù))。已開發(fā)了被稱為Web服務的技術以提供對Web資源的編程式訪問。Web服務可以用來提供經(jīng)由Web服務接口對Web資源進行編程式訪問,所述Web資源包括托管在Web連接的計算機(如Web服務器系統(tǒng))上的技術平臺(例如,應用程序和服務)和數(shù)據(jù)(例如,產(chǎn)品目錄和其它數(shù)據(jù)庫)。一般來說,Web服務接口可以被配置來提供標準、跨平臺的API (應用程序編程接口)用于請求執(zhí)行一些服務的客戶端與服務提供商之間的通信。在一些實施方式中,Web服務接口可以被配置來支持文件或信息的交換,所述文件或信息包括描述服務請求和對此請求的響應的信息。這類文件或消息可以使用標準化的Web協(xié)議(例如像超文本傳輸協(xié)議(HTTP))進行交換并且可以以與平臺無關的數(shù)據(jù)格式(例如像可擴展標記語言(XML))進行格式化。
【專利附圖】
【附圖說明】
[0006]圖1是根據(jù)至少一些實施方案的示例性網(wǎng)絡環(huán)境的概要框圖,所述網(wǎng)絡環(huán)境包括示例性服務提供商和示例性服務客戶。[0007]圖2示出根據(jù)至少一些實施方案的用于存儲網(wǎng)關的示例性體系結構和所述存儲網(wǎng)關的組件。
[0008]圖3是其中可以實施存儲網(wǎng)關的實施方案的示例性網(wǎng)絡環(huán)境的概要框圖。
[0009]圖4是根據(jù)至少一些實施方案的示例性網(wǎng)絡環(huán)境的框圖,所述網(wǎng)絡環(huán)境包括在服務客戶網(wǎng)絡現(xiàn)場的存儲網(wǎng)關,所述存儲網(wǎng)關用作所述服務客戶網(wǎng)絡與服務提供商網(wǎng)絡上的存儲服務之間的接口。
[0010]圖5是根據(jù)至少一些實施方案的示例性服務提供商的框圖,所述服務提供商向其客戶提供存儲服務和硬件虛擬化服務。
[0011]圖6是寬泛地示出示例性網(wǎng)絡環(huán)境的體系結構和所述網(wǎng)絡環(huán)境中的數(shù)據(jù)流的概要框圖,在所述網(wǎng)絡環(huán)境中存儲網(wǎng)關的實施方案被配置為高速緩存網(wǎng)關。
[0012]圖7是寬泛地示出示例性網(wǎng)絡環(huán)境的體系結構和所述網(wǎng)絡環(huán)境中的數(shù)據(jù)流的概要框圖,在所述網(wǎng)絡環(huán)境中存儲網(wǎng)關的一個實施方案被配置為投影(shadowing)網(wǎng)關。
[0013]圖8是根據(jù)至少一些實施方案的寬泛地示出在示例性網(wǎng)絡環(huán)境中自舉投影網(wǎng)關的概要框圖。
[0014]圖9是根據(jù)至少一些實施方案的用于投影網(wǎng)關的自舉過程的流程圖。
[0015]圖10是根據(jù)至少一些實施方案投影網(wǎng)關進入直通模式并從其中恢復的流程圖。
[0016]圖11是根據(jù)至少一些實施方案的用于從網(wǎng)關上傳、更新并跟蹤塊到遠程數(shù)據(jù)存儲器的方法的流程圖。
[0017]圖12是根據(jù)至少一些實施方案的用于投影網(wǎng)關的優(yōu)化的自舉過程的流程圖。
[0018]圖13示出根據(jù)至少一些實施方案的存儲網(wǎng)關安全模型的方面。
[0019]圖14是根據(jù)至少一些實施方案的示出網(wǎng)關安全模型在存儲網(wǎng)關的激活、配置以及操作過程中的至少一些方面的流程圖。
[0020]圖15是根據(jù)至少一些實施方案的示例性網(wǎng)絡環(huán)境的概要框圖,其示出參與網(wǎng)關激活過程的服務客戶和服務提供商組件或實體。
[0021]圖16A和圖16B是根據(jù)至少一些實施方案的過程流程圖,其示出在網(wǎng)關激活過程中圖15中所示的組件之間的交互。
[0022]圖17A和圖17B是根據(jù)至少一些實施方案的從存儲網(wǎng)關的角度來看的激活過程的流程圖。
[0023]圖18是示出可以在至少一些實施方案中采用的示例性網(wǎng)關控制體系結構的概要框圖。
[0024]圖19是根據(jù)至少一些實施方案的用于使用網(wǎng)關發(fā)起的連接和長輪詢技術的遠程網(wǎng)關管理的方法的流程圖。
[0025]圖20是根據(jù)一些實施方案的用于網(wǎng)關控制服務器向其對等服務器廣播網(wǎng)關請求的方法的流程圖。
[0026]圖21是根據(jù)一些實施方案的用于將網(wǎng)關請求發(fā)送到適當?shù)木W(wǎng)關控制服務器的替代性方法的流程圖。
[0027]圖22是根據(jù)至少一些實施方案的用于建立、監(jiān)視以及維護網(wǎng)關發(fā)起連接的方法的流程圖。
[0028]圖23A是根據(jù)至少一些實施方案的寬泛地示出用于包括網(wǎng)關代理平面的服務提供商網(wǎng)絡的體系結構的框圖。
[0029]圖23B示出根據(jù)至少一些實施方案網(wǎng)關控制服務器通過網(wǎng)關代理平面向網(wǎng)關發(fā)送消息。
[0030]圖23C示出根據(jù)至少一些實施方案網(wǎng)關通過網(wǎng)關代理平面對網(wǎng)關控制服務器請求作出響應。
[0031]圖23D示出根據(jù)至少一些實施方案的用于網(wǎng)關代理平面的ping消息交換。
[0032]圖24示出根據(jù)至少一些實施方案的用于高速緩存網(wǎng)關的通用體系結構和所述高速緩存網(wǎng)關的數(shù)據(jù)I/o操作。
[0033]圖25示出根據(jù)至少一些實施方案的用于投影網(wǎng)關的通用體系結構和所述加密網(wǎng)關的數(shù)據(jù)I/o操作。
[0034]圖26是根據(jù)至少一些實施方案的用于向塊數(shù)據(jù)存儲器上的寫日志進行寫入的方法的流程圖。
[0035]圖27是根據(jù)高速緩存網(wǎng)關的至少一些實施方案的用于滿足讀請求的方法的流程圖。
[0036]圖28A至圖28D圖示出根據(jù)至少一些實施方案的用于更新執(zhí)行網(wǎng)關控制進程的技術的組件和操作。
[0037]圖29是根據(jù)至少一些實施方案的用于更新執(zhí)行存儲網(wǎng)關進程的方法的流程圖。
[0038]圖30是示出可以在一些實施方案中使用的示例性計算機系統(tǒng)的框圖。
[0039]雖然在本文中通過列舉若干實施方案和示意性附圖的實例的方式描述了實施方案,本領域的技術人員應認識到,實施方案并不限于所描述的實施方案或附圖。應理解,附圖和對其的詳細描述并非意圖將實施方案限于所公開的特定形式,而是相反,其意圖在于涵蓋落入由所附權利要求書所界定的精神和范圍內(nèi)的所有修改、等同物以及替代方案。本文中所使用的任何標題都是僅用于組織目的并且并不意圖限制說明書或權利要求書的范圍。如貫穿本申請所用,詞語“可以”是以允許意義(即,意味著有可能)而不是強制意義(即,意味著必須)使用。類似地,詞語“包括(include/including/includes)”意味著包括但不限于。
【具體實施方式】
[0040]本公開描述了用于為遠程存儲提供本地網(wǎng)關的方法、設備以及計算機可存取存儲介質的各種實施方案。本文在服務提供商的上下文中描述了存儲網(wǎng)關的實施方案,所述服務提供商通過中間網(wǎng)絡(如因特網(wǎng))向其一個或多個客戶提供存儲服務。所述存儲網(wǎng)關可以被實施為內(nèi)置安裝在客戶的數(shù)據(jù)中心處并充當所述客戶的數(shù)據(jù)中心與所述存儲服務之間的網(wǎng)關的虛擬或物理設備。存儲網(wǎng)關可以被配置為到經(jīng)由存儲服務遠程提供的主存儲的接口并用于所述主存儲的本地高速緩存,和/或配置為將實施在客戶的網(wǎng)絡上的主存儲投影到由存儲服務提供的遠程存儲的接口。存儲網(wǎng)關可以在所述設備的前端處向客戶的應用程序呈現(xiàn)標準的數(shù)據(jù)存取接口,在所述設備的后端處將數(shù)據(jù)存取轉換成存儲服務請求,并根據(jù)存儲服務接口將數(shù)據(jù)通過網(wǎng)絡傳輸?shù)酱鎯Ψ?。在至少一些實施方案中,所述存儲服務接口可以被實施為Web服務接口。
[0041]存儲網(wǎng)關的實施方案可以提供到經(jīng)由存儲服務所提供的幾乎無限的、靈活的、可擴展的遠程存儲的內(nèi)置接口。存儲網(wǎng)關可以提供常規(guī)的內(nèi)置存儲解決方案的具有成本效益、靈活且更易擴展的替代方案。雖然存儲裝置的成本可能減少,但常規(guī)的內(nèi)置存儲解決方案的管理成本和其它的硬件與軟件成本仍保持相對恒定或者在一些情況下增加。在將至少一些管理成本和其它成本轉嫁給服務提供商的情況下,存儲網(wǎng)關的實施方案可以允許所述服務提供商的客戶降低總體存儲擁有成本。
[0042]在至少一些實施方案中,存儲服務可以根據(jù)塊存儲技術將客戶的數(shù)據(jù)存儲在遠程數(shù)據(jù)存儲器中。在至少一些實施方案中,存儲網(wǎng)關可以在前端處向客戶的應用程序公開塊存儲協(xié)議(例如,iSCS1、GNBD(全局網(wǎng)絡塊裝置)等)、文件存儲協(xié)議(例如,NFS(網(wǎng)絡文件存儲)、CIFS(通用互聯(lián)網(wǎng)文件系統(tǒng))等)和/或對象存儲協(xié)議(例如,REST(代表性狀態(tài)傳輸))。塊存儲協(xié)議(如iSCSI)使得能夠直接存取遠程數(shù)據(jù)存儲器的底層數(shù)據(jù)塊。
[0043]由應用程序經(jīng)由文件存儲協(xié)議(如由存儲網(wǎng)關呈現(xiàn)的NFS或CIFS)寫入的文件可以根據(jù)塊存儲技術存儲到遠程數(shù)據(jù)存儲器。通過所公開的文件存儲協(xié)議(如NFS和CIFS),在根據(jù)塊存儲技術存儲在遠程數(shù)據(jù)存儲器中的客戶的數(shù)據(jù)被通過網(wǎng)絡從網(wǎng)關發(fā)送到客戶的應用程序之前,存儲網(wǎng)關將客戶的數(shù)據(jù)以文件呈現(xiàn)給客戶的應用程序。所述所公開的塊存儲協(xié)議(例如,iSCSI)將塊傳輸?shù)娇蛻舻膽贸绦颍蚨笏鰬贸绦騺硖幚韺?shù)據(jù)塊解釋成所述應用程序所期望的任何格式的解釋操作。
[0044]塊存儲協(xié)議(如iSCSI)是底層塊存儲協(xié)議,并且因此可以使得用例范圍能夠比文件存儲協(xié)議(如NFS和CIFS)更為廣泛。塊存儲協(xié)議可以使得能夠支持通常寫入到塊存儲器的應用程序(如MicrosoftKSharePoint?和Oraclek數(shù)據(jù)庫),并且還可以被配置來為CIFS或NFS文件服務器提供底層存儲。因此,在存儲網(wǎng)關的至少一些實施方案中,可以采用塊存儲協(xié)議(如iSCSI)作為到客戶應用程序的公開的接口。
[0045]圖1是根據(jù)至少一些實施方案的示例性網(wǎng)絡環(huán)境的概要框圖,所述網(wǎng)絡環(huán)境包括示例性服務提供商和示例性服務客戶。存儲網(wǎng)關84可以被安裝、激活并配置為服務客戶本地網(wǎng)絡或數(shù)據(jù)中心(例如,客戶端網(wǎng)絡80)中的虛擬或物理設備,以便向客戶端網(wǎng)絡80上的客戶進程88提供若干遠程數(shù)據(jù)存儲功能中的一個或多個。客戶進程88可以是存在于客戶端網(wǎng)絡80上并可以經(jīng)由網(wǎng)關84的數(shù)據(jù)端口的數(shù)據(jù)協(xié)議(例如,iSCSI協(xié)議)連接到存儲網(wǎng)關84并與其通信的任何硬件、軟件和/或其組合。存儲網(wǎng)關84可以(例如)用作內(nèi)置存儲裝置和/或用作客戶端網(wǎng)絡80上的客戶進程88與由服務提供商60提供的存儲服務64之間的接口。應注意,除了存儲服務64之外,服務提供商60還可以向服務提供商60的客戶提供其它服務,包括但不限于硬件虛擬化服務。
[0046]服務提供商60的客戶在本文中可以被稱為服務客戶或簡單地稱為客戶,并且可以是實施耦接到中間網(wǎng)絡50 (如互聯(lián)網(wǎng))的計算機網(wǎng)絡或網(wǎng)絡來向本地網(wǎng)絡或網(wǎng)絡上的一個或多個用戶提供網(wǎng)絡化計算服務(包括由服務提供商60遠程提供的一種或多種服務)的任何實體。服務客戶可以是商業(yè)企業(yè)、教育實體、政府實體或實施向用戶提供網(wǎng)絡化計算服務的計算機網(wǎng)絡或網(wǎng)絡的總體上任何實體。雖然圖1示出單一客戶端網(wǎng)絡80,但可能存在多個客戶端網(wǎng)絡80。每個客戶端網(wǎng)絡80可以對應于不同服務客戶,或者兩個或更多個客戶端網(wǎng)絡80可以對應于同一服務客戶的不同數(shù)據(jù)中心或位置,例如商業(yè)企業(yè)的不同地區(qū)辦事處或學校系統(tǒng)的不同校區(qū)。在至少一些實施方案中,服務提供商60的每個客戶可以擁有服務提供商60的賬戶,并且可以被提供有安全憑證(例如,賬戶名稱和/或標識符、密碼等),經(jīng)由所述安全憑證一個或多個客戶代表(例如,客戶端網(wǎng)絡管理員)可以登錄至到服務提供商60的接口(例如,Web頁面)中來管理由一種或多種服務提供的客戶的資源,所述客戶的資源包括但不限于由服務提供商60提供的存儲服務。
[0047]存儲網(wǎng)關84的實施方案可以在硬件、軟件或其組合中實施。在至少一些實施方案中,存儲網(wǎng)關84可以實施為可以(例如)在被在主機系統(tǒng)上實例化的虛擬機內(nèi)執(zhí)行的虛擬設備。在至少一些實施方案中,存儲網(wǎng)關84可以實施為可以在耦接到服務客戶的數(shù)據(jù)中心處的本地網(wǎng)絡基礎設施(例如,客戶端網(wǎng)絡80)的一個或多個計算裝置(如服務器系統(tǒng))上下載或以其它方式安裝、激活并配置的虛擬設備?;蛘?,存儲網(wǎng)關84可以實施為可以耦接到服務客戶的數(shù)據(jù)中心處的本地網(wǎng)絡基礎設施(例如,客戶端網(wǎng)絡80)的專用裝置或設備;所述專用裝置或設備可以包括實施存儲網(wǎng)關84的功能的軟件和/或硬件。圖26示出其上可以實施存儲網(wǎng)關84的實施方案的示例性計算機系統(tǒng)。在至少一些實施方案中,存儲網(wǎng)關84經(jīng)由中間網(wǎng)絡50 (例如,因特網(wǎng))通過防火墻82技術與服務提供商60網(wǎng)絡進行通信。應注意,服務提供商60網(wǎng)絡還可以包括前端62技術(例如,防火墻技術、邊界路由器技術、負載均衡器技術等),來自和流向中間網(wǎng)絡50的網(wǎng)絡流量通過所述前端技術。
[0048]存儲網(wǎng)關84的至少一些實施方案可以根據(jù)安全模型進行實施,所述安全模型為客戶提供了數(shù)據(jù)保護并且提供了對網(wǎng)關84的保護防止網(wǎng)關被客戶或第三方濫用和未經(jīng)授權而使用(例如,盜版)。可以保護并加密存儲網(wǎng)關84與存儲服務64之間的通信。稍后在本文件中描述了激活過程,在所述激活過程中,新安裝的存儲網(wǎng)關84發(fā)起與服務提供商60網(wǎng)絡的連接并被其標識以獲取安全憑證。在至少一些實施方案中,在所述激活過程中,客戶登錄到由服務提供商60提供的客戶的賬戶中并向服務提供商60提供在注冊網(wǎng)關84中所使用的信息。然而,客戶并沒有登錄到存儲網(wǎng)關84中,并且因此客戶的安全憑證和其它賬戶信息沒有暴露在網(wǎng)關84上。這可以最小化客戶的安全風險。
[0049]在至少一些實施方案中,所述安全模型的方面是存儲網(wǎng)關84只接受到從外部向公開給客戶端網(wǎng)絡80上的客戶進程88的一個或多個數(shù)據(jù)端口(例如,iSCSI端口)發(fā)起的連接。存儲網(wǎng)關向外部進程發(fā)起所有其它連接;外部進程無法向網(wǎng)關發(fā)起任何其它連接。例如,在至少一些實施方案中,存儲網(wǎng)關84向服務提供商60發(fā)起網(wǎng)關管理和其它連接;月艮務提供商60不向網(wǎng)關84發(fā)起連接。作為另一個例子,客戶端網(wǎng)絡80的網(wǎng)絡管理員進程90無法直接連接到存儲網(wǎng)關84來配置和管理網(wǎng)關84。而是,網(wǎng)絡管理員進程90對存儲網(wǎng)關84的配置和管理可以通過服務提供商60(例如)經(jīng)由服務提供商60網(wǎng)絡上的控制臺進程68來執(zhí)行。因此,在至少一些實施方案中,客戶端網(wǎng)絡80上的用戶、網(wǎng)絡管理者或進程(例如,網(wǎng)絡管理員進程90或客戶進程88)無法直接“登錄”到存儲網(wǎng)關84中,服務提供商60網(wǎng)絡上或某個其它外部網(wǎng)絡上的用戶、管理者或進程(例如,控制臺進程68和存儲服務64)或者某個其它外部網(wǎng)絡上的用戶、管理者或進程也無法向存儲網(wǎng)關84發(fā)起連接。這有助于保護存儲網(wǎng)關84上的安全憑證和其它操作信息不受到客戶端網(wǎng)絡80上的個人或進程或受到外部個人或進程有意或無意地危害。
[0050]存儲網(wǎng)關84的實施方案可以被安裝、激活并配置用于存儲服務64來提供若干數(shù)據(jù)存儲器66功能中一種或多種。例如,存儲網(wǎng)關84可以被安裝、激活、配置并用于存儲服務64以用作:
[0051].文件系統(tǒng)網(wǎng)關。在此配置中,存儲網(wǎng)關用作到存儲服務64的(例如,使用CIFS或NFS協(xié)議的)NAS存儲接口。網(wǎng)關84可以將遠程數(shù)據(jù)存儲器66作為對象存儲器(例如,REST)呈現(xiàn)給客戶,而數(shù)據(jù)存儲器66是根據(jù)塊存儲技術來實施。在這種配置中,遠程數(shù)據(jù)存儲器66可以作為虛擬化的文件系統(tǒng)呈現(xiàn)給客戶,客戶可以向所述虛擬化的文件系統(tǒng)寫入文件并且客戶可以從所述虛擬化的文件系統(tǒng)讀取文件。
[0052].云卷網(wǎng)關。在此配置中,存儲網(wǎng)關84用作經(jīng)由存儲服務64到在遠程數(shù)據(jù)存儲器66上實施的卷的接口。遠程數(shù)據(jù)存儲器66可以使用塊存儲技術來實施。網(wǎng)關84提供本地網(wǎng)絡接入點,其中遠程數(shù)據(jù)存儲器66上的卷(其也可以被稱為云卷)用作提供靈活且基本上無限的主存儲容量的后端存儲。在這種配置中,遠程數(shù)據(jù)存儲器66可以作為云卷系統(tǒng)呈現(xiàn)給客戶,客戶可以從所述云卷系統(tǒng)在本地掛載卷用于讀取和寫入數(shù)據(jù)。
[0053]?投影網(wǎng)關。在此配置中,存儲網(wǎng)關84用作客戶的應用程序(例如,客戶進程88)與客戶的本地數(shù)據(jù)存儲器86之間的“線纜中的塊”,以便提供經(jīng)由存儲服務84將客戶的寫數(shù)據(jù)(例如,iSCSI寫入)投影到遠程數(shù)據(jù)存儲器66。遠程數(shù)據(jù)存儲器66可以使用塊存儲技術來實施。在這種配置中,存儲網(wǎng)關84可以用作將客戶的本地數(shù)據(jù)存儲器投影到遠程數(shù)據(jù)存儲器66上的快照的投影設備。這種投影可以從本地網(wǎng)絡上的用戶的角度來看透明地來執(zhí)行。當必要或需要時,客戶可以請求或訪問遠程數(shù)據(jù)存儲器66上的客戶的數(shù)據(jù)的快照,(例如)以便將客戶的數(shù)據(jù)的部分或全部從所述快照還原、恢復或復制到本地存儲器86。
[0054]應注意,文件系統(tǒng)網(wǎng)關和云卷網(wǎng)關是相似的,因為兩者都用作到遠程數(shù)據(jù)存儲器的網(wǎng)關,并且兩者都可以在本地將數(shù)據(jù)(例如,頻繁和/或最近使用的數(shù)據(jù))高速緩存。在文件系統(tǒng)網(wǎng)關和云卷網(wǎng)關兩者中,如果可能的話,那么來自客戶進程的數(shù)據(jù)讀取可以從本地高速緩存提供服務,或者如果不可能的話,可以從遠程數(shù)據(jù)存儲器提供服務。相反,在投影網(wǎng)關中,數(shù)據(jù)讀取被通過網(wǎng)關傳遞到客戶的本地數(shù)據(jù)存儲器。為了本文件的目的,可以將文件系統(tǒng)網(wǎng)關和云卷網(wǎng)關統(tǒng)稱為高速緩存網(wǎng)關以將這些實施方式與加密網(wǎng)關進行區(qū)分。
[0055]示例性存儲網(wǎng)關設備體系結構
[0056]圖2示出根據(jù)至少一些實施方案的用于存儲網(wǎng)關的示例性體系結構和所述存儲網(wǎng)關的組件。應注意,在與高速緩存網(wǎng)關實施方式相比較時,在投影網(wǎng)關實施方式中可以不使用圖2中所示的組件中的一些,或者可以不同地使用或實施。
[0057]塊驅動器10將客戶進程88與存儲網(wǎng)關84介接(interface)。一般來說,塊驅動器10允許客戶進程88 (例如,經(jīng)由讀/寫請求)與存儲網(wǎng)關84進行交互。由于存儲網(wǎng)關84是與客戶進程88同地的,因此從進程88的角度來看,數(shù)據(jù)似乎是被存儲在本地。然而,存儲網(wǎng)關84與存儲服務64介接來將數(shù)據(jù)存儲到由存儲服務64提供的遠程數(shù)據(jù)存儲器66。對于高速緩存網(wǎng)關來說,主數(shù)據(jù)存儲器是遠程數(shù)據(jù)存儲器66,而頻繁存取的數(shù)據(jù)可以由網(wǎng)關84在本地進行高速緩存。讀取可以從本地高速緩存或者從虛擬數(shù)據(jù)存儲66得到滿足;寫入被處理以便適當?shù)馗卤镜馗咚倬彺嬷泻?或虛擬數(shù)據(jù)存儲66中的數(shù)據(jù)塊。對于投影網(wǎng)關來說,主數(shù)據(jù)存儲器是本地數(shù)據(jù)存儲器86 ;讀取被傳遞到本地數(shù)據(jù)存儲器86,并且寫入被投影到虛擬數(shù)據(jù)存儲66,同時還被發(fā)送到本地數(shù)據(jù)存儲器86。
[0058]塊驅動器10攔截來自客戶進程88的讀/寫請求并將所述請求傳遞給存儲控制器
12。在至少一些實施方案中,塊驅動器10可以提供塊存儲協(xié)議(例如,iSCSI或GMBD)作為到客戶進程88的接口。在一些實施方案中,代替塊存儲協(xié)議接口或作為其可替代物,塊驅動器10可以提供文件存儲協(xié)議接口(例如,NFS或CIFS),并且可以使用文件系統(tǒng)語義作為到存儲控制器12的接口。應注意,雖然圖2示出一個塊驅動器10,但可能存在一個以上塊驅動器。
[0059]存儲控制器12經(jīng)由高速緩存管理器14充當塊驅動器10與存儲之間的中介物。存儲控制器12的職責可以包括將來自塊驅動器10的讀取和寫入請求轉發(fā)給存儲并且當存儲用數(shù)據(jù)響應時回叫塊驅動器10。塊驅動器10還可以維護統(tǒng)計數(shù)據(jù),如正在進行中的請求數(shù)目。
[0060]在至少一些實施方案中,一個存儲網(wǎng)關84上的存儲控制器12可以與另一存儲網(wǎng)關84上的高速緩存管理器14進行通信。在至少一些實施方案中,每個存儲網(wǎng)關84可以發(fā)送心跳消息用于發(fā)現(xiàn)和檢測故障??梢允褂靡恢滦怨:瘮?shù)來標識負責給定對象的存儲網(wǎng)關84,并且可以將獲取數(shù)據(jù)的請求轉發(fā)給目標存儲網(wǎng)關84上的高速緩存管理器14。高速緩存管理器14可以通過調用由存儲控制器12提供的回叫信號來響應。
[0061]在高速緩存網(wǎng)關實施方案中,高速緩存管理器14可以管理(例如)提供用于頻繁存取的數(shù)據(jù)的存儲的本地高速緩存28。本地高速緩存28可以在存儲網(wǎng)關84的內(nèi)部易失性和/或非易失性存儲器上來實施,或者可替代地,可以至少部分地在由客戶提供的外部本地數(shù)據(jù)存儲器86上來實施。在至少一些實施方案中,本地高速緩存28代表存儲在虛擬化的數(shù)據(jù)存儲66中的數(shù)據(jù);來自客戶進程88的寫入可能不直接影響本地高速緩存28。
[0062]在采用多個網(wǎng)關84的至少一些實施方案中,可以使用分布式本地高速緩存,并且可以使用關于密鑰的一致性哈希函數(shù)來標識負責持有給定密鑰的高速緩存。在至少一些實施方案中,可以使用位置感知請求分布來減少網(wǎng)關84之間的可能要求額外負載平衡的通?目。
[0063]對遠程數(shù)據(jù)存儲器66中的給定卷的所`有寫請求可以去往特定的網(wǎng)關84節(jié)點。由于對卷的所有寫請求都被轉發(fā)給特定的網(wǎng)關84節(jié)點,因此網(wǎng)絡分區(qū)可能不是問題。
[0064]暫存
[0065]在至少一些實施方案中,高速緩存管理器14可以包括暫存16組件或可以與其介接。暫存16可以包括或可以訪問寫日志18。在至少一些實施方案中,可以在寫日志18上建立數(shù)據(jù)結構并將其用作元數(shù)據(jù)存儲器26。元數(shù)據(jù)存儲器26可以允許快速訪問對特定塊的所有寫入。元數(shù)據(jù)存儲器26可以(例如)用來將變化應用到塊內(nèi)的不同片段。當從客戶進程88接收到寫數(shù)據(jù)時,所述數(shù)據(jù)被追加到寫日志18。用于與塊有關的寫數(shù)據(jù)的元數(shù)據(jù)(例如,偏移和長度)可以存儲到元數(shù)據(jù)存儲器26。在至少一些實施方案中,寫日志18可以被實施為實現(xiàn)為線性隊列抑或循環(huán)隊列的一維數(shù)據(jù)緩沖器。在至少一些實施方案中,元數(shù)據(jù)存儲器26可以是例如實施為Berkeley數(shù)據(jù)庫的鍵/值存儲器。在一些實施方案中可以使用寫日志18和元數(shù)據(jù)存儲器26兩者的其它實施方式。
[0066]在高速緩存網(wǎng)關實施方式中,當執(zhí)行讀取時,初始塊可以從本地高速緩存28或者從遠程數(shù)據(jù)存儲器66獲取,并且由寫日志18指示的任何掛起的變化都可以在將數(shù)據(jù)返回給相應的客戶進程88之前被應用。
[0067]在一些實施方案中,如果網(wǎng)關84發(fā)生故障(例如,當機),那么內(nèi)存中的寫數(shù)據(jù)可能丟失,除非所述數(shù)據(jù)已被寫入到本地數(shù)據(jù)存儲器86。在一些實施方案中,如果在客戶站點處存在多個網(wǎng)關84,那么另一網(wǎng)關84可以承擔由當機的網(wǎng)關84所有的密鑰的職責、從本地數(shù)據(jù)存儲器86上的快照(如果存在的話)還原寫入,并開始接受定向到相應卷的請求。在一些實施方案中,可以將寫日志18和/或元數(shù)據(jù)存儲器26復制在兩個或更多個網(wǎng)關84上以提供冗余和更好的耐久性。在網(wǎng)關84發(fā)生故障的情況下,其它網(wǎng)關84中的一個可以接管發(fā)生故障的網(wǎng)關的寫日志18和元數(shù)據(jù)存儲器26。然而,在至少一些實施方案中,元數(shù)據(jù)存儲器26只可能在所有者網(wǎng)關84上進行維護。在這些實施方案中,在網(wǎng)關84發(fā)生故障的情況下,其它網(wǎng)關84中的一個可以接管并解析主要寫日志18來重建元數(shù)據(jù)存儲器26。
[0068]在高速緩存網(wǎng)關實施方式中,取塊器22經(jīng)由存儲服務64從遠程數(shù)據(jù)存儲器66取出所需塊片段。在至少一些實施方案中,取塊器22可以采用延遲取出技術來取出完整塊用于高速緩存。對于高速緩存網(wǎng)關和投影網(wǎng)關兩者來說,塊存儲器24經(jīng)由存儲服務64將數(shù)據(jù)從暫存16推送到遠程數(shù)據(jù)存儲器66。在至少一些實施方案中,塊存儲器24可以采用延遲推送技術來推送塊。
[0069]在至少一些實施方案中,在用于高速緩存網(wǎng)關的讀操作期間,塊驅動器10將包括卷ID、起始偏移以及長度的讀請求發(fā)送給存儲控制器12。在至少一些實施方案中,存儲控制器12可以將所述卷ID和偏移翻譯成目標密鑰。存儲控制器12可以將所述讀請求信息傳遞給高速緩存控制器14,所述高速緩存控制器可以嘗試從適當?shù)谋镜馗咚倬彺?8來滿足讀請求。如果數(shù)據(jù)不存在于本地高速緩存28中,那么請求被轉發(fā)給取塊器22,所述取塊器經(jīng)由存儲服務64從遠程數(shù)據(jù)存儲器66上的適當卷取出數(shù)據(jù)。一旦獲得數(shù)據(jù),本地高速緩存28就被更新、來自寫日志18的變化被應用并且讀響應被返回給客戶進程88。在至少一些實施方案中,如果多個塊被請求,那么可以返回多個讀響應,每個讀響應指示用于相應塊的相對偏移。在至少一些實施方案中,如果檢測到順序讀取,那么可以預取出順序塊。
[0070]在至少一些實施方案中,在寫操作期間,塊驅動器10將包括卷ID和寫數(shù)據(jù)的寫請求發(fā)送給負責所述卷的存儲控制器12。寫數(shù)據(jù)被寫入到寫日志18,并且元數(shù)據(jù)存儲器26被更新以包括對緩沖池20中的變化的數(shù)據(jù)的引用。
[0071]緩+ 池
[0072]在至少一些實施方案中,緩沖池20駐留在存儲控制器12與本地數(shù)據(jù)存儲器86之間。緩沖池20可以執(zhí)行(但不限于)以下任務中的一種或多種。應注意,一些任務可能只適用于高速緩存網(wǎng)關:
[0073]?為寫日志18和本地高速緩存28高速緩存用于從其在本地數(shù)據(jù)存儲器裝置上的物理位置的邏輯偏移的數(shù)據(jù)。
[0074].在讀和寫操作期間維護緩沖器上的鎖。
[0075].在用于本地高速緩存28的物理存儲上應用逐出技術(例如,基于最近最少使用(LRU)的逐出技術)。應注意,這對于投影網(wǎng)關來說不需要。
[0076].對于高速緩存網(wǎng)關中的讀取,如果在本地高速緩存28中沒有找到所請求的數(shù)據(jù),那么緩沖池20可以與取塊器22通信,以便從遠程數(shù)據(jù)存儲器66取出塊。或者,在一些實施方案中,取塊器22可以直接與存儲服務64通信來取出塊。
[0077]在至少一些實施方案中,緩沖池20可以采用數(shù)據(jù)庫(例如Berkeley數(shù)據(jù)庫(BDB))作為其元數(shù)據(jù)存儲器26。下面所示的表1示出根據(jù)至少一些實施方案可以存儲在元數(shù)據(jù)存儲器26中的信息。應注意,表1中的條目不旨在根據(jù)內(nèi)容或布置進行限制。
[0078]表1-示例性元數(shù)據(jù)存儲信息
【權利要求】
1.一種裝置,其包括: 至少一個處理器;以及 包括程序指令的存儲器,其中所述程序指令可由所述至少一個處理器執(zhí)行來實施存儲網(wǎng)關進程,所述存儲網(wǎng)關進程經(jīng)由一個或多個I/o端口從本地網(wǎng)絡上的一個或多個客戶端進程接收包括寫請求的I/o請求,將由所述寫請求指示的寫數(shù)據(jù)追加到本地數(shù)據(jù)儲存器上的寫日志的存儲器中的部分,并將寫數(shù)據(jù)從所述寫日志上傳到遠程數(shù)據(jù)儲存器; 其中所述程序指令進一步可由所述至少一個處理器執(zhí)行以從遠程網(wǎng)絡下載更新包,指示所述存儲網(wǎng)關進程關閉,并根據(jù)所下載的更新包在所述存儲器中實例化更新后的存儲網(wǎng)關進程; 其中,響應于接收到所述關閉指示,所述存儲網(wǎng)關進程保存包括對所述一個或多個I/O端口的指示的存儲網(wǎng)關配置,將寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除到所述本地數(shù)據(jù)儲存器,并釋放所述一個或多個I/o端口 ;并且 其中所述更新后的存儲網(wǎng)關進程加載所保存的存儲網(wǎng)關配置,并且在所述存儲網(wǎng)關進程釋放所述一個或多個I/o端口之后從所述存儲網(wǎng)關進程接管存儲網(wǎng)關操作。
2.如權利要求1所述的裝置,其中,為了從所述存儲網(wǎng)關進程接管存儲網(wǎng)關操作,所述更新后的存儲網(wǎng)關進程檢測到所述一個或多個I/o端口已被所述存儲網(wǎng)關進程釋放,打開所述一個或多個I/o端口,并開始經(jīng)由所述一個或多個I/O端口從所述一個或多個客戶端進程接收并處理包括寫請求的I/o請求。
3.如權利要求2所述的裝置,其中由所述更新后的存儲網(wǎng)關進程從所述一個或多個客戶端進程接收到的所述寫請求包括在所述將寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除期間未被所述存儲網(wǎng)關進程接受的至少一次寫請求重試。`
4.如權利要求2所述的裝置,其中,為了處理經(jīng)由所述一個或多個I/O端口從所述一個或多個客戶端進程所接收到的所述寫請求,所述更新后的存儲網(wǎng)關進程將由所述寫請求指示的寫數(shù)據(jù)追加到所述寫日志并將所述寫數(shù)據(jù)從所述寫日志上傳到所述遠程數(shù)據(jù)儲存器。
5.如權利要求1所述的裝置,其中,為了將寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除到所述本地數(shù)據(jù)儲存器,所述存儲網(wǎng)關進程: 將所述寫日志的所述存儲器中的部分中的當前寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器,同時在所述一個或多個I/O端口上接受包括寫請求的新的I/O請求,并且將由所述新的寫請求指示的新的寫數(shù)據(jù)追加到所述寫日志的所述存儲器中的部分;以及 在將所述寫日志的所述存儲器中的部分中的所述當前寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器之后,在所述一個或多個I/o端口上停止接受后續(xù)寫請求并將所述寫日志的所述存儲器中的部分中的所述新的寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器。
6.如權利要求5所述的裝置,其中所述存儲網(wǎng)關進程對所述后續(xù)寫請求中的每一個作出回復來通知相應客戶端進程重試所述寫請求。
7.如權利要求1所述的裝置,其中所述存儲網(wǎng)關進程在指定更新窗口期間保存所述存儲網(wǎng)關配置,將所述寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除到所述本地數(shù)據(jù)儲存器,并釋放所述一個或多個I/o端口。
8.如權利要求7所述的裝置,其中所述更新后的存儲網(wǎng)關進程在所述指定更新窗口期間加載所保存的存儲網(wǎng)關配置并從所述存儲網(wǎng)關進程接管存儲網(wǎng)關操作。
9.如權利要求1所述的裝置,其中所述存儲網(wǎng)關進程在所述釋放所述一個或多個I/O端口之后終止。
10.一種方法,其包括: 由存儲網(wǎng)關執(zhí)行存儲網(wǎng)關操作,所述存儲網(wǎng)關操作包括經(jīng)由一個或多個I/o端口從本地網(wǎng)絡上的一個或多個客戶端進程接收包括寫請求的I/o請求,將由所述寫請求指示的寫數(shù)據(jù)追加到本地數(shù)據(jù)儲存器上的寫日志的存儲器中的部分,并將寫數(shù)據(jù)從所述寫日志上傳到遠程數(shù)據(jù)儲存器; 接收到關閉使得更新后的存儲網(wǎng)關可以接管所述存儲網(wǎng)關操作的指示;以及 響應于接收到所述指示,保存包括對所述一個或多個I/o端口的指示的存儲網(wǎng)關配置,將寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除到所述本地數(shù)據(jù)儲存器,并釋放所述一個或多個I/o端口使得所述更新后的存儲網(wǎng)關進程可以接管所述存儲網(wǎng)關操作。
11.如權利要求10所述的方法,其中,為了接管存儲網(wǎng)關操作,所述更新后的存儲網(wǎng)關進程檢測到所述一個或多個I/o端口已被所述存儲網(wǎng)關進程釋放,打開所述一個或多個I/O端口,并經(jīng)由所述一個或多個I/O端口從 所述一個或多個客戶端進程接收并處理包括寫請求的I/o請求。
12.如權利要求10所述的方法,其中,為了將寫數(shù)據(jù)從所述寫日志的所述存儲器中的部分轉儲清除到所述本地數(shù)據(jù)儲存器,所述方法進一步包括: 將所述寫日志的所述存儲器中的部分中的當前寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器,同時在所述一個或多個I/o端口上接受包括新的寫請求的I/O請求,并且將由所述新的寫請求指示的新的寫數(shù)據(jù)追加到所述寫日志的所述存儲器中的部分;以及 在將所述寫日志的所述存儲器中的部分中的所述當前寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器之后,將所述寫日志的所述存儲器中的部分中的所述新的寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器,同時在所述一個或多個I/o端口上拒絕后續(xù)寫請求。
13.如權利要求12所述的方法,其進一步包括:對所述后續(xù)寫請求中的每一個作出回復來通知相應客戶端進程重試所述寫請求。
14.如權利要求10所述的方法,其進一步包括:在指定更新窗口期間保存所述存儲網(wǎng)關配置,將所述寫日志的所述存儲器中的部分中的寫數(shù)據(jù)轉儲清除到所述本地數(shù)據(jù)儲存器,并釋放所述一個或多個I/o端口。
15.如權利要求10所述的方法,其進一步包括在所述釋放所述一個或多個I/O端口之后關閉。
【文檔編號】G06F15/16GK103765406SQ201280040713
【公開日】2014年4月30日 申請日期:2012年6月29日 優(yōu)先權日:2011年6月30日
【發(fā)明者】J·C·索倫森三世, 林云, I·布魯吉奧羅 申請人:亞馬遜科技公司