TW201617918A - 用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法 - Google Patents
用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法 Download PDFInfo
- Publication number
- TW201617918A TW201617918A TW104111571A TW104111571A TW201617918A TW 201617918 A TW201617918 A TW 201617918A TW 104111571 A TW104111571 A TW 104111571A TW 104111571 A TW104111571 A TW 104111571A TW 201617918 A TW201617918 A TW 201617918A
- Authority
- TW
- Taiwan
- Prior art keywords
- nvme controller
- virtual
- host
- controller
- nvme
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
Abstract
提出一種設想系統和方法的新方式,這些系統和方法用於支援對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)從當前主機向目的地主機的(活躍或者靜默的)遷移。在VM遷移時,在第一物理NVMe控制器上運行的第一虛擬NVMe控制器使在當前主機上運行的第一VM能夠通過網路訪問被映射到遠端存放設備的一個或者多個邏輯卷並且執行對一個或者多個邏輯卷的多個存儲操作,如同它們是本機存放區卷。在VM遷移過程期間,當前主機將服務於第一VM的第一虛擬NVMe控制器置於靜默狀態中、捕獲並且在第一主機上保存第一虛擬NVMe控制器的狀態的映射。然後使用保存的映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中第二虛擬NVMe控制器被配置為在目的地主機上服務於第二VM並且具有與第一虛擬NVMe控制器完全相同的狀態。第二虛擬NVMe控制器然後發起和/或恢復對遠端存放設備的存儲操作,而未被對第一主機上的第一VM向第二主機上的第二VM的遷移中斷。
Description
本申請要求對通過引用而全部結合於此、提交於2014年5月2日並且名稱為“Systems and methods for accessing extensible storage devices over a network as local storage via NVMe controller”的第61/987,956號美國臨時專利申請的權益。
本申請與通過引用而全部結合於此、提交於2014年5月16日並且名稱為“Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host”的第14/279,712號共同未決美國專利申請有關。
本申請與通過引用而全部結合於此、提交於2014年6月10日並且名稱為“Systems and methods for enabling access to extensible storage devices over a network as local storage via NVMe controller”的第14/300,552號共同未決美國專利申請有關。
本申請與通過引用而全部結合於此、提交於2014年6月27日並且名稱為“Systems and methods for enabling local caching for remote storage devices over a network via NVMe controller”的第14/317,467號共同未決美國專利申請有關。
本申請與通過引用而全部結合於此、提交於2014年8月29日並且名稱為“Systems and methods for enabling value added services for extensible storage devices over a network via NVMe
controller”的第14/473,111號共同未決美國專利申請有關。
本申請與通過引用而全部結合於此、提交於2014年9月25日並且名稱為“Systems and methods for supporting hot plugging of remote storage devices accessed over a network via NVMe controller”的第14/496,916號共同未決美國專利申請有關。
本發明關於一種支援對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)從當前主機向目的地主機的遷移的系統及方法。
服務提供者已經越來越多地通過在雲端的協力廠商資料中心處的主機/伺服器上運行多個虛擬機器(VM)來在資料中心處提供它們的web服務(例如,網站)。這裡,VM是物理機器(即,電腦)的軟體實現方式,該物理機器執行程式以類比現有計算環境,比如作業系統(OS)。VM在管理程式上面運行,該管理程式在主機上創建和運行一個或者多個VM。管理程式向每個VM呈現虛擬操作平臺並且管理主機上的每個VM的執行。通過使具有不同作業系統的多個VM能夠共用相同主機機器,管理程式引起尤其在雲端計算環境中的在能量消耗和成本有效性二者方面的對計算資源的更高效使用。
也被稱為NVMe或者NVM快速的非揮發性記憶體快速是一種允許固態驅動(SSD)進行對附接到計算設備或者主機的高速週邊部件互連快速(PCIe)匯流排的有效使用的規範。這裡,PCIe匯流排是高速串列電腦擴展匯流排,該高速串列電腦擴展匯流排被設計為支援硬體I/O虛擬化並且支援用於匯流排設備的最大系統匯流排輸送量、低I/O管腳計數和小物理覆蓋面積。NVMe通常在主機的非揮發性記憶體控制器上操作,該非揮發性記憶體控制
器管理在非揮發性記憶體(例如,SSD、SRAM、快閃記憶體、HDD等)上存儲的資料並且與主機通信。這樣的NVMe控制器提供用於基於PCIe的SSD訪問的命令集和特徵集,其中目標在於廣範圍的企業和用戶端系統上的增加和有效的性能和可互通性。使用NVMe控制器訪問基於PCIe的SSD的主要益處是與通過對I/O棧的流線化的基於串列附接SCSI(SAS)或者基於串列ATA(SATA)的SSD比較的減少的延時、增加的每秒輸入/輸出(I/O)操作和更低功率消耗。
當前,在主機上運行的VM可以訪問本地耦合到物理NVMe控制器的多個存放裝置(例如,基於PCIe的SSD),該物理NVMe控制器附接到主機。這裡,VM可以訪問的存儲卷數目受對於可以本地耦合到物理NVMe控制器的物理存儲單元/卷的最大數目的物理限制所約束。由於在資料中心處的主機上運行的VM可以屬於不同web服務提供者、並且VM中的每個VM可以具有它自己的可以在操作期間即時改變並且因此不為主機所知的存儲需要,所以不可能為在主機上運行的所有VM提前預測和分配將滿足它們的存儲需要的固定數量的存儲卷。支援通過網路的、對遠端存放設備的訪問可以在存儲操作期間向VM提供可擴展/靈活的存儲卷。
在VM從在其上運行當前主機(源主機)被遷移(活動或者有規律/被靜默)到另一主機(目的地主機)、而未引起對VM服務的使用者或者應用的任何中斷時,當前由VM使用的所有資源(例如,資料、存儲裝置、網路連接等)需要從源機器被轉移/複製到目的地機器。由於VM可以具有經由VNMe控制器的、對遠端(並非僅為本機存放區設備)的未決存儲操作,因此重要的是能夠在VM的遷移期間、經由VNMe控制器適當地處置此類未決存儲操作。
相關技術和與之有關的限制的前述示例旨在於例示
而不是排他的。相關技術的其它限制將在閱讀說明書和研讀附圖時變得清楚。
本發明提供一種用於支持對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)的遷移的系統,包括:在第一物理NVMe控制器上運行的第一虛擬NVMe控制器,所述第一虛擬NVMe控制器在操作中被配置為:使在第一主機上運行的第一VM能夠按照存儲網路通訊協定、通過所述網路訪問被創建並且映射到所述遠端存放設備的一個或者多個NVMe名稱空間中的一個或者多個邏輯卷,並且對所述一個或者多個邏輯卷執行多個存儲操作,如同它們是本機存放區卷;所述第一主機,所述第一主機在操作中被配置為:在所述第一VM從所述第一主機被遷移到在第二主機上運行的第二VM時,將當前服務於所述第一VM的所述第一虛擬NVMe控制器置於靜默狀態中;捕獲並且在所述第一主機上保存所述第一虛擬NVMe控制器的狀態的映射;使用保存的所述映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中所述第二虛擬NVMe控制器被配置為服務於所述第二VM、並且具有與在所述靜默狀態中的所述第一虛擬NVMe控制器完全相同的狀態;在所述第二物理NVMe控制器上運行的所述第二虛擬NVMe控制器,所述第二虛擬NVMe控制器在操作中被配置為:發起和/或恢復對被映射到所述遠端存放設備的所述邏輯卷的所述存儲操作,而不被對在所述第一主機上運行的所述第一VM向在所述第二主機上運行的所述第二VM的所述遷移中斷。
本發明提供一種用於支持對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)的遷移的電腦實施的方法,包括:使在第一主機上運行
的第一VM能夠按照存儲網路通訊協定、通過所述網路訪問被創建並且映射到所述遠端存放設備的一個或者多個NVMe名稱空間中的一個或者多個邏輯卷,並且對所述一個或者多個邏輯卷執行多個存儲操作,如同它們是本機存放區卷;在所述第一VM從所述第一主機被遷移到在第二主機上運行的第二VM時,將在當前服務於所述第一VM的第一物理NVMe控制器上運行的第一虛擬NVMe控制器置於靜默狀態中;捕獲並且在所述第一主機上保存所述第一虛擬NVMe控制器的狀態的映射;使用保存的所述映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中所述第二虛擬NVMe控制器被配置為服務於所述第二VM並且具有與在所述靜默狀態中的所述第一虛擬NVMe控制器完全相同的狀態;發起和/或恢復對被映射到所述遠端存放設備的所述邏輯卷的所述存儲操作,而不被對在所述第一主機上運行的所述第一VM向在所述第二主機上運行的所述第二VM的所述遷移中斷。
100‧‧‧系統
102‧‧‧物理NVMe控制器
102A,102B‧‧‧物理NVMe控制器
104‧‧‧NVMe存儲代理引擎
106‧‧‧NVMe訪問引擎
108‧‧‧存儲訪問引擎
108A‧‧‧存儲訪問引擎
108B‧‧‧存儲訪問引擎
110‧‧‧VM
110A‧‧‧VM
110B‧‧‧VM
111‧‧‧PCIe/NVMe連接111
112‧‧‧主機
112A‧‧‧主機
112B‧‧‧主機
114‧‧‧NVMe驅動器
114A‧‧‧NVMe驅動器
114B‧‧‧NVMe驅動器
120‧‧‧存放裝置
120A‧‧‧存放裝置
120B‧‧‧存放裝置
122‧‧‧遠端存放卷
132‧‧‧網路
200‧‧‧硬體實現方式
202‧‧‧NVMe處理引擎
204‧‧‧NVMe佇列管理器(NQM)
206‧‧‧CPU/處理器
208‧‧‧主記憶體
210‧‧‧記憶體
212‧‧‧提交佇列
214‧‧‧完成佇列
216‧‧‧資料緩衝器
218‧‧‧等待緩衝器
220‧‧‧網路磁碟
400‧‧‧虛擬化的系統
402‧‧‧虛擬NVMe控制器
404‧‧‧虛擬NVMe存儲代理引擎
406‧‧‧虛擬NVMe訪問引擎
500‧‧‧遷移的系統
502A‧‧‧NVMe控制器
502B‧‧‧虛擬NVMe控制器
504A‧‧‧虛擬NVMe存儲代理引擎
504B‧‧‧虛擬NVMe存儲代理引
506A‧‧‧虛擬NVMe訪問引擎
506B‧‧‧虛擬NVMe訪問引擎
600‧‧‧流程圖
602-610‧‧‧步驟
從在與附圖一起閱讀時的以下具體描述最好地理解本公開內容的方面。注意,根據業內標準實踐,各種特徵未按比例繪製。事實上,為了討論D清楚,可以任意地增加或者減少各種特徵的尺度。
第一圖描繪根據一些實施例的、用於支援對將作為本機存放區設備向VM呈現的遠端存放設備的虛擬化的系統的示圖的示例。
第二圖描繪根據一些實施例的、在第一圖中描繪的物理NVMe控制器的硬體實現方式的示例。
第三圖描繪根據一些實施例的、在邏輯卷的NVMe名稱空間與遠端物理存儲卷之間映射的查閱資料表的非限制性示例。
第四圖描繪根據一些實施例的、用於支援對將作為本機存放區設備向VM呈現的多個遠端存放設備的虛擬化的系統的示圖的非限制性示例,其中物理NVMe控制器還包括多個虛擬NVMe控制器。
第五圖描繪根據一些實施例的、用於支持對經由NVMe控制器、通過網路訪問遠端存放設備的集合的虛擬機器從當前主機向目的地主機的活躍遷移的系統的非限制性示例。
第六圖描繪根據一些實施例的、用於支持對經由NVMe控制器、通過網路訪問遠端存放設備的虛擬機器從當前主機向目的地主機的遷移的過程的示例的流程圖。
以下公開內容提供用於實施主題內容的不同特徵的許多不同實施例或者示例。以下描述部件和佈置的具體示例以簡化本公開內容。這些當然僅為示例而並未旨在於限制。此外,本公開內容還可以在各種示例中重複標號和/或字母。這一重複是為簡化和清楚的目的,並且本身並未規定在討論的各種實施例和/或配置之間的關係。
提出一種設想系統和方法的新方式,這些系統和方法用於支援對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)從當前主機向目的地主機的(活躍或者靜默的)遷移。在VM遷移時,在第一物理NVMe控制器上運行的第一虛擬NVMe控制器使在當前主機上運行的第一VM能夠通過網路訪問被映射到遠端存放設備的一個或者多個邏輯卷並且執行對一個或者多個邏輯卷的多個存儲操作,如同它們是本機存放區卷。在VM遷移過程期間,當前主機將服務於第一VM的第一虛擬NVMe控制器置於靜默狀態中,並且捕獲並且在第一主機上保存第一虛擬NVMe控制器的狀態的映射。然後使用保存
的映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中第二虛擬NVMe控制器被配置為在目的地主機上服務於第二VM並且具有與第一虛擬NVMe控制器完全相同的狀態。第二虛擬NVMe控制器然後在第一主機上的第一VM被遷移到第二主機上的第二VM之後發起和/或恢復對遠端存放設備的存儲操作而無任何中斷。
不同於其中VM由僅有本地附接的存放裝置的NVMe控制器服務的正常VM遷移,用於關聯的NVMe控制器的VM遷移呈現附加挑戰,該NVMe控制器支援對用於VM的遠端存放設備的訪問。通過捕獲對被遷移的VM服務的虛擬NVMe控制器的狀態並且在耦合到目的地主機的物理NVMe控制器上創建用於新的虛擬NVMe控制器的相同狀態,提出的方式保證不會中斷VM對遠端存放設備的未決存儲操作、並且不會在對VM的遷移期間丟失與遠端存放設備的網路連接和任何未決存儲事務。作為結果,整個VM遷移變成無縫過程並且可以被使得對VM及其用戶完全地透明。
第一圖描繪用於支援對將作為本機存放區設備向VM呈現的遠端存放設備的虛擬化的系統100的示圖的示例。雖然各示圖將部件描繪為在功能上分離,但是這樣的描繪僅用於例示性目的。將清楚,可以任意地組合或者將在這一附圖中繪製的部件劃分為分離的軟體、固件和/或硬體部件。另外,也將清楚,這樣的部件無論如何組合或者劃分它們,都可以在相同主機或者多個主機上執行,並且其中多個主機可以被一個或者多個網路連接。
在第一圖的示例中,系統100包括物理NVMe控制器102,該物理NVMe控制器102至少具有在NVMe控制器102上運行的NVMe存儲代理引擎104、NVMe訪問引擎106和存儲訪問引擎108。這裡,物理NVMe控制器102是具有用來實現具體目的的軟體、固件、硬體和/或其它部件的硬體/固件NVMe模組。如
以下具體討論的那樣,物理NVMe控制器102包括CPU或者微處理器、存儲單元或者記憶體(也被稱為主記憶體,比如RAM)中的一項或者多項,該存儲單元或者存儲器具有存儲的用於實現一個或者多個過程的軟體指令。物理NVMe控制器102提供用於支援在它上運行的引擎的物理功能(PF)和虛擬功能(VF)二者,其中引擎將通常包括在物理NVMe控制器102的存儲單元中存儲的用於實現一個或者多個過程的軟體指令。如這裡所指,PF功能是用來配置和管理控制器的單個根I/O虛擬化(SR-IOV)功能(比如實現虛擬核和暴露PCIe VF)的PCIe功能,其中VF功能是支持SR-IOV並且代表控制器102的虛擬核的實例的羽量級PCIe功能。每個VF共用物理NVMe控制器102上的一個或者多個物理資源,其中這樣的資源包括但不限於如第二圖中描繪和以下具體討論的物理NVMe控制器102的控制器上記憶體208、硬體處理器206、到存放裝置的介面222和網路磁碟220。
在第一圖的示例中,計算單元/裝置/主機112運行多個VM 110,每個VM被配置為通過網際網路向用戶端提供基於web的服務。這裡,主機112可以是計算設備、通信設備、存放裝置或者能夠運行軟體部件的任何電子設備。作為非限制性示例,計算設備可以是但不限於膝上型PC、桌面型PC、移動設備或者伺服器機器、比如x86/ARM伺服器。通信設備可以是但不限於行動電話。
在第一圖的示例中,主機112經由PCIe/NVMe鏈路/連接111耦合到物理NVMe控制器102,並且在主機112上運行的VM 110被配置為經由PCIe/NVMe鏈路/連接111訪問物理NVMe控制器102。作為非限制性示例,PCIe/NVMe鏈路/連接111是PCIe Gen3 x8匯流排。
第二圖描繪第一圖中描繪的物理NVMe控制器102的硬體實現方式200的示例。如在第二圖的示例中所示,硬體實現方式200至少包括NVMe處理引擎202和被實施的用於支援NVMe
處理引擎202的NVMe佇列管理器(NQM)204。這裡,NVMe處理引擎202包括一個或者多個CPU/處理器206(例如,多核/多執行緒ARM/MIPS處理器)和主記憶體208(比如DRAM),該主記憶體還可以包括多個寄存器和緩衝器。NVMe處理引擎202被配置為執行所有NVMe指令/命令並且在完成指令時提供結果。硬體實施的NQM 204提供到在NVMe處理引擎202上執行的引擎的前端介面。在一些實施例中,NQM 204至少管理提交佇列212和完成佇列214,該提交佇列212包括將由NVMe處理引擎202處理的多個監管和控制指令,該完成佇列214包括NVMe處理引擎202已經處理的多個監管和控制指令的狀態。在一些實施例中,NQM 204還管理一個或者多個資料緩衝器216,該一個或者多個資料緩衝器包括經由NVMe控制器102從存放裝置讀取或者將向存放裝置寫入的資料。在一些實施例中,在主機112的記憶體210內維持提交佇列212、完成佇列214和資料緩衝器216中的一項或者多項。在一些實施例中,物理NVMe控制器102的硬體實現方式200還包括到存放裝置的介面222和網路磁碟220,該到存放裝置的介面222使多個可選存放裝置120能夠本地耦合到物理NVMe控制器102和由物理NVMe控制器102訪問,該網路磁碟220使網路的多個存放裝置122能夠遠端地連接到NVMe控制器102。
在第一圖的示例中,NVMe控制器102的NVMe訪問引擎106被配置為從在主機102上運行的VM 110接收和管理用於讀取/寫入操作的指令和資料。當在主機112上運行的VM 110之一執行讀取或者寫入操作時,它在提交佇列212中放置對應的指令,其中該指令是以NVMe格式。在它的操作期間,NVMe訪問引擎106利用NQM 204以基於讀取或者寫入操作的“門鈴”從主機112上的提交佇列212取讀監管和/或控制命令,其中門鈴由VM 110生成並且被從主機112接收。NVMe訪問引擎106也利用NQM 204以從主機112上的資料緩衝器216之一取讀寫入操作將寫入的資
料。NVMe訪問引擎106然後在NVMe處理引擎202的記憶體208中的等待緩衝器218中放置取讀的命令以等待NVMe存儲代理引擎104處理。一旦指令被處理,NVMe訪問引擎106就在完成佇列214中放回指令的狀態並且相應地通知對應的VM 110。NVMe訪問引擎106也將由讀取操作讀取的資料放到資料緩衝器216並且使它可用於VM 110。
在一些實施例中,在主機112上運行的每個VM 110具有被配置為經由PCIe/NVMe鏈路/連接111與NVMe控制器102的NVMe訪問引擎106交互的NVMe驅動器114。在一些實施例中,每個NVMe驅動器114是被配置為與主機112的PCIe/NVMe鏈路/連接111交互並且設立在它的對應的VM 110與NVMe訪問引擎106之間的通信路徑以及接收和傳輸與對應的VM 110關聯的資料的虛擬功能(VF)驅動器。在一些實施例中,VM 110的VF NVMe驅動器114和NVMe訪問引擎106如以上討論的那樣通過SR-IOV PCIe連接相互通信。
在一些實施例中,VM 110在主機112上獨立地運行並且被相互隔離,從而使得一個VM 110不能訪問在相同主機上運行的任何其它VM 110的資料和/或通信。在向和/或從VM 110傳輸命令和/或資料時,對應的VF NVMe驅動器114向和/或從它的佇列和/或資料緩衝器直接地放入和/或取回從NVMe訪問引擎106發送出或者接收的命令和/或資料而主機112或者在相同主機112上運行的任何其它VM 110未訪問資料。
在第一圖的示例中,NVMe控制器102的存儲訪問引擎108被配置為訪問多個非揮發性盤存放裝置/單元並且與它們通信,其中每個存儲單元(可選地)經由到存放裝置的介面222本地耦合到NVMe控制器102(例如,本機存放區設備120)或者按照某些通信協定(比如TCP/IP協定)經由網路通信介面/驅動器220通過網路132可由物理NVMe控制器102遠端地訪問(例如,遠端
存放設備122)。在一些實施例中,遠端存放設備122耦合到存儲訪問引擎108通過網路可訪問的一個或者多個遠端存放設備(未示出)。如這裡所指,本地附接和遠端地可訪問的存放裝置中的每個存放裝置可以是非揮發性(非瞬態)存放裝置,該存放裝置可以是但不限於固態驅動(SSD)、靜態隨機存取記憶體(SRAM)、磁硬碟驅動(HDD)和快閃記憶體驅動。網路132可以是但不限於網際網路、內聯網、廣域網路(WAN)、局域網(LAN)、無線網路、藍牙、WiFi、移動通信網路或者任何其它網路類型。網路的物理連接和通信協定為本領域技術人員所熟知。
在第一圖的示例中,NVMe控制器102的NVMe存儲代理引擎104被配置為彙集在存儲網路通訊協定之下通過網路經由存儲訪問引擎108可訪問的遠端存放設備的卷,並且將遠端存放設備的存儲卷轉換成一個或者多個NVMe名稱空間,每個NVMe名稱空間包括將由在主機112上運行的VM 110訪問的多個邏輯卷/設備(邏輯塊的彙集)。這樣,NVMe名稱空間可以包括卷,這些卷被映射到本地附接到NVMe控制器102的存放裝置和存儲訪問引擎108在存儲網路通訊協定之下遠端地可訪問的存放裝置二者。存儲網路通訊協定用來訪問通過網路可訪問的遠端存放設備,其中這樣的存儲網路通訊協定可以是但不限於網際網路小型電腦系統介面(iSCSI)。iSCSI是用於通過在網路上輸送SCSI命令來聯接資料存放裝置的基於網際協定(IP)的存儲聯網標準。通過支援通過網路對遠端存放設備的訪問,iSCSI增加通過局域網(LAN)、廣域網路(WAN)和網際網路的存儲資料傳輸的能力和性能。
在一些實施例中,NVMe存儲代理引擎104將遠端存放設備組織為VM 110可以訪問並且執行I/O操作的、在NVMe名稱空間中的一個或者多個邏輯或者虛擬卷/塊,如同它們是本機存放區卷。這裡,每個卷被分類為邏輯或者虛擬的,因為它映射到一個或者多個物理存放裝置,該一個或者多個物理存放裝置經由存儲
訪問引擎108本地附接到NVMe控制器102或者可由NVMe控制器102遠端地訪問。在一些實施例中,使在主機112上運行的多個VM 110能夠訪問相同邏輯卷或者虛擬卷,並且可以在多個VM之中共用每個邏輯/虛擬卷。
在一些實施例中,NVMe存儲代理引擎104還包括適配層/填墊(shim)116,該適配層/填墊是配置為管理在NVMe名稱空間與遠端物理存儲卷之間的消息流的軟體部件。具體而言,在經由NVMe訪問引擎106從VM 110接收用於對一個或者多個邏輯卷/名稱空間的存儲操作(例如,讀取/寫入操作)的指令時,適配層/填墊116根據查閱資料表將在NVMe規範之下的指令轉換成在存儲網路通訊協定(比如iSCSI)之下對遠端物理存儲卷的一個或者多個對應的指令。反言之,在經由存儲訪問引擎108接收關於對遠端物理存儲卷執行的存儲操作的結果和/或回饋時,適配層/填墊116也將結果轉換成關於對一個或者多個邏輯卷/名稱空間的操作的回饋並且向VM 110提供這樣的轉換的結果。
在一些實施例中,NVMe存儲代理引擎104如由在第三圖中描繪的非限制性示例所示建立在邏輯卷的NVMe名稱空間Ns_1、...、Ns_m與通過網路可訪問並且被導入到NVMe控制器102的遠端物理存放裝置/卷Vol_1、...、Vol_n之間映射的查閱資料表。這裡,有在NVMe名稱空間與物理存儲卷之間的多到多對應,這意味著一個名稱空間(例如,Ns_2)可以對應於映射到多個遠端物理存儲卷(例如,Vol_2和Vol_3)的邏輯卷,並且單個遠端物理存儲卷也可以被包括在多個邏輯卷中並且經由它們的對應的NVMe名稱空間可由VM 110訪問。
在第一圖的示例中,NVMe控制器102的NVMe訪問引擎106被配置為匯出和呈現遠端物理存放裝置112的NVMe名稱空間和邏輯卷到在主機112上運行的VM 110,作為與那些本地連接的存放裝置120沒有不同的可訪問存放裝置。NVMe訪問引
擎106也被配置為從VM 110接受用於對映射到遠端存放設備122的邏輯卷執行一個或者多個讀取/寫入操作的指令。NVMe控制器102使用iSCSI式存儲網路通訊協定通過網路對遠端存放設備122執行的實際映射和操作對VM 110透明。
第四圖描繪用於支援對作為用於VM的本機存放區設備的遠端存放設備的虛擬化的系統400的示圖的非限制性示例,其中物理NVMe控制器102還包括多個虛擬NVMe控制器或者虛擬功能(VF)402。在第四圖的示例中,多個虛擬NVMe控制器402在單個物理NVMe控制器102上運行並且與單個物理NVMe控制器102交互,其中每個虛擬NVMe控制器402是硬體加速的軟體引擎,該軟體引擎支援對NVMe控制器102的單個根I/O虛擬化(SR-IOV)功能並且與其它虛擬NVMe控制器402共用由NVMe控制器102提供的一個或者多個物理資源。每個虛擬NVMe控制器402代表NVMe控制器102的虛擬化的實例、並且類比在主機112上運行的VM 110之一將訪問的NVMe控制器102的功能。
在一些實施例中,虛擬NVMe控制器402具有與VM 110的一到一對應,其中每個虛擬NVMe控制器104與VM 110中的僅一個VM交互並且允許來自僅一個VM的訪問。每個虛擬NVMe控制器104被指派到VM 110中的一個並且僅一個VM並且專用於支持一個並且僅一個VM訪問它的存放裝置,其中並未跨多個VM 110共用任何單個虛擬NVMe控制器104。
在一些實施例中,每個虛擬NVMe控制器402被配置為支援基於身份的認證和來自它的對應的VM 110的訪問以用於它的操作,其中每個標識允許用於不同命令/指令類型的不同API調用集合,這些命令/指令用來創建、初始化和管理虛擬NVMe控制器402和/或提供對用於VM 110的邏輯卷的訪問。在一些實施例中,虛擬NVMe控制器402使之可用的命令的類型基於通過VM 110請求訪問的用戶類型而變化,並且一些API調用無需任何用戶登
錄。作為非限制性示例,可以利用不同命令類型以初始化和管理在物理NVMe控制器102上運行的虛擬NVMe控制器402。
如在第四圖的示例中所示,每個虛擬NVMe控制器402還可以包括以與以上討論的相應的NVMe存儲代理引擎104和NVMe訪問引擎106相似的方式工作的虛擬NVMe存儲代理引擎404和虛擬NVMe訪問引擎406。在一些實施例中,每個虛擬NVMe控制器402中的虛擬NVMe存儲代理引擎404被配置為經由可以由在物理NVMe控制器102上運行的所有虛擬NVMe控制器402共用的存儲訪問引擎108訪問本地附接的存放裝置120和遠端地可訪問的存放裝置122二者。
在它的操作期間,每個虛擬NVMe控制器402創建和映射一個或者多個NVMe名稱空間中的一個或者多個邏輯卷到通過網路可訪問的多個遠端存放設備122。每個虛擬NVMe控制器402然後向它的在主機112上運行的對應的VM 110呈現邏輯卷的NVMe名稱空間、如同它們是本機存放區卷,並且使VM 110能夠訪問被映射到遠端存放設備122的邏輯卷。
在一些實施例中,在第四圖中描繪的每個虛擬NVMe控制器402具有與它關聯的一對或者多對提交佇列212和完成佇列214,其中每個佇列可以容納來自VM 110之一的多個指令條目。如以上討論的那樣,NQM 204先從主機112的記憶體210向NVMe處理引擎202的等待緩衝器218取讀提交佇列212中的指令。在它的操作期間,每個虛擬NVMe控制器402從等待緩衝器218取回來自它的對應的VM 110的指令並且根據存儲網路通訊協定轉換指令以便通過調用由物理NVMe控制器102提供的VF函數、通過網路對在本機存放區設備120和/或遠端存放設備122上存儲的資料執行讀取/寫入操作。在操作期間,經由到存儲訪問引擎的介面108在VM 110的邏輯卷中向或者從本地/遠端存放設備傳輸或者接收資料。一旦已經處理了操作,虛擬NVMe控制器402就在處理引擎
202的等待緩衝器218中保存執行的指令的狀態,這些指令然後被NQM 204放置到完成佇列214中。也在主機112的記憶體210的資料緩衝器216與NVMe處理引擎202的記憶體208之間傳送有VM 110的指令處理的資料。
第五圖描繪用於支持對經由NVMe控制器通過網路訪問遠端存放設備的虛擬機器從當前/源主機112A向目的地主機112B的遷移的系統500的示圖的非限制性示例。如在第五圖的示例中所示,在物理NVMe控制器102A上運行的虛擬NVMe控制器502A向在當前主機112A上運行的VM 110A呈現被映射到通過網路132可訪問的遠端存放卷122的一個或者多個邏輯卷。VM 110A然後可以在VM 110A從當前主機112A被遷移到物理地耦合到不同物理NVMe控制器102B的另一(目的地)主機112B時,對被映射到遠端存放卷122的邏輯卷執行多個存儲(讀取/寫入)操作。在VM 110A作為新VM實例110B被遷移到目的地主機112B以作為VM 110A的重複時,需要創建新的虛擬NVMe控制器502B以服務於VM 110B的存儲操作。這裡,新的虛擬NVMe控制器502B是虛擬NVMe控制器502A的重複,並且由VM 110A使用的虛擬NVMe控制器502A的所有當前狀態被遷移到虛擬NVMe控制器502B。在一些實施例中,可以如由第五圖中的示例描繪的那樣、從NVMe控制器502A在不同物理NVMe控制器102B上創建新的虛擬NVMe控制器502B(在目的地主機112B物理地耦合到NVMe控制器102B而不是NVMe控制器102A時)。
在對VM 110A的遷移期間,當前主機112A(通過它的管理程式)被配置為允許在第一物理NVMe控制器102A上運行的虛擬NVMe控制器在每VF的基礎上被遷移,例如,僅當前服務於VM 110A的虛擬NVMe控制器502A的狀態被遷移/複製到物理NVMe控制器102B上的新的虛擬NVMe控制器502B,而在物理NVMe控制器102A上運行的其它虛擬NVMe控制器未被影響和/
或遷移。這裡,虛擬NVMe控制器502A的狀態包括但不限於由VM 110A對仍然未決的遠端存放設備122發起的各種存儲操作以及到遠端存放設備122的網路連接的狀態。
作為對VM 110A的遷移的部分,當前主機112A的管理程式被配置為先將當前服務於VM 110A的虛擬NVMe控制器502A置於靜默狀態中,虛擬NVMe控制器502A在該狀態暫時地不活躍或者被禁用、並且停止服務於對遠端存放設備122的存儲操作。一旦NVMe控制器502A在靜默狀態,當前主機112A就被配置為捕獲虛擬NVMe控制器502A的狀態的映射(快照)(經由如以下討論的虛擬NVMe存儲代理引擎504A)、並且在當前主機112A的緩衝器中保存映射。保存的映射然後可以由當前主機112A用來在物理NVMe控制器102B上對新的虛擬NVMe控制器502B進行程式設計/創建,其中新的虛擬NVMe控制器502B具有與在靜默狀態中的虛擬NVMe控制器502A完全相同的狀態。在一些實施例中,映射被移向虛擬NVMe控制器502B。在NVMe控制器502A在靜默狀態中之時,被配置為與虛擬NVMe控制器502A交互的VM 114A的NVMe驅動器114A也被凍結以維持它的當前狀態。
在一些實施例中,虛擬NVMe控制器502A的虛擬NVMe存儲代理引擎504A被配置為對物理NVMe控制器102A上的每虛擬NVMe控制器的寄存器/記憶體208的集合進行利用和程式設計以維持虛擬NVMe控制器502A在它的正常操作期間的狀態資訊。如以上討論的那樣,可以先從運行VM 110A的主機112A的記憶體向NVMe處理引擎202的等待緩衝器218取讀特殊命令/指令。在它的操作期間,虛擬NVMe存儲代理引擎504A從等待緩衝器218取回指令。在從當前主機112A接收特殊命令/指令時,虛擬NVMe存儲代理引擎504A被配置為停止虛擬NVMe控制器502A上的所有資料流程量/傳輸。虛擬NVMe存儲代理引擎504A還被配置為讀取寄存器、並且向主機112A提供在寄存器中存儲的虛擬
NVMe控制器502A的狀態的映射。一旦操作被完成,虛擬NVMe存儲代理引擎504A就在處理引擎202的等待緩衝器218中保存執行的指令的狀態,這些指令然後被放置到NVMe控制器102A的完成佇列214中。
在對VM 110A的遷移期間,當前主機112A被配置為在目的地主機112B上產生實體/創建VM 110B並且將它帶到線上,其中VM 110B是VM 110A的複製/遷移的版本。由VM 110A訪問的各種資源(包括虛擬NVMe控制器502A的當前狀態的映射)也被複製到VM 110B將訪問的目的地主機112B。主機112A或者112B然後被配置為向NVMe控制器102B提交以虛擬NVMe控制器502A的當前狀態的映射作為它的資料的另一特殊命令/指令。虛擬NVMe控制器502B的虛擬NVMe存儲代理引擎504B被配置為從映射讀取用於虛擬NVMe控制器502B的寄存器/記憶體並且對寄存器/記憶體進行程式設計、以將它帶到在虛擬NVMe控制器502A在靜默狀態中時存在的狀態。VM 110B的VF NVMe驅動器114B然後可以從它們被凍結時的狀態發起或者恢復對被映射到遠端存放設備的邏輯卷的存儲操作,而未被對VM 110A的遷移所映射。注意,虛擬NVMe控制器502A和502B二者使用iSCSI式協定讓遠端存放設備的相同集合映射到邏輯卷並分別且匯出到VM 110A和110B。
在一些實施例中,當前主機112A被配置為在VM 110A已經從當前主機112A被遷移到目的地主機112B並且新的虛擬NVMe控制器502B已經被產生實體為服務於遷移的VM 110B之後、重置虛擬NVMe控制器502A的狀態並且重新指派它以服務於另一VM。
第六圖描繪用於支持對經由NVMe控制器通過網路訪問遠端存放設備的虛擬機器從當前主機向目的地主機的活躍遷移的過程的示例的流程圖。雖然這一附圖出於例示的目的而按照特
定順序描繪了功能步驟,但是該過程不限於任何特定步驟順序或者排列。本領域技術人員將認識到,可以用各種方式省略、重新排列、組合和/或適配在這一附圖中繪製的各種步驟。
在第六圖的示例中,流程圖600始於步驟602,其中在第一NVMe控制器上創建第一虛擬NVMe控制器,其中第一虛擬NVMe控制器被配置為使在第一主機上運行的第一虛擬機器(VM)能夠按照存儲網路通訊協定、通過網路訪問被創建或者映射到遠端存放設備的集合的一個或者多個NVMe名稱空間中的一個或者多個邏輯卷、並且對一個或者多個邏輯卷執行多個存儲操作,如同它們是本機存放區卷。流程圖600繼續到步驟604,其中在第一VM從第一主機被遷移到在第二主機上運行的第二VM時,將當前服務於第一VM的第一虛擬NVMe控制器置於靜默狀態中。流程圖600繼續到步驟606,其中捕獲並且在第一主機上保存第一虛擬NVMe控制器的狀態的映射。流程圖600繼續到步驟608,其中使用保存的映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中第二虛擬NVMe控制器被配置為服務於第二VM、並且具有與在靜默狀態中的第一虛擬NVMe控制器完全相同的狀態。流程圖600結束於步驟610,其中第二虛擬NVMe控制器發起和/或恢復對被映射到遠端存放設備的邏輯卷的存儲操作、而未被對在第一主機上運行的第一VM向在第二主機上運行的第二VM的遷移所中斷。
可以至少部分地以用於實現這些過程的由電腦實施的過程和裝置的形式體現這裡描述的方法和系統。也可以至少部分地以用電腦程式代碼編碼的有形、非瞬態機器可讀存儲介質的形式體現公開的方法。介質可以例如包括RAM、ROM、CD-ROM、DVD-ROM、BD-ROM、硬碟驅動、快閃記憶體或者任何其它非瞬態機器可讀存儲介質,其中在電腦程式代碼被載入到電腦並且由電腦執行時,電腦變成用於實現該方法的裝置。也可以至少部分地以
電腦的形式體現方法,電腦程式代碼被載入到該電腦中和/或被執行,從而使得電腦變成用於實現方法的專用電腦。在被實施在通用處理器上時,電腦程式程式碼片段配置處理器以創建具體邏輯電路。可以備選地至少部分地在由用於執行方法的專用積體電路形成的數位訊號處理器中體現方法。
已經出於例示和描述的目的而提供要求保護的主題內容的各種實施例的前文描述。並未旨在於窮舉要求保護的主題內容或者使要求保護的主題內容限於公開的精確形式。許多修改和變化將為本領域技術人員所清楚。選擇和描述實施例以便最佳地描述本發明的原理及其實際應用,由此使本領域技術人員能夠理解要求保護的主題內容、各種實施例和具有與設想的特定使用相適的各種修改。
100‧‧‧系統
102‧‧‧物理NVMe控制器
102A,102B‧‧‧物理NVMe控制器
104‧‧‧NVMe存儲代理引擎
106‧‧‧NVMe訪問引擎
108‧‧‧存儲訪問引擎
108A‧‧‧存儲訪問引擎
108B‧‧‧存儲訪問引擎
110‧‧‧VM
110A‧‧‧VM
110B‧‧‧VM
111‧‧‧PCIe/NVMe連接111
112‧‧‧主機
112A‧‧‧主機
112B‧‧‧主機
114‧‧‧NVMe驅動器
114A‧‧‧NVMe驅動器
114B‧‧‧NVMe驅動器
120‧‧‧存放裝置
122‧‧‧遠端存放卷
132‧‧‧網路
Claims (25)
- 一種用於支持對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)的遷移的系統,包括:在第一物理NVMe控制器上運行的第一虛擬NVMe控制器,所述第一虛擬NVMe控制器在操作中被配置為:使在第一主機上運行的第一VM能夠按照存儲網路通訊協定、通過所述網路訪問被創建並且映射到所述遠端存放設備的一個或者多個NVMe名稱空間中的一個或者多個邏輯卷,並且對所述一個或者多個邏輯卷執行多個存儲操作,如同它們是本機存放區卷;所述第一主機,所述第一主機在操作中被配置為:在所述第一VM從所述第一主機被遷移到在第二主機上運行的第二VM時,將當前服務於所述第一VM的所述第一虛擬NVMe控制器置於靜默狀態中;捕獲並且在所述第一主機上保存所述第一虛擬NVMe控制器的狀態的映射;使用保存的所述映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中所述第二虛擬NVMe控制器被配置為服務於所述第二VM、並且具有與在所述靜默狀態中的所述第一虛擬NVMe控制器完全相同的狀態;在所述第二物理NVMe控制器上運行的所述第二虛擬NVMe控制器,所述第二虛擬NVMe控制器在操作中被配置為:發起和/或恢復對被映射到所述遠端存放設備的所述邏輯卷的所述存儲操作,而不被對在所述第一主機上運行的所述第一VM向在所述第二主機上運行的所述第二VM的所述遷移中斷。
- 根據申請專利範圍第1項所述的系統,其中:所述第一主機和所述第二主機中的每個主機是x86/ARM伺服器。
- 根據申請專利範圍第1項所述的系統,其中:所述第一主機耦合到所述第一物理NVMe控制器,並且所述第二主機耦合到所述第二物理NVMe控制器。
- 根據申請專利範圍第1項所述的系統,其中:所述第一物理NVMe控制器和所述第二物理NVMe控制器不同。
- 根據申請專利範圍第1項所述的系統,其中:所述邏輯卷還包括本地附接到所述物理NVMe控制器的存放裝置。
- 根據申請專利範圍第1項所述的系統,其中:所述存儲網路通訊協定是網際網路小型電腦系統介面(iSCSI)。
- 根據申請專利範圍第1項所述的系統,其中:所述第一虛擬NVMe控制器的所述狀態包括由所述第一VM對被映射到所述遠端存放設備的所述邏輯卷髮起的未決存儲操作和/或到所述遠端存放設備的網路連接的狀態。
- 根據申請專利範圍第1項所述的系統,其中:所述第一虛擬NVMe控制器在所述靜默狀態暫時地不活躍或者被禁用、並且停止服務於對所述遠端存放設備的所述存儲操作。
- 根據申請專利範圍第1項所述的系統,其中:所述第一虛擬NVMe控制器被配置為利用所述第一物理NVMe控制器上的每個所述第一虛擬NVMe控制器的寄存器的集合並且對所述寄存器的集合程式設計以維持所述第一虛擬NVMe控制器在它的正常操作期間的狀態資訊。
- 根據申請專利範圍第1項所述的系統,其中:所述第一主機被配置為允許在所述第一物理NVMe控制器上運行的所述第一虛擬NVMe控制器在每VF基礎上被遷移,其中僅當前服務於所述第一VM的所述第一虛擬NVMe控制器的所述狀 態被遷移/複製到所述第二物理NVMe控制器上的所述第二虛擬NVMe控制器、而在所述第一物理NVMe控制器上運行的其它虛擬NVMe控制器不被影響和/或遷移。
- 根據申請專利範圍第1項所述的系統,還包括:所述第一主機被配置為在所述第一VM已經從所述第一主機被遷移到所述第二主機並且所述第二虛擬NVMe控制器已經被產生實體為服務於遷移的所述第二VM之後,重置所述第一虛擬NVMe控制器的所述狀態、並且重新指派它以服務於另一VM。
- 根據申請專利範圍第1項所述的系統,其中:所述第二虛擬NVMe控制器被配置為從所述映射讀取每所述第二虛擬NVMe控制器的寄存器的集合並且在所述第一物理NVMe控制器上對所述寄存器的集合程式設計以將所述第二虛擬NVMe控制器帶到在所述第一虛擬NVMe控制器在所述靜默狀態中時存在的所述狀態。
- 根據申請專利範圍第1項所述的系統,其中:所述第一虛擬NVMe控制器和所述第二虛擬NVMe控制器二者使用所述存儲網路通訊協定分別使相同的遠端存放設備的集合被映射到所述邏輯卷並且被匯出到所述第一VM和所述第二VM。
- 一種用於支持對經由非揮發性記憶體快速(NVMe)控制器、通過網路訪問遠端存放設備的集合的虛擬機器(VM)的遷移的電腦實施的方法,包括:使在第一主機上運行的第一VM能夠按照存儲網路通訊協定、通過所述網路訪問被創建並且映射到所述遠端存放設備的一個或者多個NVMe名稱空間中的一個或者多個邏輯卷,並且對所述一個或者多個邏輯卷執行多個存儲操作,如同它們是本機存放區卷;在所述第一VM從所述第一主機被遷移到在第二主機上運行的第二VM時,將在當前服務於所述第一VM的第一物理NVMe控制器上運行的第一虛擬NVMe控制器置於靜默狀態中; 捕獲並且在所述第一主機上保存所述第一虛擬NVMe控制器的狀態的映射;使用保存的所述映射在第二物理NVMe控制器上創建第二虛擬NVMe控制器,其中所述第二虛擬NVMe控制器被配置為服務於所述第二VM並且具有與在所述靜默狀態中的所述第一虛擬NVMe控制器完全相同的狀態;發起和/或恢復對被映射到所述遠端存放設備的所述邏輯卷的所述存儲操作,而不被對在所述第一主機上運行的所述第一VM向在所述第二主機上運行的所述第二VM的所述遷移中斷。
- 根據申請專利範圍第14項所述的方法,其中:所述第一主機耦合到所述第一物理NVMe控制器,並且所述第二主機耦合到所述第二物理NVMe控制器。
- 根據申請專利範圍第14項所述的方法,其中:所述第一物理NVMe控制器和所述第二物理NVMe控制器不同。
- 根據申請專利範圍第14項所述的方法,其中:所述邏輯卷還包括本地附接到所述物理NVMe控制器的存放裝置。
- 根據申請專利範圍第14項所述的方法,其中:所述存儲網路通訊協定是網際網路小型電腦系統介面(iSCSI)。
- 根據申請專利範圍第14項所述的方法,其中:所述第一虛擬NVMe控制器的所述狀態包括由所述第一VM對被映射到所述遠端存放設備的所述邏輯卷髮起的未決存儲操作和/或到所述遠端存放設備的網路連接的狀態。
- 根據申請專利範圍第14項所述的方法,其中:所述第一虛擬NVMe控制器在所述靜默狀態暫時地不活躍或者被禁用、並且停止服務於對所述遠端存放設備的所述存儲操作。
- 根據申請專利範圍第14項所述的方法,還包括:利用所述第一物理NVMe控制器上的每所述第一虛擬NVMe控制器的寄存器的集合並且對所述寄存器的集合程式設計以維持所述第一虛擬NVMe控制器在它的正常操作期間的狀態資訊。
- 根據申請專利範圍第14所述的方法,還包括:允許在所述第一物理NVMe控制器上運行的所述第一虛擬NVMe控制器在每VF基礎上被遷移,其中僅當前服務於所述第一VM的所述第一虛擬NVMe控制器的所述狀態被遷移/複製到所述第二物理NVMe控制器上的所述第二虛擬NVMe控制器、而在所述第一物理NVMe控制器上運行的其它虛擬NVMe控制器不被影響和/或遷移。
- 根據申請專利範圍第14項所述的方法,還包括:在所述第一VM已經從所述第一主機被遷移到所述第二主機並且所述第二虛擬NVMe控制器已經被產生實體為服務於遷移的所述第二VM之後,重置所述第一虛擬NVMe控制器的所述狀態、並且重新指派它以服務於另一VM。
- 根據申請專利範圍第14項所述的方法,還包括:從所述映射讀取每所述第二虛擬NVMe控制器的寄存器的集合並且在所述第一物理NVMe控制器上對所述寄存器的集合程式設計以將所述第二虛擬NVMe控制器帶到在所述第一虛擬NVMe控制器在所述靜默狀態中時存在的所述狀態。
- 根據申請專利範圍第14項所述的方法,還包括:使用所述存儲網路通訊協定、分別經由所述第一虛擬NVMe控制器和所述第二虛擬NVMe控制器、將相同的遠端存放設備的集合映射到所述邏輯卷並且匯出到所述第一VM和所述第二VM。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461987956P | 2014-05-02 | 2014-05-02 | |
US14/300,552 US9294567B2 (en) | 2014-05-02 | 2014-06-10 | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller |
US14/496,916 US9819739B2 (en) | 2014-05-02 | 2014-09-25 | Systems and methods for supporting hot plugging of remote storage devices accessed over a network via NVME controller |
US14/537,758 US9430268B2 (en) | 2014-05-02 | 2014-11-10 | Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers |
US14/537,758 | 2014-11-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617918A true TW201617918A (zh) | 2016-05-16 |
TWI647573B TWI647573B (zh) | 2019-01-11 |
Family
ID=54355305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104111571A TWI647573B (zh) | 2014-05-02 | 2015-04-10 | 用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9430268B2 (zh) |
TW (1) | TWI647573B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984420A (zh) * | 2017-05-31 | 2018-12-11 | 希捷科技有限公司 | 管理非易失性存储器(nvm)中的多个名称空间 |
US10838762B2 (en) | 2017-11-30 | 2020-11-17 | Industrial Technology Research Institute | Method and device for live migration of virtual machine in a multi-root I/O virtualization environment and computing host thereof |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176773B2 (en) * | 2011-06-29 | 2015-11-03 | Microsoft Technology Licensing, Llc | Virtual machine migration tool |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US11243707B2 (en) | 2014-03-12 | 2022-02-08 | Nutanix, Inc. | Method and system for implementing virtual machine images |
WO2015194005A1 (ja) | 2014-06-19 | 2015-12-23 | 株式会社日立製作所 | ストレージ装置およびインタフェース装置 |
US9836327B1 (en) * | 2015-06-12 | 2017-12-05 | Amazon Technologies, Inc. | Network-based storage access control for migrating live storage clients |
US10613947B2 (en) * | 2016-06-09 | 2020-04-07 | Nutanix, Inc. | Saving and restoring storage devices using application-consistent snapshots |
CN112347012B (zh) * | 2016-06-20 | 2024-07-23 | 北京忆芯科技有限公司 | 支持SR-IOV的NVMe控制器及方法 |
US10282094B2 (en) | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
US10958729B2 (en) * | 2017-05-18 | 2021-03-23 | Intel Corporation | Non-volatile memory express over fabric (NVMeOF) using volume management device |
KR102410671B1 (ko) * | 2017-11-24 | 2022-06-17 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법 |
US10824522B2 (en) | 2017-11-27 | 2020-11-03 | Nutanix, Inc. | Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications |
US10877682B2 (en) * | 2019-01-10 | 2020-12-29 | Western Digital Technologies, Inc. | Non-disruptive cross-protocol live data migration |
US10972347B2 (en) | 2019-01-16 | 2021-04-06 | Hewlett Packard Enterprise Development Lp | Converting a first cloud network to second cloud network in a multi-cloud environment |
US11593137B2 (en) | 2019-08-30 | 2023-02-28 | Nutanix, Inc. | Hypervisor hibernation |
CN113051206B (zh) * | 2020-05-04 | 2024-10-18 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
KR20220003757A (ko) | 2020-07-02 | 2022-01-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
JP7154261B2 (ja) * | 2020-09-25 | 2022-10-17 | 株式会社日立製作所 | 複合型ストレージシステム |
US11972266B2 (en) | 2020-10-02 | 2024-04-30 | Nutanix, Inc. | Hibernating and resuming nodes of a computing cluster |
KR20220055034A (ko) | 2020-10-26 | 2022-05-03 | 삼성전자주식회사 | 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
WO2024098232A1 (en) * | 2022-11-08 | 2024-05-16 | Intel Corporation | Adaptive live migration of a virtual machine for a physical storage device controller |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5329318A (en) | 1993-05-13 | 1994-07-12 | Intel Corporation | Method for optimizing image motion estimation |
US6988025B2 (en) | 2000-11-28 | 2006-01-17 | Power Measurement Ltd. | System and method for implementing XML on an energy management device |
US20050060590A1 (en) | 2003-09-16 | 2005-03-17 | International Business Machines Corporation | Power-aware workload balancing usig virtual machines |
US20080235293A1 (en) | 2007-03-20 | 2008-09-25 | International Business Machines Corporation | Method for enhanced file system directory recovery |
US8239646B2 (en) | 2007-07-31 | 2012-08-07 | Vmware, Inc. | Online virtual machine disk migration |
GB2460841B (en) | 2008-06-10 | 2012-01-11 | Virtensys Ltd | Methods of providing access to I/O devices |
US20100082922A1 (en) * | 2008-09-30 | 2010-04-01 | Vmware, Inc. | Virtual machine migration using local storage |
US8214539B1 (en) | 2009-02-23 | 2012-07-03 | Kulanko Robert J | Command mapping systems relating input devices to application program interfaces |
US8219676B2 (en) | 2009-06-22 | 2012-07-10 | Citrix Systems, Inc. | Systems and methods for web logging of trace data in a multi-core system |
US8799418B2 (en) * | 2010-01-13 | 2014-08-05 | Vmware, Inc. | Cluster configuration |
US9959147B2 (en) * | 2010-01-13 | 2018-05-01 | Vmware, Inc. | Cluster configuration through host ranking |
US8291135B2 (en) * | 2010-01-15 | 2012-10-16 | Vmware, Inc. | Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode |
US8239655B2 (en) * | 2010-01-18 | 2012-08-07 | Vmware, Inc. | Virtual target addressing during direct data access via VF of IO storage adapter |
US9141580B2 (en) * | 2010-03-23 | 2015-09-22 | Citrix Systems, Inc. | Systems and methods for monitoring and maintaining consistency of a configuration |
US8700745B2 (en) * | 2010-04-30 | 2014-04-15 | Sap Ag | Life-cycle management of multi-tenant SAAS applications |
US8489699B2 (en) * | 2010-08-13 | 2013-07-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over SR IOV adapter |
US9582319B2 (en) * | 2010-08-13 | 2017-02-28 | International Business Machines Corporation | Migrating virtual machines across network separated data centers |
US8756441B1 (en) | 2010-09-30 | 2014-06-17 | Emc Corporation | Data center energy manager for monitoring power usage in a data storage environment having a power monitor and a monitor module for correlating associative information associated with power consumption |
WO2012042509A1 (en) | 2010-10-01 | 2012-04-05 | Peter Chacko | A distributed virtual storage cloud architecture and a method thereof |
US20120110259A1 (en) | 2010-10-27 | 2012-05-03 | Enmotus Inc. | Tiered data storage system with data management and method of operation thereof |
US20120117558A1 (en) * | 2010-11-04 | 2012-05-10 | Microsoft Corporation | Mobile application migration service |
US8707301B2 (en) * | 2010-11-08 | 2014-04-22 | Microsoft Corporation | Insertion of management agents during machine deployment |
US8903882B2 (en) | 2010-12-13 | 2014-12-02 | International Business Machines Corporation | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US8819678B2 (en) * | 2010-12-15 | 2014-08-26 | Red Hat Israel, Ltd. | Live migration of a guest from a source hypervisor to a target hypervisor |
US9098214B1 (en) * | 2010-12-28 | 2015-08-04 | Amazon Technologies, Inc. | Managing virtual machine migration |
US9891939B2 (en) * | 2011-03-03 | 2018-02-13 | Microsoft Technology Licensing, Llc | Application compatibility with library operating systems |
US8490092B2 (en) * | 2011-07-06 | 2013-07-16 | Microsoft Corporation | Combined live migration and storage migration using file shares and mirroring |
KR101824295B1 (ko) | 2011-08-12 | 2018-01-31 | 샌디스크 테크놀로지스 엘엘씨 | 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 |
CN102369713B (zh) * | 2011-08-29 | 2014-04-02 | 华为技术有限公司 | 系统配置项的自动迁移方法和设备 |
US8966172B2 (en) * | 2011-11-15 | 2015-02-24 | Pavilion Data Systems, Inc. | Processor agnostic data storage in a PCIE based shared storage enviroment |
CN104246742B (zh) | 2012-01-17 | 2017-11-10 | 英特尔公司 | 用于远程客户端访问存储设备的命令验证的技术 |
US8892684B2 (en) | 2012-05-25 | 2014-11-18 | Microsoft Corporation | Dynamic selection of resources for compression in a content delivery network |
US20140007189A1 (en) | 2012-06-28 | 2014-01-02 | International Business Machines Corporation | Secure access to shared storage resources |
US9563480B2 (en) | 2012-08-21 | 2017-02-07 | Rackspace Us, Inc. | Multi-level cloud computing system |
US9405355B2 (en) * | 2012-08-21 | 2016-08-02 | Micron Technology, Inc. | Memory operation power management by data transfer time adjustment |
US9154157B2 (en) | 2012-09-27 | 2015-10-06 | Intel Corporation | Search unit to accelerate variable length compression/decompression |
CN103793217B (zh) * | 2012-10-31 | 2017-03-01 | 国际商业机器公司 | 用于软件快速配置的方法和系统 |
US9122515B2 (en) | 2012-12-19 | 2015-09-01 | Dell Products L.P. | Completion notification for a storage device |
US20140195634A1 (en) * | 2013-01-10 | 2014-07-10 | Broadcom Corporation | System and Method for Multiservice Input/Output |
US9003071B2 (en) | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US9292331B2 (en) | 2013-03-15 | 2016-03-22 | Bracket Computing, Inc. | Expansion of services for a virtual data center guest |
US9785527B2 (en) * | 2013-03-27 | 2017-10-10 | Ixia | Methods, systems, and computer readable media for emulating virtualization resources |
US9756128B2 (en) | 2013-04-17 | 2017-09-05 | Apeiron Data Systems | Switched direct attached shared storage architecture |
US20140331001A1 (en) | 2013-05-02 | 2014-11-06 | Lsi Corporation | Command Barrier for a Solid State Drive Controller |
US9015650B2 (en) * | 2013-06-03 | 2015-04-21 | Microsoft Technology Licensing, Llc | Unified datacenter storage model |
KR20150047784A (ko) | 2013-10-25 | 2015-05-06 | 삼성전자주식회사 | 서버 시스템 및 스토리지 시스템 |
US9300552B2 (en) * | 2013-12-16 | 2016-03-29 | International Business Machines Corporation | Scaling a cloud infrastructure |
US9195401B2 (en) * | 2014-02-18 | 2015-11-24 | University Of Florida Research Foundation, Inc. | Method and apparatus for virtual machine live storage migration in heterogeneous storage environment |
US10705865B2 (en) * | 2014-02-25 | 2020-07-07 | Red Hat, Inc. | Disk resize of a virtual machine |
-
2014
- 2014-11-10 US US14/537,758 patent/US9430268B2/en active Active
-
2015
- 2015-04-10 TW TW104111571A patent/TWI647573B/zh active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984420A (zh) * | 2017-05-31 | 2018-12-11 | 希捷科技有限公司 | 管理非易失性存储器(nvm)中的多个名称空间 |
US10838762B2 (en) | 2017-11-30 | 2020-11-17 | Industrial Technology Research Institute | Method and device for live migration of virtual machine in a multi-root I/O virtualization environment and computing host thereof |
Also Published As
Publication number | Publication date |
---|---|
TWI647573B (zh) | 2019-01-11 |
US20150317177A1 (en) | 2015-11-05 |
US9430268B2 (en) | 2016-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI647573B (zh) | 用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法 | |
US9819739B2 (en) | Systems and methods for supporting hot plugging of remote storage devices accessed over a network via NVME controller | |
US9529773B2 (en) | Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller | |
US9501245B2 (en) | Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host | |
US20160077740A1 (en) | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller | |
CN110063051B (zh) | 用于重新配置服务器的系统和方法以及服务器 | |
US20180032249A1 (en) | Hardware to make remote storage access appear as local in a virtualized environment | |
US9495189B2 (en) | Live replication of a virtual machine exported and imported via a portable storage device | |
US9733980B1 (en) | Virtual machine management using I/O device logging | |
US11940933B2 (en) | Cross address-space bridging | |
US11606429B2 (en) | Direct response to IO request in storage system having an intermediary target apparatus | |
US20150261434A1 (en) | Storage system and server | |
US20150261720A1 (en) | Accessing remote storage devices using a local bus protocol | |
US10628196B2 (en) | Distributed iSCSI target for distributed hyper-converged storage | |
US11487432B2 (en) | Direct response to IO request in storage system with remote replication | |
US20170031852A1 (en) | Transaction request optimization for redirected usb devices over a network | |
US20190007483A1 (en) | Server architecture having dedicated compute resources for processing infrastructure-related workloads | |
US9760524B2 (en) | System and method to redirect UASP mass storage devices to an unsupported operating system in a VDI environment | |
US9135043B1 (en) | Interface for enabling an application in a virtual machine to access high performance devices | |
WO2016188014A1 (zh) | 数据存储方法和装置 | |
US11301156B2 (en) | Virtual disk container and NVMe storage management system and method | |
US11601515B2 (en) | System and method to offload point to multipoint transmissions | |
US10613890B2 (en) | Efficient I/O request handling |