本發(fā)明涉及信息技術領域,特別涉及一種分布式物理磁盤的使用方法、及虛擬機。
背景技術:
分布式存儲系統(tǒng),是將數(shù)據(jù)分散存儲在多臺獨立的設備上。
傳統(tǒng)的網(wǎng)絡存儲系統(tǒng)采用集中的存儲宿主機存放所有數(shù)據(jù),存儲宿主機成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規(guī)模存儲應用的需要。分布式網(wǎng)絡存儲系統(tǒng)采用可擴展的系統(tǒng)結構,利用多臺存儲宿主機分擔存儲負荷,利用位置宿主機定位存儲信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴展。
1、虛擬機(virtualmachine,vm)指模擬出來的一臺虛擬的計算機,也即邏輯上的一臺計算機。
2、主機(host),指物理存在的計算機,或者稱為宿主機,在本發(fā)明實施例中也可以稱之為宿主機。
3、guestos——指運行在vm上的操作系統(tǒng)。例如在一臺安裝了windowsnt的計算機上安裝了vmware,那么,host指的是安裝windowsnt的這臺計算機,其host′sos為windowsnt。vm上運行的是linux,那么linux即為guestos。
在分布式系統(tǒng)存儲系統(tǒng)中,需要將數(shù)據(jù)存儲到多個獨立的設備上,在這個過程中,經(jīng)常出現(xiàn)擁塞導致存儲速度慢,因此整個數(shù)據(jù)存儲效率較低。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種分布式物理磁盤的使用方法、及虛擬機,用于減少數(shù)據(jù)擁塞的幾率,并且提高數(shù)據(jù)存儲的安全性。
一方面本發(fā)明實施例提供了一種分布式物理磁盤的使用方法,應用于包含n個物理磁盤的分布式系統(tǒng)中的虛擬機,所述n個物理磁盤位于宿主機一側且每個物理磁盤被分為大小相等的小物理磁盤,每個物理磁盤內的小物理磁盤的序號按照地址從低到高排序;所述n個物理磁盤各自具有大物理磁盤標識,各小物理磁盤具有小物理磁盤標識,所述小物理磁盤標識由所述大物理磁盤標識與所述小物理磁盤的序號組合得到,所述方法包括:
虛擬機被構建后啟動運行;所述虛擬機的存儲空間由目標物理磁盤組成;所述目標物理磁盤組成過程如下:所述小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度被所述宿主機所監(jiān)測到;在所述宿主機在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;所述宿主機響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建所述虛擬機;
所述虛擬機在運行過程中若有數(shù)據(jù)存儲需求,則首先獲得所述目標物理磁盤的標識,向所述目標物理磁盤發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤的標識;
所述虛擬機接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;
所述虛擬機將需要存儲的數(shù)據(jù)拆分為大于或等于4且小于m個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
在一個可選的實現(xiàn)方式中,所述大物理磁盤標識為p位的二進制字符串,所述小物理磁盤標識為q位的二進制字符串;所述小物理磁盤的序號為位于小磁盤標識的低位部分,每個小物理磁盤的存儲空間為r位;所述方法還包括:
所述虛擬機在確定需要進行訪存操作后,確定所述訪存操作指定的虛擬地址;所述目標物理磁盤由其包含的各小物理磁盤按照所述各小物理磁盤所在的大物理磁盤標識從低到高依次排序組成,所述虛擬地址以所述目標物理磁盤的起始地址為起始虛擬地址順序編號獲得;在所述虛擬機中存儲有地址映射表,所述地址映射表的表項包含:虛擬盤序號、小物理磁盤標識;
所述虛擬機計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量;
所述虛擬機查找所述地址映射表獲得包含所述虛擬地址的虛擬盤序號的表項,并確定該表項中包含的小物理磁盤標識作為目標小物理磁盤標識;
所述虛擬機截取所述小物理磁盤標識的前p位作為目標大物理磁盤標識,向所述目標大物理磁盤標識對應的物理磁盤發(fā)送讀請求,在所述讀請求中包含所述小物理磁盤標識以及所述偏移量,使所述小物理磁盤標識對應的小物理磁盤返回在所述小物理磁盤的起始位置偏移所述偏移量對應物理地址的數(shù)據(jù)。
在一個可選的實現(xiàn)方式中,所述虛擬機計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量包括:
所述虛擬機截取所述虛擬地址的前r位得到所述虛擬盤序號,截取所述虛擬地址的剩余位得到所述偏移量。
在一個可選的實現(xiàn)方式中,在所述虛擬機被創(chuàng)建之后,所述方法還包括:
若所述虛擬機需要被刪除,則所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài),不刪除所述目標物理磁盤中包含的各小物理磁盤已經(jīng)被寫入的數(shù)據(jù)。
在一個可選的實現(xiàn)方式中,在所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài)之后,所述方法還包括:
在下一次創(chuàng)建新虛擬機時,所述新虛擬機所需的小物理磁盤以隨機方式獲取,并且所述獲取到的小物理磁盤中少于或等于兩個小物理磁盤屬于所述目標物理磁盤中包含的小物理磁盤。
二方面本發(fā)明實施例還提供了一種虛擬機,應用于包括所述虛擬機、宿主機和n個物理磁盤的分布式數(shù)據(jù)存儲系統(tǒng);所述n個物理磁盤位于宿主機一側且每個物理磁盤被分為大小相等的小物理磁盤,每個物理磁盤內的小物理磁盤的序號按照地址從低到高排序;所述n個物理磁盤各自具有大物理磁盤標識,各小物理磁盤具有小物理磁盤標識,所述小物理磁盤標識由所述大物理磁盤標識與所述小物理磁盤的序號組合得到;
所述虛擬機包括:
運行控制單元,用于在虛擬機被構建后啟動運行;所述虛擬機的存儲空間由目標物理磁盤組成;所述目標物理磁盤組成過程如下:所述小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度被所述宿主機所監(jiān)測到;在所述宿主機在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;所述宿主機響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建所述虛擬機;
發(fā)送單元,用于在運行過程中若有數(shù)據(jù)存儲需求,向所述m個小物理磁盤對應的物理磁盤分別發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤中各小物理磁盤的小物理磁盤標識;
接收單元,用于接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;
處理器單元,用于將需要存儲的數(shù)據(jù)拆分為大于或等于4且小于m個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
在一個可選的實現(xiàn)方式中,所述大物理磁盤標識為p位的二進制字符串,所述小物理磁盤標識為q位的二進制字符串;所述小物理磁盤的序號為位于小磁盤標識的低位部分,每個小物理磁盤的存儲空間為r位;
所述處理器單元,還用于在確定需要進行訪存操作后,確定所述訪存操作指定的虛擬地址;所述目標物理磁盤由其包含的各小物理磁盤按照所述各小物理磁盤所在的大物理磁盤標識從低到高依次排序組成,所述虛擬地址以所述目標物理磁盤的起始地址為起始虛擬地址順序編號獲得;在所述虛擬機中存儲有地址映射表,所述地址映射表的表項包含:虛擬盤序號、小物理磁盤標識;計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量;查找所述地址映射表獲得包含所述虛擬地址的虛擬盤序號的表項,并確定該表項中包含的小物理磁盤標識作為目標小物理磁盤標識;截取所述小物理磁盤標識的前p位作為目標大物理磁盤標識;
所述發(fā)送單元,還用于向所述目標大物理磁盤標識對應的物理磁盤發(fā)送讀請求,在所述讀請求中包含所述小物理磁盤標識以及所述偏移量,使所述小物理磁盤標識對應的小物理磁盤返回在所述小物理磁盤的起始位置偏移所述偏移量對應物理地址的數(shù)據(jù)。
在一個可選的實現(xiàn)方式中,所述處理器單元,用于計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量包括:
截取所述虛擬地址的前r位得到所述虛擬盤序號,截取所述虛擬地址的剩余位得到所述偏移量。
在一個可選的實現(xiàn)方式中,若所述虛擬機需要被刪除,則所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài),不刪除所述目標物理磁盤中包含的各小物理磁盤已經(jīng)被寫入的數(shù)據(jù)。
在一個可選的實現(xiàn)方式中,在所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài)之后,在下一次創(chuàng)建新虛擬機時,所述新虛擬機所需的小物理磁盤以隨機方式獲取,并且所述獲取到的小物理磁盤中少于或等于兩個小物理磁盤屬于所述目標物理磁盤中包含的小物理磁盤。
從以上技術方案可以看出,本發(fā)明實施例具有以下優(yōu)點:特別設定了物理磁盤的標識組成方式,方便后續(xù)物理磁盤的查找;另外,虛擬機的物理磁盤分配過程中充分考慮了各物理磁盤的活躍度,使得虛擬機能夠分配到較為合適的物理磁盤,相對較為不活躍的磁盤可以減少擁塞;另外,將需要存儲的數(shù)據(jù)進行了拆分,按照物理磁盤的活躍度再次進行數(shù)據(jù)分配,一方面進一步減少了數(shù)據(jù)擁塞的可能性,提高數(shù)據(jù)存儲的并行度,另外還能夠降低數(shù)據(jù)被整體存儲到同一小物理磁盤導致可能被竊取的可能性,因此可以提高數(shù)據(jù)存儲的安全性。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域的普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例方法流程示意圖;
圖2為本發(fā)明實施例小物理磁盤標識組成結構示意圖;
圖3為本發(fā)明實施例系統(tǒng)結構示意圖;
圖4為虛擬機結構示意圖。
具體實施方式
為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供了一種分布式物理磁盤的使用方法,應用于包含n個物理磁盤的分布式系統(tǒng)中的虛擬機,所述n個物理磁盤位于宿主機一側且每個物理磁盤被分為大小相等的小物理磁盤,每個物理磁盤內的小物理磁盤的序號按照地址從低到高排序;所述n個物理磁盤各自具有大物理磁盤標識,各小物理磁盤具有小物理磁盤標識,所述小物理磁盤標識由所述大物理磁盤標識與所述小物理磁盤的序號組合得到;
小物理磁盤標識的結構請參閱圖2所示;
所述虛擬機被構建后啟動運行;所述虛擬機的存儲空間由目標物理磁盤組成;所述目標物理磁盤組成過程如下:所述小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度被所述宿主機所監(jiān)測到;在所述宿主機在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;所述宿主機響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建所述虛擬機;
所述虛擬機在運行過程中若有數(shù)據(jù)存儲需求,則首先獲得所述目標物理磁盤的標識,向所述目標物理磁盤發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤的標識;
所述虛擬機接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;
所述虛擬機將需要存儲的數(shù)據(jù)拆分為大于或等于4且小于m個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
上述大于或等于4且小于m個目標數(shù)據(jù),更具體可以是:大于或等于4且小于或等于m/2個目標數(shù)據(jù)。
如圖1所示,從系統(tǒng)層面上來看的實現(xiàn)過程,包括:
101:宿主機監(jiān)測小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度;
活躍程度可以用物理磁盤當前或者綜合歷史數(shù)據(jù)統(tǒng)計得到的平均數(shù)據(jù)吞吐量,或者平均數(shù)據(jù)吞吐量占對應物理磁盤的數(shù)據(jù)存儲能力的比例。越活躍的物理磁盤其數(shù)據(jù)存儲壓力越大,形成擁塞的可能性也將會越大。
102:所述宿主機在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;
虛擬機創(chuàng)建請求可以是任意設備發(fā)出的,假定我們的系統(tǒng)應用于大型公司員工的虛擬機創(chuàng)建,那么可以是管理者發(fā)出的。對于不同的虛擬機可能會有不同的存儲空間需求,例如:做業(yè)務的員工和做軟件開發(fā)的員工,對存儲空間的需求是不一樣的。在本實施例中,可以假定每個小物理磁盤是500m,假定需要5000m的存儲空間,那么可以分成10個小物理磁盤。這10個小物理磁盤從那些相對較為空閑的物理磁盤中選取。由于不同的虛擬機被使用的可能性是不同的,因此通過對小物理磁盤的選擇性分配可以達到第一次均衡。
103:所述宿主機響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建虛擬機;
在虛擬機被創(chuàng)建以后,虛擬機的操作系統(tǒng)被安裝,那么將會成為一個真正的虛擬機。虛擬機會獲知自己被分配的目標物理磁盤,以及這些目標物理磁盤所處的位置。
104:所述虛擬機啟動并運行,在所述虛擬機運行過程中若有數(shù)據(jù)存儲需求,則首先獲得所述目標物理磁盤的標識,向所述目標物理磁盤發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤的標識;
基于本發(fā)明實施例的實現(xiàn)方案,在虛擬機一側需要保存所述目標物理磁盤中各小物理磁盤的小物理磁盤分別對應到哪一個物理磁盤;基于此,虛擬機查詢活躍度可以不必經(jīng)由宿主機來查詢。
105:所述虛擬機接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;
106:所述虛擬機將需要存儲的數(shù)據(jù)拆分為大于2且小于或等于m/2個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
本步驟中,設定目標數(shù)據(jù)的數(shù)量,一方面可以保持數(shù)據(jù)被分的目標數(shù)據(jù)較多,提高安全性和存儲并行度;另一方面考慮到需要存儲到那些比較空閑的物理磁盤中,減少出現(xiàn)擁塞的可能性。
在本發(fā)明實施例中,特別設定了物理磁盤的標識組成方式,方便后續(xù)物理磁盤的查找;另外,虛擬機的物理磁盤分配過程中充分考慮了各物理磁盤的活躍度,使得虛擬機能夠分配到較為合適的物理磁盤,相對較為不活躍的磁盤可以減少擁塞;另外,將需要存儲的數(shù)據(jù)進行了拆分,按照物理磁盤的活躍度再次進行數(shù)據(jù)分配,一方面進一步減少了數(shù)據(jù)擁塞的可能性,提高數(shù)據(jù)存儲的并行度,另外還能夠降低數(shù)據(jù)被整體存儲到同一小物理磁盤導致可能被竊取的可能性,因此可以提高數(shù)據(jù)存儲的安全性。
優(yōu)選地,如圖2所示,所述大物理磁盤標識為p位的二進制字符串,所述小物理磁盤標識為q位的二進制字符串;所述小物理磁盤的序號為位于小磁盤標識的低位部分,每個小物理磁盤的存儲空間為r位;所述方法還包括:
所述虛擬機在確定需要進行訪存操作后,確定所述訪存操作指定的虛擬地址;所述目標物理磁盤由其包含的各小物理磁盤按照所述各小物理磁盤所在的大物理磁盤標識從低到高依次排序組成,所述虛擬地址以所述目標物理磁盤的起始地址為起始虛擬地址順序編號獲得;在所述虛擬機中存儲有地址映射表,所述地址映射表的表項包含:虛擬盤序號、小物理磁盤標識;
所述虛擬機計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量;
所述虛擬機查找所述地址映射表獲得包含所述虛擬地址的虛擬盤序號的表項,并確定該表項中包含的小物理磁盤標識作為目標小物理磁盤標識;
所述虛擬機截取所述小物理磁盤標識的前p位作為目標大物理磁盤標識,向所述目標大物理磁盤標識對應的物理磁盤發(fā)送讀請求,在所述讀請求中包含所述小物理磁盤標識以及所述偏移量,使所述小物理磁盤標識對應的小物理磁盤返回在所述小物理磁盤的起始位置偏移所述偏移量對應物理地址的數(shù)據(jù)。
在本實施例中,設定了一個特別的大物理磁盤標識、小物理磁盤標識,這樣可以設定一個地址映射表,方便后續(xù)迅速查到到對應的物理磁盤。由于在目標物理磁盤中,虛擬機會認為改目標物理磁盤是一個真實的物理磁盤,這樣地址應該是目標物理磁盤中是連續(xù)的,然而實際上目標物理磁盤中的存儲空間位于不同的物理磁盤,因此物理地址實際上是不同的;因此需要對虛擬地址進行轉換;虛擬地址的使用是為了在虛擬機中方便應用,例如:軟件編程等。虛擬地址是把上述目標物理磁盤看作是一個整體的物理磁盤后獲得的地址,因為該虛擬地址并不與實際的物理磁盤地址對應,因此稱為虛擬地址。通過本發(fā)明實施例方案,可以迅速查到的對應的物理磁盤和對應的物理地址,因此可以快速存儲數(shù)據(jù),相應地,也可以快速讀取數(shù)據(jù)。
進一步地,鑒于本發(fā)明實施例所設定的特殊映射表,本發(fā)明實施例可以使用如下方式進行計算:所述虛擬機計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量包括:
所述虛擬機截取所述虛擬地址的前r位得到所述虛擬盤序號,截取所述虛擬地址的剩余位得到所述偏移量。
本發(fā)明實施例使用截取的方式得到結果,可以減少大量的邏輯運算,因此可以減少運算量,提高數(shù)據(jù)存儲的效率。
進一步地,本發(fā)明實施例還提供了虛擬機刪除的方案,如下:在所述虛擬機被創(chuàng)建之后,所述方法還包括:
若所述虛擬機需要被刪除,則所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài),不刪除所述目標物理磁盤中包含的各小物理磁盤已經(jīng)被寫入的數(shù)據(jù)。
在本發(fā)明實施例中,由于數(shù)據(jù)存儲的方式是將數(shù)據(jù)拆分了存儲,這樣安全性較高,在刪除虛擬機的時候,可以僅標記小物理磁盤的分配狀態(tài),不進行數(shù)據(jù)刪除操作;一方面可以保證數(shù)據(jù)安全性,另一方面還可以減少物理磁盤的擦寫次數(shù),提高物理磁盤的壽命。
本發(fā)明實施例還提供了后續(xù)再次分配物理磁盤的可選實現(xiàn)方案,如下:在所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài)之后,所述方法還包括:
在下一次創(chuàng)建新虛擬機時,所述新虛擬機所需的小物理磁盤以隨機方式獲取,并且所述獲取到的小物理磁盤中少于或等于兩個小物理磁盤屬于所述目標物理磁盤中包含的小物理磁盤。
采用本實施例方案,可以進一步提高數(shù)據(jù)安全性。這是基于數(shù)據(jù)被存儲到多個物理磁盤,雖然這些小物理磁盤中的數(shù)據(jù)并不具有連續(xù)性,但是如果這些物理磁盤又被分配到同一虛擬機,鑒于本發(fā)明實施例所使用的特殊小物理磁盤組成目標物理磁盤的方案,則有可能被恢復出來;為了避免這種情況的發(fā)生,提出了本實施例實現(xiàn)方案。
本發(fā)明實施例還提供了一種分布式存儲系統(tǒng),如圖3所示,可以一并參閱圖1所示,包括:宿主機、虛擬機和n個物理磁盤;所述n個物理磁盤位于宿主機一側且每個物理磁盤被分為大小相等的小物理磁盤,每個物理磁盤內的小物理磁盤的序號按照地址從低到高排序;所述n個物理磁盤各自具有大物理磁盤標識,各小物理磁盤具有小物理磁盤標識,所述小物理磁盤標識由所述大物理磁盤標識與所述小物理磁盤的序號組合得到,其特征在于,
所述宿主機,用于監(jiān)測小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度;在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建虛擬機;
所述虛擬機,用于啟動并運行,在所述虛擬機運行過程中若有數(shù)據(jù)存儲需求,則首先獲得所述目標物理磁盤的標識,向所述目標物理磁盤發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤的標識;接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;將需要存儲的數(shù)據(jù)拆分為大于2且小于或等于m/2個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
小物理磁盤標識的結構請參閱圖2所示;
活躍程度可以用物理磁盤當前或者綜合歷史數(shù)據(jù)統(tǒng)計得到的平均數(shù)據(jù)吞吐量,或者平均數(shù)據(jù)吞吐量占對應物理磁盤的數(shù)據(jù)存儲能力的比例。越活躍的物理磁盤其數(shù)據(jù)存儲壓力越大,形成擁塞的可能性也將會越大。
虛擬機創(chuàng)建請求可以是任意設備發(fā)出的,假定我們的系統(tǒng)應用于大型公司員工的虛擬機創(chuàng)建,那么可以是管理者發(fā)出的。對于不同的虛擬機可能會有不同的存儲空間需求,例如:做業(yè)務的員工和做軟件開發(fā)的員工,對存儲空間的需求是不一樣的。在本實施例中,可以假定每個小物理磁盤是500m,假定需要5000m的存儲空間,那么可以分成10個小物理磁盤。這10個小物理磁盤從那些相對較為空閑的物理磁盤中選取。由于不同的虛擬機被使用的可能性是不同的,因此通過對小物理磁盤的選擇性分配可以達到第一次均衡。
在虛擬機被創(chuàng)建以后,虛擬機的操作系統(tǒng)被安裝,那么將會成為一個真正的虛擬機。虛擬機會獲知自己被分配的目標物理磁盤,以及這些目標物理磁盤所處的位置。
本實施例中,設定目標數(shù)據(jù)的數(shù)量,一方面可以保持數(shù)據(jù)被分的目標數(shù)據(jù)較多,提高安全性和存儲并行度;另一方面考慮到需要存儲到那些比較空閑的物理磁盤中,減少出現(xiàn)擁塞的可能性。
在本發(fā)明實施例中,特別設定了物理磁盤的標識組成方式,方便后續(xù)物理磁盤的查找;另外,虛擬機的物理磁盤分配過程中充分考慮了各物理磁盤的活躍度,使得虛擬機能夠分配到較為合適的物理磁盤,相對較為不活躍的磁盤可以減少擁塞;另外,將需要存儲的數(shù)據(jù)進行了拆分,按照物理磁盤的活躍度再次進行數(shù)據(jù)分配,一方面進一步減少了數(shù)據(jù)擁塞的可能性,提高數(shù)據(jù)存儲的并行度,另外還能夠降低數(shù)據(jù)被整體存儲到同一小物理磁盤導致可能被竊取的可能性,因此可以提高數(shù)據(jù)存儲的安全性。
優(yōu)選地,如圖2所示,所述大物理磁盤標識為p位的二進制字符串,所述小物理磁盤標識為q位的二進制字符串;所述小物理磁盤的序號為位于小磁盤標識的低位部分,每個小物理磁盤的存儲空間為r位;
所述虛擬機,還用于在確定需要進行訪存操作后,確定所述訪存操作指定的虛擬地址;所述目標物理磁盤由其包含的各小物理磁盤按照所述各小物理磁盤所在的大物理磁盤標識從低到高依次排序組成,所述虛擬地址以所述目標物理磁盤的起始地址為起始虛擬地址順序編號獲得;在所述虛擬機中存儲有地址映射表,所述地址映射表的表項包含:虛擬盤序號、小物理磁盤標識;計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量;查找所述地址映射表獲得包含所述虛擬地址的虛擬盤序號的表項,并確定該表項中包含的小物理磁盤標識作為目標小物理磁盤標識;截取所述小物理磁盤標識的前p位作為目標大物理磁盤標識,向所述目標大物理磁盤標識對應的物理磁盤發(fā)送讀請求,在所述讀請求中包含所述小物理磁盤標識以及所述偏移量,使所述小物理磁盤標識對應的小物理磁盤返回在所述小物理磁盤的起始位置偏移所述偏移量對應物理地址的數(shù)據(jù)。
在本實施例中,設定了一個特別的大物理磁盤標識、小物理磁盤標識,這樣可以設定一個地址映射表,方便后續(xù)迅速查到到對應的物理磁盤。由于在目標物理磁盤中,虛擬機會認為改目標物理磁盤是一個真實的物理磁盤,這樣地址應該是目標物理磁盤中是連續(xù)的,然而實際上目標物理磁盤中的存儲空間位于不同的物理磁盤,因此物理地址實際上是不同的;因此需要對虛擬地址進行轉換;虛擬地址的使用是為了在虛擬機中方便應用,例如:軟件編程等。虛擬地址是把上述目標物理磁盤看作是一個整體的物理磁盤后獲得的地址,因為該虛擬地址并不與實際的物理磁盤地址對應,因此稱為虛擬地址。通過本發(fā)明實施例方案,可以迅速查到的對應的物理磁盤和對應的物理地址,因此可以快速存儲數(shù)據(jù),相應地,也可以快速讀取數(shù)據(jù)。
進一步地,鑒于本發(fā)明實施例所設定的特殊映射表,本發(fā)明實施例可以使用如下方式進行計算:所述虛擬機,用于計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量包括:
截取所述虛擬地址的前r位得到所述虛擬盤序號,截取所述虛擬地址的剩余位得到所述偏移量。
本發(fā)明實施例使用截取的方式得到結果,可以減少大量的邏輯運算,因此可以減少運算量,提高數(shù)據(jù)存儲的效率。
進一步地,本發(fā)明實施例還提供了虛擬機刪除的方案,如下:所述宿主機,還用于在所述虛擬機被創(chuàng)建之后,接收虛擬機刪除請求,所述虛擬機刪除請求用于請求刪除所述虛擬機;將所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)設置為未分配狀態(tài),不刪除所述目標物理磁盤中包含的各小物理磁盤已經(jīng)被寫入的數(shù)據(jù)。
在本發(fā)明實施例中,由于數(shù)據(jù)存儲的方式是將數(shù)據(jù)拆分了存儲,這樣安全性較高,在刪除虛擬機的時候,可以僅標記小物理磁盤的分配狀態(tài),不進行數(shù)據(jù)刪除操作;一方面可以保證數(shù)據(jù)安全性,另一方面還可以減少物理磁盤的擦寫次數(shù),提高物理磁盤的壽命。
本發(fā)明實施例還提供了后續(xù)再次分配物理磁盤的可選實現(xiàn)方案,如下:所述宿主機,還用于在將所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)設置為未分配狀態(tài)之后,記錄所述目標物理磁盤中包含的各小物理磁盤,在下一次創(chuàng)建新虛擬機時,以隨機方式獲取所述新虛擬機所需的小物理磁盤,并確定獲取到的小物理磁盤中少于或等于兩個小物理磁盤屬于所述目標物理磁盤中包含的小物理磁盤。
采用本實施例方案,可以進一步提高數(shù)據(jù)安全性。這是基于數(shù)據(jù)被存儲到多個物理磁盤,雖然這些小物理磁盤中的數(shù)據(jù)并不具有連續(xù)性,但是如果這些物理磁盤又被分配到同一虛擬機,鑒于本發(fā)明實施例所使用的特殊小物理磁盤組成目標物理磁盤的方案,則有可能被恢復出來;為了避免這種情況的發(fā)生,提出了本實施例實現(xiàn)方案。
如圖4所示,本發(fā)明實施例還提供了一種虛擬機,應用于包括所述虛擬機、宿主機和n個物理磁盤的分布式數(shù)據(jù)存儲系統(tǒng);所述n個物理磁盤位于宿主機一側且每個物理磁盤被分為大小相等的小物理磁盤,每個物理磁盤內的小物理磁盤的序號按照地址從低到高排序;所述n個物理磁盤各自具有大物理磁盤標識,各小物理磁盤具有小物理磁盤標識,所述小物理磁盤標識由所述大物理磁盤標識與所述小物理磁盤的序號組合得到,所述虛擬機包括:
運行控制單元401,用于在虛擬機被構建后啟動運行;所述虛擬機的存儲空間由目標物理磁盤組成;所述目標物理磁盤組成過程如下:所述小物理磁盤的分配狀態(tài),以及所述n個物理磁盤的活躍程度被所述宿主機所監(jiān)測到;在所述宿主機在接收到虛擬機創(chuàng)建請求后,確定將要創(chuàng)建的虛擬機的存儲空間需求;依據(jù)所述小物理磁盤的分配狀態(tài)確定處于未分配狀態(tài)的小物理磁盤;從處于未分配狀態(tài)的小物理磁盤中選擇m個小物理磁盤作為目標物理磁盤,所述m個小物理磁盤的存儲空間大于或等于所述存儲空間需求;所述m大于或等于8且為2的指數(shù)次方;所述m個小物理磁盤各自位于不同的物理磁盤;所述宿主機響應所述虛擬機創(chuàng)建請求在所述目標物理磁盤中安裝虛擬操作系統(tǒng)構建所述虛擬機;
發(fā)送單元402,用于在運行過程中若有數(shù)據(jù)存儲需求,向所述m個小物理磁盤對應的物理磁盤分別發(fā)送活躍度查詢請求,在所述活躍度查詢請求中攜帶所述目標物理磁盤中各小物理磁盤的小物理磁盤標識;
接收單元403,用于接收所述m個小物理磁盤對應的物理磁盤返回的活躍程度;
處理器單元404,用于將需要存儲的數(shù)據(jù)拆分為大于2且小于或等于m/2個目標數(shù)據(jù),按照所述m個小物理磁盤對應的物理磁盤的活躍程度從低到高,將各目標數(shù)據(jù)分別存儲到所述目標物理磁盤中的各小物理磁盤。
小物理磁盤標識的結構請參閱圖2所示;
活躍程度可以用物理磁盤當前或者綜合歷史數(shù)據(jù)統(tǒng)計得到的平均數(shù)據(jù)吞吐量,或者平均數(shù)據(jù)吞吐量占對應物理磁盤的數(shù)據(jù)存儲能力的比例。越活躍的物理磁盤其數(shù)據(jù)存儲壓力越大,形成擁塞的可能性也將會越大。
虛擬機創(chuàng)建請求可以是任意設備發(fā)出的,假定我們的系統(tǒng)應用于大型公司員工的虛擬機創(chuàng)建,那么可以是管理者發(fā)出的。對于不同的虛擬機可能會有不同的存儲空間需求,例如:做業(yè)務的員工和做軟件開發(fā)的員工,對存儲空間的需求是不一樣的。在本實施例中,可以假定每個小物理磁盤是500m,假定需要5000m的存儲空間,那么可以分成10個小物理磁盤。這10個小物理磁盤從那些相對較為空閑的物理磁盤中選取。由于不同的虛擬機被使用的可能性是不同的,因此通過對小物理磁盤的選擇性分配可以達到第一次均衡。
在虛擬機被創(chuàng)建以后,虛擬機的操作系統(tǒng)被安裝,那么將會成為一個真正的虛擬機。虛擬機會獲知自己被分配的目標物理磁盤,以及這些目標物理磁盤所處的位置。
本實施例中,設定目標數(shù)據(jù)的數(shù)量,一方面可以保持數(shù)據(jù)被分的目標數(shù)據(jù)較多,提高安全性和存儲并行度;另一方面考慮到需要存儲到那些比較空閑的物理磁盤中,減少出現(xiàn)擁塞的可能性。
在本發(fā)明實施例中,特別設定了物理磁盤的標識組成方式,方便后續(xù)物理磁盤的查找;另外,虛擬機的物理磁盤分配過程中充分考慮了各物理磁盤的活躍度,使得虛擬機能夠分配到較為合適的物理磁盤,相對較為不活躍的磁盤可以減少擁塞;另外,將需要存儲的數(shù)據(jù)進行了拆分,按照物理磁盤的活躍度再次進行數(shù)據(jù)分配,一方面進一步減少了數(shù)據(jù)擁塞的可能性,提高數(shù)據(jù)存儲的并行度,另外還能夠降低數(shù)據(jù)被整體存儲到同一小物理磁盤導致可能被竊取的可能性,因此可以提高數(shù)據(jù)存儲的安全性。
優(yōu)選地,如圖2所示,所述大物理磁盤標識為p位的二進制字符串,所述小物理磁盤標識為q位的二進制字符串;所述小物理磁盤的序號為位于小磁盤標識的低位部分,每個小物理磁盤的存儲空間為r位;
所述處理器單元404,還用于在確定需要進行訪存操作后,確定所述訪存操作指定的虛擬地址;所述目標物理磁盤由其包含的各小物理磁盤按照所述各小物理磁盤所在的大物理磁盤標識從低到高依次排序組成,所述虛擬地址以所述目標物理磁盤的起始地址為起始虛擬地址順序編號獲得;在所述虛擬機中存儲有地址映射表,所述地址映射表的表項包含:虛擬盤序號、小物理磁盤標識;計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量;查找所述地址映射表獲得包含所述虛擬地址的虛擬盤序號的表項,并確定該表項中包含的小物理磁盤標識作為目標小物理磁盤標識;截取所述小物理磁盤標識的前p位作為目標大物理磁盤標識;
所述發(fā)送單元402,還用于向所述目標大物理磁盤標識對應的物理磁盤發(fā)送讀請求,在所述讀請求中包含所述小物理磁盤標識以及所述偏移量,使所述小物理磁盤標識對應的小物理磁盤返回在所述小物理磁盤的起始位置偏移所述偏移量對應物理地址的數(shù)據(jù)。
在本實施例中,設定了一個特別的大物理磁盤標識、小物理磁盤標識,這樣可以設定一個地址映射表,方便后續(xù)迅速查到到對應的物理磁盤。由于在目標物理磁盤中,虛擬機會認為改目標物理磁盤是一個真實的物理磁盤,這樣地址應該是目標物理磁盤中是連續(xù)的,然而實際上目標物理磁盤中的存儲空間位于不同的物理磁盤,因此物理地址實際上是不同的;因此需要對虛擬地址進行轉換;虛擬地址的使用是為了在虛擬機中方便應用,例如:軟件編程等。虛擬地址是把上述目標物理磁盤看作是一個整體的物理磁盤后獲得的地址,因為該虛擬地址并不與實際的物理磁盤地址對應,因此稱為虛擬地址。通過本發(fā)明實施例方案,可以迅速查到的對應的物理磁盤和對應的物理地址,因此可以快速存儲數(shù)據(jù),相應地,也可以快速讀取數(shù)據(jù)。
進一步地,鑒于本發(fā)明實施例所設定的特殊映射表,本發(fā)明實施例可以使用如下方式進行計算:所述處理器單元404,用于計算所述虛擬地址與所述r的商取整得到所述虛擬地址的虛擬盤序號,計算所述虛擬地址與所述r的商取余得到偏移量包括:
截取所述虛擬地址的前r位得到所述虛擬盤序號,截取所述虛擬地址的剩余位得到所述偏移量。
本發(fā)明實施例使用截取的方式得到結果,可以減少大量的邏輯運算,因此可以減少運算量,提高數(shù)據(jù)存儲的效率。
進一步地,本發(fā)明實施例還提供了虛擬機刪除的方案,如下:若所述虛擬機需要被刪除,則所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài),不刪除所述目標物理磁盤中包含的各小物理磁盤已經(jīng)被寫入的數(shù)據(jù)。
在本發(fā)明實施例中,由于數(shù)據(jù)存儲的方式是將數(shù)據(jù)拆分了存儲,這樣安全性較高,在刪除虛擬機的時候,可以僅標記小物理磁盤的分配狀態(tài),不進行數(shù)據(jù)刪除操作;一方面可以保證數(shù)據(jù)安全性,另一方面還可以減少物理磁盤的擦寫次數(shù),提高物理磁盤的壽命。
本發(fā)明實施例還提供了后續(xù)再次分配物理磁盤的可選實現(xiàn)方案,如下:在所述目標物理磁盤中包含的各小物理磁盤的分配狀態(tài)被設置為未分配狀態(tài)之后,在下一次創(chuàng)建新虛擬機時,所述新虛擬機所需的小物理磁盤以隨機方式獲取,并且所述獲取到的小物理磁盤中少于或等于兩個小物理磁盤屬于所述目標物理磁盤中包含的小物理磁盤。
采用本實施例方案,可以進一步提高數(shù)據(jù)安全性。這是基于數(shù)據(jù)被存儲到多個物理磁盤,雖然這些小物理磁盤中的數(shù)據(jù)并不具有連續(xù)性,但是如果這些物理磁盤又被分配到同一虛擬機,鑒于本發(fā)明實施例所使用的特殊小物理磁盤組成目標物理磁盤的方案,則有可能被恢復出來;為了避免這種情況的發(fā)生,提出了本實施例實現(xiàn)方案。
本領域普通技術人員可以理解實現(xiàn)上述各方法實施例中的全部或部分步驟是可以通過程序來指令相關的硬件完成,相應的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
以上僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明實施例揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。