本公開的實施例涉及存儲系統(tǒng),并且更具體地涉及用于存儲設備的數據遷移的方法和裝置。
背景技術:
在存儲系統(tǒng)中,出于各種原因,用戶經常會希望進行數據遷移,即將數據從一個存儲設備遷移到另一存儲設備。例如,可能由于數據遷移、數據備份(db)、容災(dc)、基于服務等級協(xié)定(sla)進行的重新調度、數據分發(fā)、數據聚合等而進行數據遷移。
目前已有一些用于數據遷移的產品或者技術方案,這些產品和技術方案主要適用于中小規(guī)模數據環(huán)境或者單一應用場景中,并且存在以下弊端。
首先,這些解決方案通常只適用于某些特定的應用場景、遷移目標和遷移需求。例如,實際應用中數據格式是多種多樣的,諸如,文件、文件系統(tǒng)、磁盤、數據庫、虛擬機甚至容器,而現(xiàn)有解決方案在數據遷移格式方面,通常只支持一種或有限的幾種。在遷移模式方面,現(xiàn)有技術基本不能全部支持以下常見模式,如同步、異步、分層、數據流等。在遷移目標方面,現(xiàn)有技術對源端和目標端往往有較嚴苛的限制,例如,要求目標端和源端必須具有同樣的硬件類型和配置等。
其次,這些現(xiàn)有解決方案在技術實現(xiàn)方面,采用緊耦合的架構設計,且多基于特定的硬件裝置(appliance)。導致通用性差,難以快速擴展。
在大規(guī)模數據中心或者云計算環(huán)境下,以上弊端會帶來嚴峻挑戰(zhàn)。因此,期望能夠提供一種統(tǒng)一的、可擴展的數據遷移解決方案。
在本公開的實施例中,提供了方法和裝置,以解決以上問題中的至少一些問題。
技術實現(xiàn)要素:
本公開的實施例提出了用于存儲系統(tǒng)中的數據遷移的方法和裝置。下面給出了對各實施例的簡要概述,以提供對各種實施例的一些方面的基本理解。該概述不旨在標識關鍵元素的要點或描述各種實施例的范圍。其唯一目的在于以簡化形式呈現(xiàn)一些概念,作為對后述更具體描述的前序。
本公開的第一方面提供了一種用于數據遷移的方法,包括對用于數據遷移的至少一個執(zhí)行單元進行注冊,所述至少一個執(zhí)行單元中的每個執(zhí)行單元具有對應的描述文件,所述描述文件具有預先定義的格式;提取并存儲所述至少一個執(zhí)行單元中的每個執(zhí)行單元對應的描述文件所包含的信息;接收來自用戶的數據遷移請求;響應于來自用戶的所述數據遷移請求,至少基于所存儲的所述描述文件所包含的部分信息來選擇用于所述用戶的數據遷移的執(zhí)行單元;以及調度所選擇的執(zhí)行單元的實例以執(zhí)行所述用戶的數據遷移。
在一個實施例中,所述至少一個執(zhí)行單元中的每一個執(zhí)行單元被封裝成為了容器。
在另一實施例中,所述描述文件可以指示以下中的至少一項:對應的執(zhí)行單元的類型、能力、配置、所支持的數據格式、運行要求;以及能夠提供的性能。
在又一實施例中,所述數據遷移請求可以包括數據遷移的源地址和目標地址的指示,以及關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式;以及在所述數據遷移中是否執(zhí)行加密和/或所支持的加密方式。
在一個實施例中,該至少一個執(zhí)行單元中的一個執(zhí)行單元可以進一步被配置為執(zhí)行以下中的至少一項:汲取數據、數據緩存、數 據校驗、重復數據刪除、數據壓縮、數據加密、數據傳輸。
在另一實施例中,其中至少基于所存儲的所述描述文件所包含的部分信息來選擇用于所述用戶的數據遷移的執(zhí)行單元可以包括:分析來自所述用戶的數據遷移請求;以及基于所述分析和所存儲的描述文件的部分信息,確定與所述數據遷移請求匹配的執(zhí)行單元。
在又一實施例中,該方法可以進一步包括:將與所述數據遷移請求匹配的執(zhí)行單元中的、正在運行的執(zhí)行單元的實例確定為最匹配的執(zhí)行單元。在另一個實施例中,基于所存儲的所述描述文件所包含的信息來選擇用于所述用戶的數據遷移的執(zhí)行單元可以進一步包括:評估執(zhí)行單元的運行需要的資源;以及進一步基于所述評估來確定與所述數據遷移請求匹配的執(zhí)行單元。
在一個實施例中,該方法可以進一步包括以下中的至少一項:向所述用戶發(fā)送數據遷移響應;接收所述用戶對于數據遷移的運行狀態(tài)和/或運行日志的查詢;響應于所述用戶的查詢而顯示所述用戶的數據遷移的運行狀態(tài)和/或運行日志;以及從用戶接收要被遷移的數據。
在另一實施例中,該方法可以進一步包括:對被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項進行更新。在又一實施例中,該方法可以進一步包括:監(jiān)測被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項;以及基于所述監(jiān)測來增加、減少、或者改變被調度的執(zhí)行單元的實例。
本公開的第二方面提供了另一種用于數據遷移的方法,包括:向數據遷移設備發(fā)送數據遷移請求,以促使所述數據遷移設備根據本公開的第一方面所述的方法執(zhí)行數據遷移。
在一個實施例中,所述數據遷移請求包括數據遷移的源地址和目標地址的指示,以及關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式、以及在所述數據遷 移中是否執(zhí)行加密和/或所支持的加密方式。
在一個實施例中,該方法可以進一步包括向所述數據遷移設備發(fā)送以下中的至少一項:對數據遷移的運行狀態(tài)和/或運行日志的查詢;以及要被遷移的數據。
在另一實施例中,該方法可以進一步包括從所述數據遷移設備接收數據遷移的運行狀態(tài)和/或運行日志.
本公開的第三方面提供了一種用于數據遷移的裝置,包括注冊單元、存儲單元、第一接收單元、調度單元以及至少一個執(zhí)行單元,其中:所述至少一個執(zhí)行單元中的每個執(zhí)行單元具有對應的描述文件,所述描述文件具有預先定義的格式;并且每個執(zhí)行單元被配置為在被所述調度單元調度時執(zhí)行數據遷移;所述注冊單元被配置為對所述至少一個執(zhí)行單元進行注冊;所述存儲單元被配置為提取并存儲所述至少一個執(zhí)行單元中的每個執(zhí)行單元對應的描述文件所包含的信息;所述第一接收單元被配置為接收來自用戶的數據遷移請求;并且所述調度單元被配置為響應于來自用戶的所述數據遷移請求,至少基于所存儲的描述文件所包含的部分信息來選擇用于所述用戶的數據遷移的執(zhí)行單元;并且調度所選擇的執(zhí)行單元的實例以執(zhí)行所述用戶的數據遷移。
本公開的第四方面提供了另一種用于數據遷移的裝置,包括第一發(fā)送單元,被配置為向數據遷移設備發(fā)送數據遷移請求;其中數據遷移設備包括如本公開的第三方面所述的裝置。
本公開的第五方面提供了一種裝置,該裝置包括至少一個處理器;以及包括計算機程序代碼的至少一個存儲器,其中所述至少一個存儲器和所述計算機程序代碼被配置為:與所述至少一個處理器一起,促使所述裝置執(zhí)行根據本公開的第一方面的方法。
本公開的第六方面提供了一種裝置,該裝置包括至少一個處理器;以及包括計算機程序代碼的至少一個存儲器,其中所述至少一個存儲器和所述計算機程序代碼被配置為:與所述至少一個處理器一起,促使所述裝置執(zhí)行根據本公開的第二方面的方法。
根據本公開的實施例的方法或裝置,能夠以統(tǒng)一的可擴展的方式實現(xiàn)針對具有各種格式、各種性能要求、以及應用場景的數據遷移,提供用于數據遷移的易于部署和管理的解決方案。
盡管在附圖中通過示例的方式示出了特定的實施例,然而,應當理解,本文的具體實施例的描述不意在將實施例限制為所公開的具體形式。
附圖說明
從下文的公開內容和權利要求中,本公開的目標、優(yōu)點和其他特征將變得更加明顯。這里僅出于示例的目的,參考附圖來給出優(yōu)選實施例的非限制性描述,在附圖中:
圖1a示出了根據本公開的實施例的用于數據遷移的框架的示意圖;
圖1b-1c示出了根據本公開的實施例的用于數據遷移的方法的示例性流程圖;
圖2a-2c示出了根據本公開的實施例的用于數據遷移的方法的另一示例性流程圖;
圖3示出了根據本公開的實施例的用于數據遷移的另一方法的示例性流程圖;
圖4示出了根據本公開的實施例的用于數據遷移的裝置的示例性結構圖;
圖5示出了根據本公開的實施例的用于數據遷移的裝置和運行環(huán)境的另一示例性結構圖;
圖6示出了根據本公開的實施例的執(zhí)行單元的功能子模塊的示例性結構圖;
圖7示出了根據本公開的實施例的用于數據遷移的另一裝置的示例性結構圖;以及
圖8示出可以用來實施本公開的實施例的示例設備的示意性框圖。
具體實施方式
在以下描述中,出于說明的目的而闡述許多細節(jié)。然而,本領域普通技術人員將認識到可以在不使用這些具體細節(jié)的情況下實現(xiàn)本公開的實施例。因此,本公開不旨在于受限于所示實施例、而是將被賦予與本文描述的原理和特征一致的最寬的范圍。
應當理解,術語“第一”、“第二”等僅被用來將一個元素與另一個元素區(qū)分開來。而實際上第一元素也能夠被稱為第二元素,反之亦然。另外還應當理解“包括”,“包含”僅被用來說明所陳述的特征、元素、功能或者部件的存在,然而并不排除存在一個或者多個其他的特征、元素、功能或者部件。
如上所述,用于數據遷移的現(xiàn)有解決方案通常只適用于某些特定的應用場景、遷移目標和遷移需求。另外,在技術實現(xiàn)方面,現(xiàn)有技術往往采用緊耦合的架構設計、基于特定的硬件(appliance),從而導致通用性差,難以快速擴展。
在大規(guī)模數據中心或者云計算環(huán)境下,數據遷移解決方案的設計將面臨如下挑戰(zhàn):
1)以單一融合架構滿足多種應用場景需求,包括支持多種數據源/格式和常見遷移模式。從而避免為每個特定的應用或者需求各自部署一套遷移系統(tǒng)。
2)具有自動化與可管理性。在現(xiàn)有技術中,每套遷移系統(tǒng)各自具有其安裝、配置、監(jiān)控和維護方式,同時有些管理功能也需要額外的硬件。這導致當多個類似系統(tǒng)存在時,管理和維護成本大大增加。因此,在上述融合架構下,需要一個單一管理系統(tǒng)和自動化輔助設施來協(xié)調硬件資源發(fā)現(xiàn)、申請、配置、任務提交和生命周期管理等。
3)具有可擴展并滿足服務水平質量標準(sla)。當數據流增加、任務變化時,數據遷移系統(tǒng)需要做到水平可擴展,能夠靈活地快速部署,以滿足約定的sla,例如性能指標(mb/s,iops),遷移指標 (rto,rpo)和成本控制(tco)。
為了解決以上問題中的至少一些問題,和/或實現(xiàn)以上要求中的至少一部分,本公開的實施例提出了用于存儲系統(tǒng)中的數據遷移的方法和裝置。
本公開的實施例提供如圖1a所示的統(tǒng)一的、可擴展的、易于使用的數據遷移框架110。該框架110可以支持各種數據從設備120到設備130的遷移。設備120和設備130可以是本地存儲設備或者云存儲設備。該框架110包括集中控制平面和可插拔的數據平面。該數據平面能夠充分利用現(xiàn)有的數據遷移技術(例如,vrpa,cloudboost,twinstrata等),同時對于未來開發(fā)的新的數據遷移技術也是開放的。這些不同的數據遷移技術可根據需要被插入到本公開的實施例的裝置中,例如每種數據遷移技術可以作為一個容器或者vic(vmwareintegratedcontainer)容器插入到裝置中公共的可插拔引擎層。在控制平面,本公開的實施例建立了具有自動匹配和自動擴展能力的層堆棧。該實施例能夠根據存儲的知識和輸入的任務信息、和/或sla等,找到最匹配的數據遷移技術來執(zhí)行數據遷移。因此,本公開的實施例能夠將內部的復雜度(例如資源評估和選擇)隱藏,以提供更加易于使用的解決方案;另外,其能夠通過插入新的數據遷移技術而進行迅速地擴展。
圖1b-1c中示出了用于數據遷移的方法100的示例性流程圖。方法100例如可以在圖1a中的數據遷移框架110中使用。該數據遷移可以在相同或者不同的存儲設備之間進行,即數據遷移的源設備和目標設備可以具有相同或者不同的類型。例如,可以在本地存儲設備和云存儲系統(tǒng)之間進行所述數據遷移,或者在云存儲設備之間進行所述數據遷移。本公開的實施例不限于任何特定類型的源存儲設備和目標存儲設備。
如圖1b所示,該方法100包括,在s101,對用于數據遷移的至少一個執(zhí)行單元進行注冊,該至少一個執(zhí)行單元中的每個執(zhí)行單元具有對應的描述文件;在s102,提取并存儲所述至少一個執(zhí)行單元 中的每個執(zhí)行單元對應的描述文件所包含的信息;在塊s103,接收來自用戶的數據遷移請求;在塊s104,響應于來自用戶的所述數據遷移請求,至少基于所存儲的所述描述文件所包含的部分信息來選擇用于該用戶的數據遷移的執(zhí)行單元;以及在塊s105,調度所選擇的執(zhí)行單元的實例以執(zhí)行所述用戶的數據遷移。
在s101中注冊的執(zhí)行單元可以是利用任何現(xiàn)有數據遷移技術的執(zhí)行單元,例如,rpa、cloudboost、twinstrata等,也可以是利用新開發(fā)的數據遷移技術的執(zhí)行單元。本公開的實施例并不限于該執(zhí)行單元所具體使用的技術。
在一個實施例中,s101中的注冊可以包括通過rest應用程序接口(api)對所述至少一個執(zhí)行單元進行注冊。但是本公開的實施例與限于此,而是可以通過任何合適的方式進行注冊。
在一個實施例中,該至少一個執(zhí)行單元中的每一個執(zhí)行單元可以被封裝成容器,從而在s101,對容器進行注冊。一種典型的容器是docker,然而本公開的實施例并不限于此。
在另一個實施例中,執(zhí)行單元的描述文件指示以下中的至少一項:對應的執(zhí)行單元的類型、能力、配置、所支持的數據格式、運行要求、以及能夠提供的性能。這使得能夠針對特定的數據遷移任務選擇最匹配的執(zhí)行單元。
本公開的實施例并不限于任何特定的描述文件格式。僅作為示例,該文件格式,可以是json文件格式。例如,描述文件中可以用以下格式描述執(zhí)行單元的能力:
.format=containerrpo=1minmode=online|asynccompression=y(tǒng)es,lz4,checksum=farmhash;
并且/或者,可以用以下格式描述執(zhí)行單元的部署和資源要求:
staging=.cpu=1,.mem=2gb..net=10gb.disk=100gb;processing.cpu=4.mme=2gb.net=10gb..disk=10gb
apis={start,show-status,add-instance,stop}。
以下是描述文件的一個示例:
在s102,可以讀取描述文件,提取其中的信息,并且以與描述文件相同或者不同的格式將該信息進行存儲。例如,可以將信息存儲在文件、數據庫、或者查找表中。本公開的實施例不限于任何具體的存儲形式。
在一個實施例中,s103中接收的來自用戶的數據遷移請求包括數據遷移的源地址和目標地址的指示。例如可以是源和目標存儲設備的ip地址,或者賬號、或者路徑、volid、或者cid等。
在另一實施例中,數據遷移請求中還可以包括關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是 否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式;以及在所述數據遷移中是否執(zhí)行加密和/或所支持的加密方式。其中第一項使得方法100能夠選擇與用戶要求的性能最匹配的執(zhí)行單元,而第二到四項使得方法100能夠針對數據遷移過程中是否需要額外的數據處理來選擇具有相應處理能力的執(zhí)行單元。僅作為示例,性能要求可以是帶寬,時延、每秒的輸入輸出(iops)等。
在一個實施例中,該至少一個執(zhí)行單元可以具有不同的處理能力。例如,其中的某些執(zhí)行單元還可以被配置為執(zhí)行以下中的至少一項:汲取數據、數據緩存、數據校驗、重復數據刪除、數據壓縮、數據加密、數據傳輸。因此,方法100能夠允許用戶提供關于數據處理的要求,并為其選擇合適的執(zhí)行單元。
在一個實施例中,在s104,至少基于所存儲的所述描述文件所包含的部分信息來選擇用于所述用戶的數據遷移的執(zhí)行單元可以包括:分析來自所述用戶的數據遷移請求;以及基于所述分析和所存儲的描述文件的部分信息,確定與所述數據遷移請求匹配的執(zhí)行單元。
在一個示例中,在s104可以包括基于描述文件來評估執(zhí)行單元所需要的資源,并且進一步基于所述評估來確定與所述數據遷移請求相匹配的執(zhí)行單元。
在另一示例中,所述匹配的執(zhí)行單元可以是能夠滿足用戶的數據遷移請求中指示的性能要求的執(zhí)行單元,或者是具有數據遷移請求中所指示的處理能力的執(zhí)行單元。在一個優(yōu)選實施例中,s104可以進一步包括:優(yōu)先選擇正在運行的執(zhí)行單元的實例,也就是說,將與所述數據遷移請求相匹配的執(zhí)行單元中、正在運行的執(zhí)行單元的實例確定為最匹配的執(zhí)行單元。這使得能夠重用正在運行的資源。
在另一個實施例中,在s105,調度所選擇的執(zhí)行單元的實例以執(zhí)行所述用戶的數據遷移可以包括:向運行環(huán)境發(fā)送運行所述執(zhí)行單元的請求,從該運行環(huán)境獲得用于運行該執(zhí)行單元的資源,并在所述資源上運行選擇的執(zhí)行單元的實例。
如圖1c所示,可選地,在本公開的一個實施例中,方法100還可以進一步包括:在s106,對被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項進行更新。該更新結果可以,例如,被用戶查詢、顯示、或者在調度中被使用。
在另一實施例中,方法100還可以包括:在s107監(jiān)測被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項;以及在s108基于所述監(jiān)測來增加、減少、或者改變被調度的執(zhí)行單元的實例。例如,可以將當前的性能與sla比較以確定單元執(zhí)行單元的實例是否滿足要求,并且例如,可以在某些性能參數的值低于預定閾值時運行新的執(zhí)行單元的實例。例如,當存儲器容量只有30%可用,并且/或者,當iops下降50%時,可以運行新的實例。這使得方法100能夠適應于變化的運行環(huán)境,并且滿足用戶的性能需求。
同樣可選地,在另一實施例中,方法100還可以包括與用戶的其他交互s109,例如,可以包括以下中的至少一項:向所述用戶發(fā)送數據遷移響應、接收所述用戶對于數據遷移的運行狀態(tài)和/或運行日志的查詢、響應于所述用戶的查詢而顯示所述用戶的數據遷移的運行狀態(tài)和/或運行日志、以及從用戶接收要被遷移的數據。
例如,在一個實施例中,該方法100可以從用戶接收要被遷移的數據,并根據數據遷移請求中的指示,將該數據遷移到目標存儲設備。在另一實施例中,方法100也可以根據數據遷移請求中指示的源存儲地址,去讀取數據并將數據存儲到目標存儲設備。也就是說,從數據源汲取數據可以有兩種方式:推(把數據寫入遷移系統(tǒng))和拉(遷移系統(tǒng)主動從數據源讀取數據)。在具體實現(xiàn)方面,有些遷移的執(zhí)行可能需要特定的客戶端配合(可以稱為代理,被安裝在數據源或者數據目標端),該客戶端可以用于:1)持續(xù)監(jiān)控數據的變化,并保持和遷移系統(tǒng)的控制通信2)為了性能或者可靠性,客戶端可能以多線程并發(fā)運行,還可能會執(zhí)行必要的預處理,例如在發(fā)送給遷移系統(tǒng)之前就執(zhí)行數據校驗,數據壓縮,重復數據刪除等等。即把部 分遷移執(zhí)行模塊里的功能前移。應該注意,客戶端不是必須的,這取決于各個執(zhí)行模塊的具體實現(xiàn)。本公開的實施例對此沒有限制。
在圖2a-2c中示出了用于數據遷移的另一方法200的示意性流程圖。其中圖2a示出了該方法包括注冊流程210和任務處理流程220。在圖2b中示出用于注冊新的執(zhí)行單元的流程210的示例操作。如圖2b所示,在s2101,將數據遷移執(zhí)行單元封裝成容器,例如docker。在s2102,提取執(zhí)行單元的描述文件,該描述文件例如可以是.json文件。在s2103,將該執(zhí)行單元在可插拔引擎層注冊。該可插拔引擎層是用于各個執(zhí)行單元的注冊的公共層。注冊信息和描述文件的信息可以在s2104被存儲到數據庫(或者查找表/文件)中。
能夠理解的是,當該方法中使用的執(zhí)行單元已經被預先封裝成容器時,s2101的操作可以被省略。
在一個實施例中,s2102和s2104的操作可以與方法100的塊s102相同。而s2103的操作可以與方法100的塊s101相同。
在圖2c中示出了該方法中用于處理用戶請求的任務的示意性流程220。如圖2c所示,在s2201,接收用戶提交的數據遷移任務/請求。該請求可以與結合方法100所述的類似,因此不再詳述。
在s2202,查找和確定與該任務/請求匹配的執(zhí)行單元;并且在s2203評估確定的執(zhí)行單元的資源需求。在s2204從運行環(huán)境/系統(tǒng)資源池獲取需要的資源。在一個實施例中,系統(tǒng)資源池提供運行所需的硬件/軟件環(huán)境,例如虛擬機實例和cpu,存儲器,磁盤,網絡,以及操作系統(tǒng),并且在s2204,數據遷移裝置能夠從運行環(huán)境/系統(tǒng)資源池獲知訪問該資源的接口,例如ip地址,賬號信息等。在s2205,利用獲取的資源運行執(zhí)行單元的實例。例如,數據遷移裝置的遷移調度層在s2205把選中的執(zhí)行單元(遷移模塊)安裝在運行環(huán)境中,然后按要求(例如順序、設置環(huán)境變量等)啟動實例并初始化。
在一個實施例中,s2203的操作也可以在s2202中執(zhí)行,即在確定執(zhí)行單元時考慮對資源的評估。在另一實施例中,在s2202和s2203的操作可以與方法100中的s104相同,或者是其一部分。在 又一實施例中,s2204和s2205的操作與方法100中的s105的操作相同、或者是其的一部分。
如圖2c所示,該示例方法還可以進一步包括s2206,其中對執(zhí)行單元的實例狀態(tài)進行更新,例如可以包括更新其運行狀態(tài)、性能、日志、資源使用等中的一項或者多項。在一個實施例中,在s2206,可以向遷移系統(tǒng)注冊該執(zhí)行單元的實例,記錄其信息,包括哪個遷移模塊對應哪個虛擬機、有多少個實例被成功啟動、對外可訪問的接口(通常為ip地址加端口)各自是什么等。這些信息會被更新到數據庫中,供后續(xù)查詢和持續(xù)的狀態(tài)更新。在一個實施例中,該操作可以與s106的操作相同。
在另一實施例中,該示例方法還可以包括s2207,其中,對執(zhí)行單元的資源使用和性能進行監(jiān)測,以及s2208,根據該監(jiān)測對執(zhí)行單元的實例進行調整,包括增加新的或者更多的實例。例如,可以在s2207持續(xù)地定期(例如每5秒)監(jiān)控實例的運行狀況,主要包括運行狀態(tài)(正常、失敗、局部故障等)、性能指標(mb/s,讀寫延遲等)和資源消耗(cpu、存儲器、磁盤、網絡)等,并把這些信息匯總,導入到數據庫或者直接導出顯示在管理界面。當發(fā)現(xiàn)異常情況會導致服務水平難以保證時,可以在s2208做干預處理。例如:
1)實例失效,即外界無法訪問。此時可以預定義兩種策略。一是重啟該實例;二是殺掉該實例,重新申請一個新的資源來代替該失效的實例。
2)實例性能異常:例如由于導入數據量激增,或者資源消耗過快,或者二者同時發(fā)生,最終導致性能指標出現(xiàn)降級。則采用的策略可以是依據降級程度來依次提高響應級別。例如,當性能下降20%且持續(xù)3分鐘,嘗試在現(xiàn)有的資源(如虛擬機)上啟動更多的實例;當性能下降50%時,且持續(xù)10分鐘,則向資源池申請更多的運行資源;并在其上增加實例。申請資源的多少取決與下降的幅度。
在一個實施例中,s2207和s2208的操作可以與方法100的s107和s108相同。
在圖3中示出了用于數據遷移的方法300。如圖3所示,該方法300包括s301,其中用戶向數據遷移設備發(fā)送數據遷移請求,以促使所述數據遷移設備根據方法100或者200中的任一方法執(zhí)行數據遷移。
如上結合圖1和方法100所述的,在一個實施例中,數據遷移請求可以包括數據遷移的源地址和目標地址的指示,以及關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式;以及在所述數據遷移中是否執(zhí)行加密和/或所支持的加密方式。
在另一實施例中,可選地,方法300還可以包括s302,其中用戶向數據遷移設備發(fā)送對數據遷移的運行狀態(tài)和/或運行日志的查詢;以及/或者向該設備發(fā)送要被遷移的數據;以及/或者對要遷移的數據進行預處理。
可選地,在另一實施例中,方法300還可以包括s303,其中用戶從數據遷移設備接收數據遷移的運行狀態(tài)和/或運行日志。
以下參考附圖4描述用于數據遷移的裝置400的結構。裝置400適用于在任何存儲設備之間進行各種格式的數據遷移。例如,存儲設備可以是本地存儲設備或者云存儲設備。并且源存儲設備和目標存儲設備可以具有不同的類型。
裝置400可以執(zhí)行參考圖1所述的方法100或者參考圖2a-2c所述的方法200,但是不限于執(zhí)行該方法100或者200。同樣,該方法100或者200可以由裝置400執(zhí)行,但是不限于由裝置400執(zhí)行。例如方法100或者200的至少一些操作可以由其它的裝置來執(zhí)行。
如圖4所示,裝置400包括注冊單元401、存儲單元402、第一接收單元403、調度單元404以及至少一個執(zhí)行單元405。其中,至少一個執(zhí)行單元(例如405-1,405-2,405-3)中的每個執(zhí)行單元具有對應的描述文件;并且每個執(zhí)行單元被配置為在被所述調度單元調度時執(zhí)行數據遷移。注冊單元401被配置為對所述至少一個執(zhí) 行單元進行注冊;存儲單元402被配置為提取并存儲所述至少一個執(zhí)行單元中的每個執(zhí)行單元對應的描述文件所包含的信息;第一接收單元403被配置為接收來自用戶的數據遷移請求;并且調度單元404被配置為響應于來自用戶的所述數據遷移請求,至少基于所存儲的描述文件所包含的部分信息來選擇用于所述用戶的數據遷移的執(zhí)行單元;并且調度所選擇的執(zhí)行單元的實例以執(zhí)行所述用戶的數據遷移。
在一個實施例中,裝置400的注冊單元401、存儲單元402、第一接收單元403、調度單元404以及至少一個執(zhí)行單元405可以分別執(zhí)行方法100的塊s101-s105的功能。因此,以上結合圖1和方法100所述的相應操作和特征在此同樣適用,并因此不再詳述。
例如,至少一個執(zhí)行單元405中的每一個執(zhí)行單元(例如405-1,405-2,405-3)可以被封裝成容器,諸如docker或者vic。
在一個實施例中,某些執(zhí)行單元可以進一步被配置為執(zhí)行以下中的至少一項:汲取數據、數據緩存、數據校驗、重復數據刪除、數據壓縮、數據加密、數據傳輸。
在另一個實施例中,執(zhí)行單元405的描述文件可以指示以下中的至少一項:該執(zhí)行單元的類型、能力、配置、所支持的數據格式、運行要求;以及能夠提供的性能。已經結合方法100給出了描述文件的格式的示例,在此不再重復。
在另一實施例中,數據遷移請求可以包括數據遷移的源地址和目標地址的指示,以及關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式、以及在所述數據遷移中是否執(zhí)行加密和/或所支持的加密方式。
在一個實施例中,調度單元404可以進一步被配置為分析來自用戶的數據遷移請求,基于所述分析和所存儲的描述文件,確定與所述數據遷移請求匹配的執(zhí)行單元,以及調度所確定的執(zhí)行單元的實例來執(zhí)行所述數據遷移。在進一步的實施例中,調度單元304還 可以進一步被配置為:將與所述數據遷移請求匹配的執(zhí)行單元中、正在運行的執(zhí)行單元的實例確定為最匹配的執(zhí)行單元。在另一實施例中,調度單元404又可以被配置為評估執(zhí)行單元的運行需要的資源,以及進一步基于所述評估來確定與所述數據遷移請求匹配的執(zhí)行單元。
在一些實施例中,裝置400可以進一步包括更新單元406,其被配置為對被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項進行更新。
在另一些實施例中,裝置400還可以包括監(jiān)測單元407,其被配置為監(jiān)測被調度的執(zhí)行單元的實例的進展、狀態(tài)、日志、資源使用、以及性能中的至少一項;以及調整單元408,其被配置為基于所述監(jiān)測來增加、減少、或者改變被調度的執(zhí)行單元的實例。
在一個實施例中,更新單元406、監(jiān)測單元407和調整單元408可以分別被配置為執(zhí)行方法100的s106-s108的操作,因此,結合s106-s108進行的描述在此同樣適用,并不再重復。
可選地,裝置400可以進一步包括與用戶的其它交互單元409,例如其它交互單元409可以包括以下中的至少一項:第一發(fā)送單元,被配置為向所述用戶發(fā)送數據遷移響應、第二接收單元,被配置為接收所述用戶對于數據遷移的運行狀態(tài)和/或運行日志的查詢、顯示單元,被配置為響應于所述用戶的查詢而顯示所述用戶的數據遷移的運行狀態(tài)和/或運行日志;以及第三接收單元,被配置為從用戶接收要被遷移的數據。
圖5示出了用于數據遷移的裝置500的另一示例性結構以及示例性的應用場景。圖左側的存儲設備510和右側的存儲設備520可以是用于數據遷移的源存儲設備或者目標存儲設備。如圖所示,源存儲設備和目標存儲設備均可以包括各種類型的數據。圖下部的530是裝置500的運行環(huán)境與系統(tǒng)資源池的示例。典型的運行環(huán)境可以是iaas(it基礎設施即服務)或者是paas(平臺即服務)。這些“即服務”都提供了按需訪問的接口api。由這些iaas/paas類提供系統(tǒng)運行 所需的主機/vm(虛擬機),包括cpu、內存、磁盤、網絡以及操作系統(tǒng)等。根據本公開的實施例,執(zhí)行模塊能夠以docker容器方式打包運行,兼容性很好,可以支持目前市面上主流的iaas如amazonaws,microsoftazure,googlecloudengine,emcvirtustream,vmwarevcloudair,openstack等或者paas如cloudfoundry,mesos,kubernetes等。
如圖5所示該裝置500適用于在任何存儲設備之間進行各種格式的數據遷移。例如,存儲設備可以是本地存儲設備或者云存儲設備。并且源存儲設備和目標存儲設備可以具有不同的類型。
如圖5所示,裝置500包括可插拔引擎層501、匹配與調度層502、配置與管理層503和執(zhí)行單元504。在該圖中示出了4個利用現(xiàn)有技術的不同種類的執(zhí)行單元504-1,504-2,504-3和504-4,但是本公開的實施例不限于圖中所示的執(zhí)行單元的數目和類型。如圖所示,不同的執(zhí)行單元分別可以被封裝成容器,例如docker或者vic。
該可插拔引擎層層501對多個執(zhí)行單元進行注冊。該可插拔引擎層是服務提取層,其可以作為調度單元與可執(zhí)行單元之間的橋梁。例如,該可插拔引擎層可以通過resrapi來注冊每個執(zhí)行單元,記錄其能力和api。在一個實施例中,可插拔引擎層501的功能可以與裝置400中的注冊單元401相同。
在一個實施例中,該匹配與調度層502可以進行執(zhí)行單元的自動匹配、自動調度以及自動的調整(例如,自動擴展)。在又一實施例中,該匹配與調度層502可以基于用戶輸入數據分析用戶的需求、或者獲知源/存儲設備的類型、運行環(huán)境等,并至少基于此來執(zhí)行自動匹配。例如,調度單元可以考慮用戶請求中指示的數據格式、pro需求、同步/非同步、或其組合。在另一示例中,匹配與調度層502可以檢測源/目標/平臺的環(huán)境,例如,操作系統(tǒng)、docker環(huán)境、硬件資源、產品廠商和/或型號。在又一示例中,調度單元可以進行資源評估。
在另一實施例中,該匹配與調度層502可以通過調用執(zhí)行單元 來運行api以啟動相應的執(zhí)行單元的容器或者vic。該調度可能需要,但不是必須,在源和/或目標存儲設備中安裝代理。
在又一實施例中,匹配與調度層502還可以監(jiān)測執(zhí)行單元的狀態(tài)、進展、日志等,并對調度結果進行調整。該監(jiān)測例如可以通過調用執(zhí)行單元的api來進行。該調整可以包括根據對資源使用和/或性能的監(jiān)測結果而擴展調度的執(zhí)行單元的實例。
在另一實施例中,該匹配與調度層502可以執(zhí)行與裝置400的調度單元404相同的功能。
配置與管理層503可以提供集中式的管理接口,例如可以包括儀表板,可以顯示運行狀態(tài)、日志等。例如,該接口可以允許用戶提交任務請求、任務進展查詢等,并且/或者可以提供認證信息。
在一個實施例中,在一個執(zhí)行單元504內部,可以存在多個功能子模塊,每個子模塊均可以以容器方式打包和運行,并各自獨立擴展(即多個運行實例)。典型的功能子模包括,但不限于:
-數據汲取,從數據源導入數據(拉pull或者推push的方式);
-數據緩存:暫存數據,例如保存在內存,磁盤或者多副本鏡像;
-數據校驗(通常對汲取數據以定長方式產生校驗值并保存,防止數據在傳輸或者處理過程中,由于軟件/硬件故障出現(xiàn)損壞而影響數據的完整性);
-重復數據刪除(如發(fā)現(xiàn)有數據內容相同,則不保存或者傳輸那些重復的數據塊);
-數據壓縮;
-數據加密;
-數據傳輸/發(fā)送。
子模塊之間可以存在特定的數據流依賴關系。在圖6中示出多個子模塊及其之間的數據流的示例。但是如本領域技術人員能夠理解的,在其他實施例中,可以在執(zhí)行單元504中實施比圖6中所示的更少或者更多的或者不同的子模塊,并且其中的數據流可以與圖6 示出的不同。
圖7是用于數據遷移的另一裝置700的示意性結構圖。該裝置可以實施于,例如源存儲設備中,也可以實施于與源存儲設備分離的設備。
如圖7所示,該裝置700包括第一發(fā)送單元701,其被配置為向數據遷移設備發(fā)送數據遷移請求;該數據遷移設備包括如結合圖4或者圖5所述的任一裝置400或者500。
在一個實施例中,如結合圖4或者5所述的,該數據遷移請求可以包括數據遷移的源地址和目標地址的指示,以及關于以下中的至少一項的信息:對所述數據遷移的性能要求、在所述數據遷移中是否要求刪除重復、在所述數據遷移中是否執(zhí)行壓縮和/或所支持的壓縮格式;以及在所述數據遷移中是否執(zhí)行加密和/或所支持的加密方式。
在另一實施例中,該裝置700可以進一步包括:第二發(fā)送單元702,其被配置為向所述數據遷移設備發(fā)送對數據遷移的運行狀態(tài)和/或運行日志的查詢和/或要被遷移的數據。
在另一實施例中,該裝置700可以進一步包括接收單元703,其被配置為從所述數據遷移設備接收數據遷移的運行狀態(tài)和/或運行日志
如本領域技術人員能夠理解的,裝置400、500、700還可以包括圖4、5、7中未示出的其它單元;并且/或者,在一些實施例中,圖4、5、7中的某些單元可以被省略。
在提出本公開的實施例的方法和裝置之前,不存在針對各種數據格式和應用場景或者處理要求的統(tǒng)一的數據遷移的解決方案。而本公開的實施例提供了具有集中控制平面和可插拔的數據平面的靈活架構,使得該數據遷移解決方案易于使用、易于擴展、并對新的數據遷移技術開放。并且,本公開的實施例,還能夠為數據遷移任務自動匹配數據遷移執(zhí)行單元,從而將復雜的內部操作對用戶隱藏,從而能夠減少差錯并適應于不同的用戶需求和應用場景。
本領域技術人員將容易地認識到,各種上述各種方法中的塊或者步驟可以通過編程的計算機來執(zhí)行。在本公開中,一些實施例還意在涵蓋一種包括指令的計算機程序,所述指令在至少一個處理器中執(zhí)行時,促使所述至少一個處理器執(zhí)行方法100、200或者300中的任一方法。在本公開中,一些實施例還意在涵蓋程序存儲系統(tǒng),例如,數字數據存儲介質,這是機器或計算機可讀的并且編碼機器可執(zhí)行或計算機可執(zhí)行的指令程序,其中,所述指令執(zhí)行上述方法100、200或者300中的一些或所有步驟。程序存儲系統(tǒng)可以是,例如,數字存儲器、諸如磁盤和磁帶的磁存儲介質、硬盤驅動器或光學可讀數字數據存儲介質。該實施例還意在涵蓋編程為執(zhí)行所述上述方法的步驟的計算機。一些實施例還意在涵蓋一種裝置,該裝置包括至少一個處理器;以及至少一個包括計算機程序代碼的存儲器,其中所述至少一個存儲器和所述計算機程序代碼被配置為:與所述至少一個處理器一起,促使所述裝置執(zhí)行方法100、200或者300中的任一方法。
圖8示出了一個可以用來實施本公開的實施例的設備800的示意性框圖。如圖所示,設備800包括處理單元(例如但不限于cpu)801,其可以根據存儲在只讀存儲器(rom)802中的計算機程序指令、或者來自存儲單元808的計算機程序指令(例如,從存儲單元808加載到隨機訪問存儲器(ram)803中的計算機程序指令),來執(zhí)行各種適當的動作和處理。在ram803中,還可存儲設備800操作所需的各種程序和數據。處理單元801、rom802以及ram803通過總線804彼此相連。輸入/輸出(i/o)接口805也連接至總線804。
設備800中的多個部件連接至i/o接口805,包括:輸入單元506,例如鍵盤、鼠標等;輸出單元807,例如各種類型的顯示器、揚聲器等;存儲單元808,例如磁盤、光盤等;以及通信單元809,例如網卡、調制解調器、無線通信收發(fā)機等。通信單元809允許設 備800通過諸如因特網的計算機網絡和/或各種電信網絡與其他設備交換信息/數據。
上文所描述的各個過程和處理,例如方法100、200或者300,可由處理單元801執(zhí)行。例如,在一些實施例中,方法100、200或者300可被實現(xiàn)為計算機軟件程序,其被有形地包含于機器可讀介質,例如存儲單元808。在一些實施例中,計算機程序的部分或者全部可以經由rom802和/或通信單元809而被載入和/或安裝到設備800上。當計算機程序被加載到ram803并由處理單元801執(zhí)行時,可以執(zhí)行上文描述的方法100、200或者300的一個或多個步驟。
因此,本公開的解決方案可以利用各種方式來提供。例如,在一些實施例中,可以將實施例的方法/裝置實現(xiàn)為硬件盒子或者軟件和硬件結合的封裝設備;在另一些實施例中,可以將實施例的方法/裝置實現(xiàn)為能夠在商業(yè)硬件上運行的軟件產品;在又一些實施例中,還可以將實施例的方法/裝置在云環(huán)境中最為服務向用戶提供。
在附圖中示出的裝置的各種元件的功能,可以通過使用軟件、專用硬件以及與適當軟件相關聯(lián)的能夠執(zhí)行軟件的硬件、或者固件、或者其結合來提供。當由處理器提供時,該功能可以由單個專用處理器、由單個共享處理器或由多個單獨的處理器來提供。此外,術語“處理器”可以包括但不限于,數字信號處理器(dsp)硬件、網絡處理器、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga),用于存儲軟件的只讀存儲器(rom)、隨機存取存儲器(ram)和非易失性存儲裝置。還可以包括其他常規(guī)和/或定制的硬件。
本領域技術人員應當理解,說明書和附圖僅僅說明本公開的實施例的原理。因此,應當理解,本領域的技術人員將能夠設計出各種布置,雖然這里沒有明確地描述或示出,但是該布置體現(xiàn)本公開的實施例的原理并且被包括在本公開的實施例的精神和范圍內。此外,這里闡述的所有示例主要旨在明確僅用于教學目的,以幫助讀者理解本公開的實施例的原理和發(fā)明人貢獻的用于促進本領域的概念,并且應被解釋為不限于這些具體闡釋的示例和條件。而且,這 里闡述本公開的實施例的原理、方面和實施例的所有闡述及其具體示例也意在包含其等同物。