System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及一種虛擬機磁盤分區和加速方法,屬于nvme固態硬盤。
技術介紹
1、nvme固態硬盤的普遍使用使云服務器的性能得到了顯著的提升,但云服務器的使用方式一般為虛擬化,使用虛擬化層將虛擬機的磁盤映射為宿主機上的一個文件,由于文件的讀寫需要經過宿主機的系統調用,因此這種方式不能充分發揮nvme固態硬盤的性能優勢。同時,由于u.2等形態的nvme磁盤的大量使用,nvme磁盤的容量越來越大,虛擬機獨占一整個nvme磁盤設備的狀況變得不再現實。
2、針對上述性能問題,現有技術的做法是使用虛擬機virtio驅動,在虛擬機中創建一個虛擬磁盤設備,將對虛擬磁盤的寫入指令透傳到宿主機的nvme磁盤中。但是這樣的方式無法使得多虛擬機復用同一nvme磁盤,為解決這一問題,采用文件進行管理的方式,例如esxi使用vmdk格式作為存儲虛擬機磁盤,qemu使用qcow2存儲虛擬機磁盤,針對虛擬機磁盤實際占用的空間做出了一定優化,但性能依舊具有一定的妥協。
技術實現思路
1、本專利技術所要解決的技術問題是:對于nvme磁盤與虛擬磁盤,如何提高多租戶之間磁盤的隔離性和安全性。
2、為解決上述技術問題,本專利技術提供一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,包括以下步驟:
3、步驟一.對虛擬機磁盤進行分區,指定虛擬機磁盤分區格式和虛擬機磁盤元數據格式,指定分區在gpt分區表上的布局;在宿主機的gpt分區表的首末2個gpt?record中記錄前n-1個分區格式為
4、步驟二:在hypervisor中進行nvme磁盤透傳。
5、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟一中,dvmfs是虛擬機虛擬磁盤存儲的區域,包括以下字段:
6、1)fs?header:用于識別文件系統的頭部;
7、2)metadata:保存當前分區的信息;
8、3)?next?file?system?ptr和prev?file?system?ptr用于指示當前分區上一個連續空間和下一個連續空間的lba地址以快速尋址。
9、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟一中,在hypervisor中,利用算法1調整虛擬機的磁盤容量,包括擴展和縮小磁盤的操作,包括以下步驟:
10、1)利用adjustvmdisk(vmdisk,?dst_size,?force?=?false)函數進行調用操作,輸入參數包括虛擬磁盤對象vmdisk、目標大小dst_size以及一個強制參數force;
11、2)如果dst_size小于或等于0,拋出參數錯誤異常paramerrorexception;
12、3)如果目標大小dst_size小于當前磁盤大小,并且force為true,則調用shrinkvmdisk(vmdisk,?dst_size)?函數進行縮小操作;
13、4)如果force為false、且目標大小小于當前磁盤大小時,拋出數據丟失異常datalossexception;
14、5)如果目標大小dst_size大于當前磁盤大小,則調用expandvmdisk(vmdisk,dst_size)?函數進行擴展操作。
15、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟3)中,縮小磁盤過程shrinkvmdisk(vmdisk,?dst_size)包括:
16、31)計算出需要縮小的大小nr_size,即當前大小減去目標大小;
17、32)當nr_size大于0時,執行以下步驟:
18、遞歸訪問分區的nextptr所指向的分區,直到尋找到虛擬磁盤的最后一個主機分區;
19、檢查虛擬磁盤的最后一個主機分區的大小是否大于或等于nr_size;
20、如果是,調用cutdvmfs函數進行切割,同時將nr_size置為0;cutdvmfs函數將目標分區的大小設置為【原始大小-nr_size】,并修改dvmfs的metadata部分,將nextptr修改為null,更新vmfr部分該分區大小的字段,最后利用該dvmfs分區的實際占用lba位置來更新vmfr中的占用空間位表;
21、如果不是,將nr_size減去該分區的大小,并刪除該分區,將該分區的vmfr分區元數據刪除,并將上一個dvmfs分區的nextptr設置為null,最后更新vmfr上的占用空間位表。
22、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟5)中,擴展磁盤過程expandvmdisk(vmdisk,?dest_size)包括:
23、51)計算出需要擴展的大小nr_size,即目標大小減去當前大小;
24、52)檢查主機的可用空間,如果不足,拋出空間不足異常noenoughspaceexception,操作結束;
25、53)當nr_size大于0時,執行以下步驟:
26、查找虛擬磁盤的最后一個主機分區;
27、獲取虛擬磁盤的最后一個主機分區外部的可用空間,方法是從vmfr的占用空間位表中查找未被使用的空間;
28、如果可用空間大于或等于nr_size,則擴展該分區并將nr_size置為0,同時更新vmfr中占用空間位表;
29、如果可用空間不足,則遞歸查找空閑空間塊并按需添加新分區,更新nr_size為nr_size-當前空閑空間大小,同時更新vmfr中占用空間位表。
30、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟一中,使用vmfr中對每個dvmfs的consistency位以判斷是否為正確寫入,若consistency位被置為1,則說明分區的元數據被修改且未正確寫入,根據consistency位的情況,選擇接受dvmfs的修改或是接受vmfr的修改,方法為:
31、條件1:檢查現有校驗和是否與當前分區fs?header重新計算的校驗和相同;
32、條件2:vmfr中consistency位是否為0;
33、若條件1、2均不滿足,則接受vmfr的元數據;若條件1滿足條件2不滿足,則接受dvmfs的元數據;若條件1不滿足條件2滿足,則接受vmfr的元數據;若條件1滿足條件2滿足,則沒有數據不一致行為。
34、前述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,在步驟二中,包括:
35、21)在hypervisor和vfio-pci之間增加了一個中間層dnvme?driver,中間層利用iommu進行設備地址的隔離,根據虛擬機綁定的虛擬磁盤所屬的首個dvmfs的物理地址lba獲取每個虛擬機磁盤的lba映射塊,并將每個虛擬機磁盤的本文檔來自技高網...
【技術保護點】
1.一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,DVMFS是虛擬機虛擬磁盤存儲的區域,包括以下字段:
3.根據權利要求1所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,在Hypervisor中,利用算法1調整虛擬機的磁盤容量,包括擴展和縮小磁盤的操作,包括以下步驟:
4.根據權利要求3所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟3)中,縮小磁盤過程SHRINKVMDISK(vmdisk,?dst_size)包括:
5.根據權利要求3所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟5)中,擴展磁盤過程EXPANDVMDISK(vmdisk,?dest_size)包括:
6.根據權利要求1所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,使用VMFR中對每個DVMFS
7.根據權利要求1所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟二中,包括:
8.根據權利要求7所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟22)中,設置LBA地址轉換表機制,并將LBA地址轉換表保存在內存中以便快速查找,若IOMMU中找不到LBA地址映射信息,則從LBA地址轉換表中獲取當前的映射信息,所述LBA地址轉換表在宿主機物理NVMe磁盤初始化時使用各DVMFS的數據分區首末地址構建。
9.根據權利要求7所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,虛擬qpair和物理qpair的映射最小單位是隊列,虛擬NVMe磁盤的隊列通過一一對應的方式映射到物理NVMe磁盤的隊列,根據虛擬機初始化順序將起始虛擬隊列的qpair0映射到物理NVMe磁盤上不同的qpair,再按照順序映射接下來的隊列。
10.根據權利要求7所述的一種基于NVMe磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,LBA映射列表和IOMMU映射進行聯動,步驟為:
...【技術特征摘要】
1.一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,dvmfs是虛擬機虛擬磁盤存儲的區域,包括以下字段:
3.根據權利要求1所述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,在hypervisor中,利用算法1調整虛擬機的磁盤容量,包括擴展和縮小磁盤的操作,包括以下步驟:
4.根據權利要求3所述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟3)中,縮小磁盤過程shrinkvmdisk(vmdisk,?dst_size)包括:
5.根據權利要求3所述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟5)中,擴展磁盤過程expandvmdisk(vmdisk,?dest_size)包括:
6.根據權利要求1所述的一種基于nvme磁盤的虛擬機磁盤分區和加速訪問方法,其特征在于,在步驟一中,使用vmfr中對每個dvmfs的consistency位以判斷是否為正確寫入,若consistency位被置為1,則說明分區的元數...
【專利技術屬性】
技術研發人員:程大釗,何璞昳,梁黃黃,胡創,龔奕利,
申請(專利權)人:武漢大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。