虛擬機(jī)內(nèi)存管理方法、物理主機(jī)、pcie設(shè)備及其配置方法以及遷移管理設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及虛擬機(jī)領(lǐng)域,特別涉及一種虛擬機(jī)內(nèi)存管理方法、物理主機(jī)、PCIE設(shè)備 及其配置方法以及迀移管理設(shè)備。
【背景技術(shù)】
[0002] 在典型的虛擬機(jī)應(yīng)用架構(gòu)中,一臺(tái)物理主機(jī)上安裝具有管理虛擬機(jī)功能的虛擬機(jī) 管理器(英文:Virtual Machine Manager,簡(jiǎn)稱:VMM),由VMM管理一個(gè)或多個(gè)虛擬機(jī),每個(gè) 虛擬機(jī)上可以運(yùn)行操作系統(tǒng)(英文〖Operating System,簡(jiǎn)稱:OS)以及各種應(yīng)用。一般物理 主機(jī)的硬件主要包括:一部分跟運(yùn)行虛擬機(jī)相關(guān)的硬件,例如中央處理器(英文=Central Processing Unit,簡(jiǎn)稱:CPU)、內(nèi)存、硬盤等,以及一部分不直接用于運(yùn)行虛擬機(jī),而用于執(zhí) 行一些特定業(yè)務(wù),且功能相對(duì)獨(dú)立的硬件,例如物理主機(jī)內(nèi)的快捷外圍部件互連標(biāo)準(zhǔn)(英 文:Peripheral Component Interconnection Express,簡(jiǎn)稱:PCIE)設(shè)備(如網(wǎng)卡適配器、 顯卡等)。
[0003] 單根I/O虛擬化(英文:Single_Root I/O Virtualization,簡(jiǎn)稱:SR-I0V)是一種 輸入輸出(英文:Input/output,簡(jiǎn)稱:1/0)虛擬化技術(shù),該技術(shù)可以在一個(gè)物理PCIE適配 器上虛擬化出多個(gè)虛擬的PCIE適配器,稱之為虛擬功能(英文:Virtual function,簡(jiǎn)稱: VF)。以支持SR-IOV的網(wǎng)卡適配器為例,一塊物理網(wǎng)卡適配器可以虛擬出多個(gè)虛擬網(wǎng)卡適 配器,每臺(tái)虛擬機(jī)中的VF對(duì)應(yīng)一塊虛擬網(wǎng)卡適配器。
[0004] 服務(wù)器在實(shí)現(xiàn)虛擬化后,可以方便地實(shí)現(xiàn)虛擬機(jī)熱迀移。虛擬機(jī)熱迀移技術(shù)是指 通過熱迀移將虛擬機(jī)從一臺(tái)物理主機(jī)中轉(zhuǎn)移到另一臺(tái)物理主機(jī)中,而該迀移過程對(duì)業(yè)務(wù)處 理的影響很小。
[0005] 在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0006] 在現(xiàn)有技術(shù)中,虛擬機(jī)熱迀移時(shí)除了需要將內(nèi)存中存儲(chǔ)的數(shù)據(jù)迀移到目標(biāo)物理主 機(jī)外,還需要將保存在PCIE適配器上的寄存器的狀態(tài)迀移到目標(biāo)物理主機(jī),這些寄存器通 常是配置來記錄PCIE適配器處理的業(yè)務(wù)的工作信息,該工作信息用于業(yè)務(wù)的統(tǒng)計(jì)、控制和 業(yè)務(wù)狀態(tài)記錄。但保存業(yè)務(wù)的工作信息的寄存器非常分散,如果進(jìn)行熱迀移,這些寄存器狀 態(tài)的保存和恢復(fù),需要逐個(gè)地獨(dú)立保存和恢復(fù),非常麻煩。
【發(fā)明內(nèi)容】
[0007] 為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種虛擬機(jī)內(nèi)存管理方法、物理 主機(jī)、PCIE設(shè)備及其配置方法以及迀移管理設(shè)備。所述技術(shù)方案如下:
[0008] 第一方面,本發(fā)明實(shí)施例提供了一種虛擬機(jī)內(nèi)存管理方法,所述虛擬機(jī)運(yùn)行在物 理主機(jī)上,所述物理主機(jī)與快捷外圍部件互連標(biāo)準(zhǔn)PCIE設(shè)備連接,所述PCIE設(shè)備為一個(gè) 支持單根輸入輸出虛擬化SR-IOV標(biāo)準(zhǔn)的硬件設(shè)備,所述PCIE設(shè)備包括至少一個(gè)物理功能 PF以及至少一個(gè)虛擬功能VF,其中,每個(gè)PF和每個(gè)VF都配置有唯一的功能號(hào),所述方法包 括:
[0009] 所述虛擬機(jī)為所述PCIE設(shè)備承載的至少一個(gè)業(yè)務(wù)分配內(nèi)存,分配給每個(gè)業(yè)務(wù)的 內(nèi)存均包括多個(gè)內(nèi)存塊,所述多個(gè)內(nèi)存塊用于保存對(duì)應(yīng)的業(yè)務(wù)的工作信息,每個(gè)內(nèi)存塊為 一段客戶機(jī)的物理地址連續(xù)的內(nèi)存空間;
[0010] 所述虛擬機(jī)根據(jù)分配給所述每個(gè)業(yè)務(wù)的內(nèi)存,生成基址表BAT和芯片邏輯地址表 CLAT,所述BAT包括與所述每個(gè)業(yè)務(wù)對(duì)應(yīng)的所述CLAT表項(xiàng)的基址,所述CLAT包括所述每個(gè) 內(nèi)存塊的首地址;
[0011] 所述虛擬機(jī)將所述BAT的地址及所述虛擬機(jī)對(duì)應(yīng)的功能號(hào)發(fā)送給所述PCIE設(shè)備。
[0012] 在第一方面的第一種可能的實(shí)施方式中,所述至少一個(gè)業(yè)務(wù)包括待處理業(yè)務(wù),所 述方法還包括:
[0013] 接收所述PCIE設(shè)備發(fā)送的用于獲取所述待處理業(yè)務(wù)的工作信息的請(qǐng)求消息,所 述請(qǐng)求消息包括所述BAT的地址、所述待處理業(yè)務(wù)的業(yè)務(wù)類型及所述待處理業(yè)務(wù)的業(yè)務(wù)編 號(hào);
[0014] 根據(jù)所述請(qǐng)求消息將所述待處理業(yè)務(wù)對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述 PCIE設(shè)備。
[0015] 根據(jù)第一方面的第一種可能的實(shí)施方式,所述根據(jù)所述請(qǐng)求消息將所述待處理業(yè) 務(wù)對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述PCIE設(shè)備,包括:
[0016] 獲取所述BAT的地址對(duì)應(yīng)的BAT ;
[0017] 根據(jù)所述待處理業(yè)務(wù)的業(yè)務(wù)類型及所述BAT,確定所述業(yè)務(wù)類型對(duì)應(yīng)的所述CLAT 表項(xiàng)的基址;
[0018] 根據(jù)所述待處理業(yè)務(wù)的業(yè)務(wù)編號(hào)確定表項(xiàng)偏移;
[0019] 根據(jù)所述CLAT表項(xiàng)的基址及所述表項(xiàng)偏移,獲取所述待處理業(yè)務(wù)對(duì)應(yīng)的CLAT表 項(xiàng);
[0020] 將所述待處理業(yè)務(wù)對(duì)應(yīng)的CLAT表項(xiàng)所對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述 PCIE設(shè)備。
[0021] 根據(jù)第一方面的第二種可能的實(shí)施方式,在第一方面的第三種可能的實(shí)施方式 中,所述CLAT包括:?jiǎn)渭?jí)CLAT或多級(jí)CLAT ;所述多級(jí)CLAT包括N級(jí)CLAT,其中,N彡2且 N為整數(shù),每級(jí)CLAT均包括多條表項(xiàng),第η級(jí)CLAT的每一條表項(xiàng)分別用于指示一個(gè)第n+1 級(jí)CLAT的地址,其中,2彡η < n+1 < N且η為整數(shù),第N級(jí)CLAT的每一條表項(xiàng)分別用于指 示一個(gè)所述內(nèi)存塊的首地址。
[0022] 根據(jù)第一方面的第三種可能的實(shí)施方式,在第一方面的第四種可能的實(shí)施方式 中,所述待處理業(yè)務(wù)所分配到的所述多個(gè)內(nèi)存塊的大小相同;
[0023] 所述根據(jù)所述待處理業(yè)務(wù)的業(yè)務(wù)編號(hào)確定表項(xiàng)偏移,包括:
[0024] 當(dāng)所述CLAT為單級(jí)CLAT時(shí),將所述待處理業(yè)務(wù)的業(yè)務(wù)編號(hào)與所述待處理業(yè)務(wù)的 工作信息所用內(nèi)存大小相乘,再將相乘的結(jié)果除以所述待處理業(yè)務(wù)所分配到的內(nèi)存塊的大 小,得到單級(jí)CLAT的商和余數(shù),當(dāng)所述單級(jí)CLAT的余數(shù)大于0時(shí),所述表項(xiàng)偏移等于所述 單級(jí)CLAT的商,當(dāng)所述單級(jí)CLAT的余數(shù)等于0時(shí),所述表項(xiàng)偏移等于所述單級(jí)CLAT的商 減1 ;
[0025] 當(dāng)所述CLAT為多級(jí)CLAT時(shí),所述表項(xiàng)偏移包括所述每級(jí)CLAT的表項(xiàng)偏移,采用 下述方式計(jì)算第X級(jí)CLAT的表項(xiàng)偏移:
[0026]
【主權(quán)項(xiàng)】
1. 一種虛擬機(jī)內(nèi)存管理方法,其特征在于,所述虛擬機(jī)運(yùn)行在物理主機(jī)上,所述物理主 機(jī)與快捷外圍部件互連標(biāo)準(zhǔn)PCIE設(shè)備連接,所述PCIE設(shè)備為一個(gè)支持單根輸入輸出虛擬 化SR-IOV標(biāo)準(zhǔn)的硬件設(shè)備,所述PCIE設(shè)備包括至少一個(gè)物理功能PF以及至少一個(gè)虛擬功 能VF,其中,每個(gè)PF和每個(gè)VF都配置有唯一的功能號(hào),所述方法包括: 所述虛擬機(jī)為所述PCIE設(shè)備承載的至少一個(gè)業(yè)務(wù)分配內(nèi)存,分配給每個(gè)業(yè)務(wù)的內(nèi)存 均包括多個(gè)內(nèi)存塊,所述多個(gè)內(nèi)存塊用于保存對(duì)應(yīng)的業(yè)務(wù)的工作信息,每個(gè)內(nèi)存塊為一段 客戶機(jī)的物理地址連續(xù)的內(nèi)存空間; 所述虛擬機(jī)根據(jù)分配給所述每個(gè)業(yè)務(wù)的內(nèi)存,生成基址表BAT和芯片邏輯地址表 CLAT,所述BAT包括與所述每個(gè)業(yè)務(wù)對(duì)應(yīng)的所述CLAT表項(xiàng)的基址,所述CLAT包括所述每個(gè) 內(nèi)存塊的首地址; 所述虛擬機(jī)將所述BAT的地址及所述虛擬機(jī)對(duì)應(yīng)的功能號(hào)發(fā)送給所述PCIE設(shè)備。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)業(yè)務(wù)包括待處理業(yè)務(wù),所述 方法還包括: 接收所述PCIE設(shè)備發(fā)送的用于獲取所述待處理業(yè)務(wù)的工作信息的請(qǐng)求消息,所述請(qǐng) 求消息包括所述BAT的地址、所述待處理業(yè)務(wù)的業(yè)務(wù)類型及所述待處理業(yè)務(wù)的業(yè)務(wù)編號(hào); 根據(jù)所述請(qǐng)求消息將所述待處理業(yè)務(wù)對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述PCIE設(shè) 備。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述請(qǐng)求消息將所述待處理業(yè) 務(wù)對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述PCIE設(shè)備,包括: 獲取所述BAT的地址對(duì)應(yīng)的BAT ; 根據(jù)所述待處理業(yè)務(wù)的業(yè)務(wù)類型及所述BAT,確定所述業(yè)務(wù)類型對(duì)應(yīng)的所述CLAT表項(xiàng) 的基址; 根據(jù)所述待處理業(yè)務(wù)的業(yè)務(wù)編號(hào)確定表項(xiàng)偏移; 根據(jù)所述CLAT表項(xiàng)的基址及所述表項(xiàng)偏移,獲取所述待處理業(yè)務(wù)對(duì)應(yīng)的CLAT表項(xiàng); 將所述待處理業(yè)務(wù)對(duì)應(yīng)的CLAT表項(xiàng)所對(duì)應(yīng)的內(nèi)存塊中的工作信息發(fā)送給所述PCIE設(shè) 備。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述CLAT包括:?jiǎn)渭?jí)CLAT或多級(jí)CLAT ;所述多級(jí)CLAT包括N級(jí)CLAT,其中,N彡2且 N為整數(shù),每級(jí)CLAT均包括多條表項(xiàng)