一種基于OpenStack的虛擬機(jī)遷移方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及資源調(diào)度技術(shù)領(lǐng)域,特別是涉及一種基于OpenStack的虛擬機(jī)迀移方法和裝置。
【背景技術(shù)】
[0002]目前,隨著云計(jì)算的廣泛使用,讓整個(gè)云數(shù)據(jù)中心的資源得到充分均衡地利用,已經(jīng)成為云計(jì)算環(huán)境中資源高度方面最重根據(jù)問題之一。OpenStack屬于云計(jì)算領(lǐng)域最為主流的開源IaaS云平臺(tái),現(xiàn)在已經(jīng)成為IT企業(yè)研究的開源產(chǎn)品,它將底層龐大的硬件資源封閉抽象成云服務(wù)機(jī)群,為用戶提供各種公共資源,如計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、操作系統(tǒng)、計(jì)費(fèi)使用等。但是OpenStack在資源迀移方面有很多不足,其僅考慮物理機(jī)的內(nèi)存利用率,將內(nèi)存利用率大小作為當(dāng)前資源分配的重要指標(biāo),并不符合最大化利用資源的目標(biāo)。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明實(shí)施例提供一種基于OpenStack的虛擬機(jī)迀移方法和裝置,以解決現(xiàn)有技術(shù)中OpenStack僅考慮物理機(jī)的內(nèi)存利用率,將內(nèi)存利用率大小作為當(dāng)前資源分配的重要指標(biāo),并不符合最大化利用資源的目標(biāo)的問題。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:
[0005]—種基于OpenStack的虛擬機(jī)迀移方法,包括:根據(jù)所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率,并將所有所述第一綜合利用率大于預(yù)設(shè)第一閾值的第一虛擬機(jī)加入迀移隊(duì)列;
[0006]當(dāng)檢測到所述迀移隊(duì)列不為空時(shí),確定所有未加入所述迀移隊(duì)列的第二虛擬機(jī)相對應(yīng)的第一物理機(jī),根據(jù)所述第二虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各所述第一物理機(jī)的第二綜合利用率,確定所述第一物理機(jī)中所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第二物理機(jī);
[0007]根據(jù)預(yù)設(shè)代價(jià)函數(shù)計(jì)算各所述第二物理機(jī)中所有虛擬機(jī)的權(quán)值,將各所述第二物理機(jī)中所有虛擬機(jī)中權(quán)值最小的虛擬機(jī)作為目的虛擬機(jī),將所述迀移隊(duì)列中位于隊(duì)頭的第一虛擬機(jī)迀移至所述目的虛擬機(jī)。
[0008]其中,當(dāng)檢測到所述迀移隊(duì)列為空時(shí),判斷是否接收到虛擬機(jī)建立請求;
[0009]若接收到,則根據(jù)所有所述虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各所述物理機(jī)的第二綜合利用率,確定所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第三物理機(jī);
[0010]在任一所述第三物理機(jī)中建立虛擬機(jī)。
[0011]其中,所述確定所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第三物理機(jī)后還包括:
[0012]判斷是否存在所述第三物理機(jī);
[0013]若不存在,則返回建立錯(cuò)誤信息,操作結(jié)束。
[0014]其中,所述根據(jù)所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率包括:
[0015]每隔預(yù)設(shè)時(shí)間間隔獲取所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率;
[0016]根據(jù)所有所述虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率。
[0017]其中,所述根據(jù)所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率包括:
[0018]接收虛擬機(jī)迀移請求,獲取所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率;
[0019]根據(jù)所有所述虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率。
[0020]其中,所述確定所述第一物理機(jī)中所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第二物理機(jī)后還包括:
[0021]判斷是否存在所述第二物理機(jī);
[0022]若不存在,則返回迀移錯(cuò)誤信息,操作結(jié)束。
[0023]—種基于OpenStack的虛擬機(jī)迀移裝置,包括:第一計(jì)算模塊、第二計(jì)算模塊和迀移模塊;其中,
[0024]所述第一計(jì)算模塊,用于根據(jù)所有虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率,并將所有所述綜合利用率大于預(yù)設(shè)第一閾值的第一虛擬機(jī)加入迀移隊(duì)列;
[0025]所述第二計(jì)算模塊,用于當(dāng)檢測到所述迀移隊(duì)列不為空時(shí),確定所有未加入隊(duì)列的第二虛擬機(jī)相對應(yīng)的第一物理機(jī),根據(jù)所述第二虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各所述第一物理機(jī)的第二綜合利用率,確定所述第一物理機(jī)中所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第二物理機(jī);
[0026]所述迀移模塊,用于根據(jù)預(yù)設(shè)代價(jià)函數(shù)計(jì)算各所述第二物理機(jī)中所有虛擬機(jī)的權(quán)值,將各所述第二物理機(jī)中所有虛擬機(jī)中權(quán)值最小的虛擬機(jī)作為目的虛擬機(jī),將所述迀移隊(duì)列中位于隊(duì)頭的第一虛擬機(jī)迀移至所述目的虛擬機(jī)。
[0027]其中,所述虛擬機(jī)迀移裝置,還包括:
[0028]建立模塊,用于當(dāng)檢測到所述迀移隊(duì)列為空時(shí),判斷是否接收到虛擬機(jī)建立請求;
[0029]若接收到,則根據(jù)所有所述虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各所述物理機(jī)的第二綜合利用率,確定所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第三物理機(jī);
[0030]在任一所述第三物理機(jī)中建立虛擬機(jī)。
[0031]其中,所述建立模塊包括第一判斷單元,用于判斷是否存在所述第三物理機(jī);若不存在,則返回建立錯(cuò)誤信息,操作結(jié)束。
[0032]其中,所述第二計(jì)算模塊包括第二判斷單元,用于判斷是否存在所述第二物理機(jī);若不存在,則返回迀移錯(cuò)誤信息,操作結(jié)束。
[0033]基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的種基于OpenStack的虛擬機(jī)迀移方法和裝置,根據(jù)所有所述虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率,并將所有所述綜合利用率大于預(yù)設(shè)第一閾值的第一虛擬機(jī)加入迀移隊(duì)列;當(dāng)檢測到所述迀移隊(duì)列不為空時(shí),確定所有未加入隊(duì)列的第二虛擬機(jī)相對應(yīng)的第一物理機(jī),根據(jù)所述第二虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各所述第一物理機(jī)的第二綜合利用率,確定所述第一物理機(jī)中所有所述第二綜合利用率不大于預(yù)設(shè)第二閾值的第二物理機(jī);根據(jù)預(yù)設(shè)代價(jià)函數(shù)計(jì)算各所述第二物理機(jī)中所有虛擬機(jī)的權(quán)值,將各所述第二物理機(jī)中所有虛擬機(jī)中權(quán)值最小的虛擬機(jī)作為目的虛擬機(jī),將所述迀移隊(duì)列中位于隊(duì)頭的第一虛擬機(jī)迀移至所述目的虛擬機(jī)。根據(jù)虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)虛擬機(jī)調(diào)度策略計(jì)算得到各虛擬機(jī)的第一綜合利用率,以該第一綜合利用率為依據(jù),挑選出需要進(jìn)行迀移的第一虛擬機(jī),根據(jù)未加入隊(duì)列的第二虛擬機(jī)的CPU利用率、內(nèi)存利用率和磁盤利用率依據(jù)預(yù)設(shè)物理機(jī)調(diào)度策略計(jì)算得到各第一物理機(jī)的第二綜合利用率,以該第二綜合利用率為依據(jù),挑選出適合進(jìn)行迀移的第二物理機(jī),最后將選出的需要進(jìn)行迀移的第一虛擬機(jī)迀移至選出的適合進(jìn)行迀移的第二物理機(jī)中權(quán)值最小的虛擬機(jī)中,實(shí)現(xiàn)虛擬機(jī)迀移,資源的分配,以同時(shí)考慮了 CPU利用率、內(nèi)存利用率和磁盤利用率的綜合利