本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種虛擬機(jī)擴(kuò)容處理方法及裝置。
背景技術(shù):
精簡配置是云計(jì)算存儲(chǔ)領(lǐng)域的一種技術(shù)手段,經(jīng)常用于虛擬機(jī)的磁盤管理中,當(dāng)給虛擬機(jī)創(chuàng)建100G的磁盤,如果使用精簡配置,那么就只分配一部分磁盤(比如僅分配10G,但是虛擬機(jī)中的操作系統(tǒng)認(rèn)為還是有100G磁盤),當(dāng)磁盤快用滿10G時(shí),精簡配置程序會(huì)為虛擬機(jī)申請(qǐng)磁盤空間(比如又申請(qǐng)了20G),這樣就可以一點(diǎn)一點(diǎn)的增加磁盤空間,最終為虛擬機(jī)分配100G空間。
發(fā)明人在實(shí)現(xiàn)本實(shí)施例的過程中,發(fā)現(xiàn)現(xiàn)有的虛擬機(jī)擴(kuò)容時(shí),未實(shí)時(shí)監(jiān)控并根據(jù)虛擬機(jī)當(dāng)前的狀態(tài)進(jìn)行擴(kuò)容,浪費(fèi)了部分資源。
技術(shù)實(shí)現(xiàn)要素:
由于現(xiàn)有的虛擬機(jī)擴(kuò)容時(shí),未實(shí)時(shí)監(jiān)控并根據(jù)虛擬機(jī)當(dāng)前的狀態(tài)進(jìn)行擴(kuò)容,浪費(fèi)了部分計(jì)算機(jī)資源的問題,本發(fā)明提出一種虛擬機(jī)擴(kuò)容處理方法及裝置。
第一方面,本發(fā)明實(shí)施例提出一種虛擬機(jī)擴(kuò)容處理方法,包括:
根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容;
根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容。
優(yōu)選地,所述根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容,進(jìn)一步包括:
根據(jù)第一預(yù)設(shè)間隔,間隔判斷擴(kuò)容標(biāo)識(shí),若判斷獲知所述擴(kuò)容標(biāo)識(shí)為非擴(kuò)容狀態(tài),則根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容。
優(yōu)選地,所述根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容之后,還包括:
在收到擴(kuò)容主程序的確認(rèn)收到響應(yīng)之前,根據(jù)第二預(yù)設(shè)間隔,間隔向所述擴(kuò)容主程序發(fā)送擴(kuò)容請(qǐng)求。
優(yōu)選地,所述根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容之后,還包括:
在檢測(cè)到擴(kuò)容成功之前,根據(jù)第三預(yù)設(shè)間隔,間隔檢測(cè)所述虛擬機(jī)的擴(kuò)容是否成功。
優(yōu)選地,所述方法還包括:
若檢測(cè)到擴(kuò)容成功之前,接收到所述擴(kuò)容主程序發(fā)送的錯(cuò)誤消息,則輸出警告信息,并將所述擴(kuò)容標(biāo)識(shí)設(shè)為非擴(kuò)容狀態(tài)。
第二方面,本發(fā)明實(shí)施例還提出一種虛擬機(jī)擴(kuò)容處理裝置,包括:
磁盤計(jì)算模塊,用于根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容;
擴(kuò)容模塊,用于根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容。
優(yōu)選地,所述磁盤計(jì)算模塊進(jìn)一步用于根據(jù)第一預(yù)設(shè)間隔,間隔判斷擴(kuò)容標(biāo)識(shí),若判斷獲知所述擴(kuò)容標(biāo)識(shí)為非擴(kuò)容狀態(tài),則根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容。
優(yōu)選地,所述裝置還包括:
擴(kuò)容請(qǐng)求間隔發(fā)送模塊,用于在收到擴(kuò)容主程序的確認(rèn)收到響應(yīng)之前,根據(jù)第二預(yù)設(shè)間隔,間隔向所述擴(kuò)容主程序發(fā)送擴(kuò)容請(qǐng)求。
優(yōu)選地,所述裝置還包括:
擴(kuò)容成功間隔檢測(cè)模塊,用于在檢測(cè)到擴(kuò)容成功之前,根據(jù)第三預(yù)設(shè)間隔,間隔檢測(cè)所述虛擬機(jī)的擴(kuò)容是否成功。
優(yōu)選地,所述裝置還包括:
警告模塊,用于若檢測(cè)到擴(kuò)容成功之前,接收到所述擴(kuò)容主程序發(fā)送的錯(cuò)誤消息,則輸出警告信息,并將所述擴(kuò)容標(biāo)識(shí)設(shè)為非擴(kuò)容狀態(tài)。
由上述方案可知,本發(fā)明實(shí)施例通過對(duì)虛擬機(jī)當(dāng)前的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值進(jìn)行計(jì)算,實(shí)時(shí)獲知虛擬機(jī)的狀態(tài),當(dāng)需要擴(kuò)容時(shí),再對(duì)虛擬機(jī)進(jìn)行擴(kuò)容,不僅能夠?qū)崟r(shí)監(jiān)控虛擬機(jī)當(dāng)前的狀態(tài),而且根據(jù)虛擬機(jī)當(dāng)前狀態(tài)進(jìn)行擴(kuò)容,節(jié)省了計(jì)算機(jī)資源。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些圖獲得其他的附圖。
圖1為本發(fā)明一實(shí)施例提供的一種虛擬機(jī)擴(kuò)容處理方法的流程示意圖;
圖2為本發(fā)明一實(shí)施例提供的一種虛擬機(jī)擴(kuò)容處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)發(fā)明的具體實(shí)施方式作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護(hù)范圍。
圖1示出了本發(fā)明一實(shí)施例提供的一種虛擬機(jī)擴(kuò)容處理方法的流程示意圖,包括:
S101、根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容;
其中,所述磁盤分配大小為給虛擬機(jī)分配的總的空間;
所述磁盤使用大小為虛擬機(jī)已經(jīng)使用的空間;
所述擴(kuò)容告警值為當(dāng)虛擬機(jī)中的磁盤空間還剩余多少時(shí)就進(jìn)行擴(kuò)容的閾值。比如:創(chuàng)建虛擬機(jī)時(shí),申請(qǐng)的磁盤空間是100G,每次擴(kuò)容值是5G,擴(kuò)容告警值是3G,定時(shí)監(jiān)控間隔時(shí)間是5秒,那么實(shí)際創(chuàng)建時(shí),可能只分配了20G空間,這樣根據(jù)配置,每隔5秒對(duì)磁盤檢測(cè)一次,當(dāng)某次檢測(cè)發(fā)現(xiàn)磁盤空間剩余小于等于3G(擴(kuò)容告警值),這時(shí)開始為磁盤申請(qǐng)擴(kuò)容,而每次擴(kuò)容最多是5G。
系統(tǒng)啟動(dòng)時(shí)獲取對(duì)應(yīng)監(jiān)控虛擬機(jī)的配置信息,包括每次擴(kuò)容值extend_value、擴(kuò)容告警值warn_value和定時(shí)監(jiān)控間隔時(shí)間check_time。其中每次擴(kuò)容值是指當(dāng)虛擬機(jī)中的磁盤空間不足時(shí),每次最多為其擴(kuò)容多少。定時(shí)監(jiān)控間隔時(shí)間是指每隔多長時(shí)間做一次磁盤檢測(cè)。這些配置信息從配置文件讀取后,就保存在程序的內(nèi)存當(dāng)中,方便后續(xù)的讀取。根據(jù)配置信息,創(chuàng)建定時(shí)器,用來定時(shí)檢測(cè)磁盤。
S102、根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容。
本實(shí)施例通過對(duì)虛擬機(jī)當(dāng)前的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值進(jìn)行計(jì)算,實(shí)時(shí)獲知虛擬機(jī)的狀態(tài),當(dāng)需要擴(kuò)容時(shí),再對(duì)虛擬機(jī)進(jìn)行擴(kuò)容,不僅能夠?qū)崟r(shí)監(jiān)控虛擬機(jī)當(dāng)前的狀態(tài),而且根據(jù)虛擬機(jī)當(dāng)前狀態(tài)進(jìn)行擴(kuò)容,節(jié)省了計(jì)算機(jī)資源。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,S101進(jìn)一步包括:
根據(jù)第一預(yù)設(shè)間隔,間隔判斷擴(kuò)容標(biāo)識(shí),若判斷獲知所述擴(kuò)容標(biāo)識(shí)為非擴(kuò)容狀態(tài),則根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容。
其中,第一個(gè)定時(shí)器為定時(shí)檢測(cè),用來檢測(cè)是否需要擴(kuò)容,如果需要?jiǎng)t發(fā)送擴(kuò)容請(qǐng)求,如果不需要?jiǎng)t不發(fā)送,如果已經(jīng)發(fā)送了擴(kuò)容請(qǐng)求,那么就會(huì)檢測(cè)到擴(kuò)容狀態(tài),此時(shí)不用真正去檢測(cè)。
通過設(shè)置定時(shí)器間隔檢測(cè)擴(kuò)容標(biāo)識(shí),能夠及時(shí)、準(zhǔn)確獲知虛擬機(jī)是否處于擴(kuò)容狀態(tài),當(dāng)處于擴(kuò)容狀態(tài)時(shí),停止擴(kuò)容申請(qǐng);當(dāng)不處于擴(kuò)容狀態(tài)時(shí),可能定時(shí)判斷是否需要進(jìn)行擴(kuò)容。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,S101之后,還包括:
1012、在收到擴(kuò)容主程序的確認(rèn)收到響應(yīng)之前,根據(jù)第二預(yù)設(shè)間隔,間隔向所述擴(kuò)容主程序發(fā)送擴(kuò)容請(qǐng)求S。
其中,第二個(gè)定時(shí)器為重新發(fā)送定時(shí)器,發(fā)送的消息如果在某個(gè)時(shí)間內(nèi)沒有收到回復(fù),那么認(rèn)為對(duì)端(擴(kuò)容主程序)沒有收到,所以要定時(shí)重新發(fā)送。
通過重復(fù)發(fā)送擴(kuò)容請(qǐng)求,能夠確保擴(kuò)容主程序收到擴(kuò)容請(qǐng)求。
進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,S102之后,還包括:
S103、在檢測(cè)到擴(kuò)容成功之前,根據(jù)第三預(yù)設(shè)間隔,間隔檢測(cè)所述虛擬機(jī)的擴(kuò)容是否成功。
其中,第三個(gè)定時(shí)器為結(jié)果判斷定時(shí)器,當(dāng)接收到擴(kuò)容主程序的答復(fù),答復(fù)內(nèi)容是“我接受了擴(kuò)容情況,但是并不代表擴(kuò)容成功”,因此需要通過定時(shí)器來判斷是否擴(kuò)容成功。
通過確認(rèn)擴(kuò)容成功,以便更新擴(kuò)容標(biāo)識(shí)等計(jì)算機(jī)狀態(tài)。進(jìn)一步地,在上述方法實(shí)施例的基礎(chǔ)上,所述方法還包括:
S104、若檢測(cè)到擴(kuò)容成功之前,接收到所述擴(kuò)容主程序發(fā)送的錯(cuò)誤消息,則輸出警告信息,并將所述擴(kuò)容標(biāo)識(shí)設(shè)為非擴(kuò)容狀態(tài)。
通過收到錯(cuò)誤消息后輸出警告信息,能夠提示用戶擴(kuò)容失敗,同時(shí)更新擴(kuò)容標(biāo)識(shí)。
本實(shí)施例通過3個(gè)定時(shí)器來監(jiān)控虛擬機(jī)的狀態(tài),3個(gè)定時(shí)器分別為上述第一預(yù)設(shè)時(shí)間間隔對(duì)擴(kuò)容標(biāo)識(shí)的定時(shí)檢測(cè)、上述第二預(yù)設(shè)時(shí)間間隔對(duì)擴(kuò)容請(qǐng)求的定時(shí)發(fā)送和上述第三預(yù)設(shè)時(shí)間間隔對(duì)擴(kuò)容成功的定時(shí)檢測(cè)。通過上述3個(gè)定時(shí)器可以有效的實(shí)現(xiàn)精簡配置的功能。
以下對(duì)定時(shí)檢測(cè)的步驟進(jìn)行詳細(xì)描述:
A1、檢測(cè)磁盤時(shí),檢查擴(kuò)容標(biāo)志,判斷當(dāng)前是否正在擴(kuò)容,如果正在擴(kuò)容階段,那么返回,不做處理,如果沒有在擴(kuò)容,那么讀取每次擴(kuò)容值和每次擴(kuò)容值;
A2、讀取為虛擬機(jī)分配的磁盤空間的大小storage_size和已經(jīng)使用的大小used_size,當(dāng)storage_size-used_size<=space_warn_value時(shí),說明空間不足了,需要擴(kuò)容,否則直接返回,不需要擴(kuò)容;
A3、當(dāng)需要擴(kuò)容時(shí),計(jì)算下需要擴(kuò)容到final_size=storage_size+extend_value;
A4、發(fā)送擴(kuò)容請(qǐng)求。如果發(fā)送請(qǐng)求失敗,則返回,經(jīng)過時(shí)間間隔后,會(huì)進(jìn)入下一次的檢測(cè)。如果發(fā)送成功,那么設(shè)置該磁盤正在擴(kuò)容。這樣當(dāng)下一次定時(shí)檢測(cè)時(shí),根據(jù)上述A1實(shí)際上不會(huì)在做A2到A4這些多余的事情了。
發(fā)送擴(kuò)容請(qǐng)求后,會(huì)創(chuàng)建一個(gè)定時(shí)器,每隔5秒(可以修改)將請(qǐng)求重新發(fā)送一次,避免因?yàn)榫W(wǎng)絡(luò)問題或者接收端忙而沒有收到消息。
重新發(fā)送定時(shí)器,就是簡單的發(fā)送請(qǐng)求,雖然說定時(shí)檢測(cè)也能做這些事情,但是相比定時(shí)檢測(cè)來說,少做了定時(shí)檢測(cè)的前三步工作。
成功發(fā)送擴(kuò)容請(qǐng)求后,對(duì)端會(huì)回復(fù)一個(gè)消息,表明收到了該消息,但是由于對(duì)端只是表明收到了消息,還沒有表明已經(jīng)擴(kuò)容成功,所以在收到該消息時(shí)要做一些處理:
接收到對(duì)端發(fā)送的error消息,表明擴(kuò)容請(qǐng)求有誤,此時(shí)要打印告警信息,并清除磁盤的擴(kuò)容標(biāo)記(以便定時(shí)檢測(cè)可以繼續(xù)檢測(cè)磁盤),同時(shí)刪除重新發(fā)送定時(shí)器。
接收到對(duì)端發(fā)送的是已經(jīng)接受該請(qǐng)求,那么說明擴(kuò)容請(qǐng)求已經(jīng)開始處理,只要等待結(jié)果即可,此時(shí)需要?jiǎng)h除重新發(fā)送定時(shí)器,并創(chuàng)建結(jié)果判斷定時(shí)器,用來判斷請(qǐng)求擴(kuò)容的結(jié)果。
結(jié)果判斷定時(shí)器通常是從數(shù)據(jù)庫中讀取擴(kuò)容結(jié)果,每隔5秒(可以修改)執(zhí)行一次,當(dāng)發(fā)現(xiàn)連續(xù)5次(可以修改),即25秒了,還沒有從數(shù)據(jù)庫中得到最終的擴(kuò)容結(jié)果的時(shí)候,那么認(rèn)為對(duì)端執(zhí)行擴(kuò)容可能存在些問題,那么刪除自己(即結(jié)果判斷定時(shí)器),清除磁盤的擴(kuò)容標(biāo)志,這樣定時(shí)檢測(cè)會(huì)執(zhí)行所有內(nèi)容,而不是在A1部分返回。
如果判斷定時(shí)器在5次內(nèi)讀取到了最終的結(jié)果,那么清除磁盤擴(kuò)容標(biāo)志,使得定時(shí)檢測(cè)可以執(zhí)行所有內(nèi)容,同時(shí)設(shè)置storage_size為數(shù)據(jù)庫中讀取的數(shù)值。
圖2示出了本發(fā)明一實(shí)施例提供的一種虛擬機(jī)擴(kuò)容處理裝置的結(jié)構(gòu)示意圖,所述裝置包括:磁盤計(jì)算模塊21和擴(kuò)容模塊22,其中,
所述磁盤計(jì)算模塊21用于根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容;
所述擴(kuò)容模塊22用于根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容。
具體地,所述磁盤計(jì)算模塊21根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容;所述擴(kuò)容模塊22根據(jù)預(yù)設(shè)擴(kuò)容值,對(duì)所述虛擬機(jī)進(jìn)行擴(kuò)容。
本實(shí)施例通過對(duì)虛擬機(jī)當(dāng)前的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值進(jìn)行計(jì)算,實(shí)時(shí)獲知虛擬機(jī)的狀態(tài),當(dāng)需要擴(kuò)容時(shí),再對(duì)虛擬機(jī)進(jìn)行擴(kuò)容,不僅能夠?qū)崟r(shí)監(jiān)控虛擬機(jī)當(dāng)前的狀態(tài),而且根據(jù)虛擬機(jī)當(dāng)前狀態(tài)進(jìn)行擴(kuò)容,節(jié)省了計(jì)算機(jī)資源。
進(jìn)一步地,所述磁盤計(jì)算模塊21進(jìn)一步用于根據(jù)第一預(yù)設(shè)間隔,間隔判斷擴(kuò)容標(biāo)識(shí),若判斷獲知所述擴(kuò)容標(biāo)識(shí)為非擴(kuò)容狀態(tài),則根據(jù)虛擬機(jī)的磁盤分配大小、磁盤使用大小和預(yù)設(shè)的擴(kuò)容告警值,計(jì)算獲知所述虛擬機(jī)需要擴(kuò)容。
進(jìn)一步地,所述裝置還包括:
擴(kuò)容請(qǐng)求間隔發(fā)送模塊23,用于在收到擴(kuò)容主程序的確認(rèn)收到響應(yīng)之前,根據(jù)第二預(yù)設(shè)間隔,間隔向所述擴(kuò)容主程序發(fā)送擴(kuò)容請(qǐng)求。
進(jìn)一步地,所述裝置還包括:
擴(kuò)容成功間隔檢測(cè)模塊24,用于在檢測(cè)到擴(kuò)容成功之前,根據(jù)第三預(yù)設(shè)間隔,間隔檢測(cè)所述虛擬機(jī)的擴(kuò)容是否成功。
更進(jìn)一步地,所述裝置還包括:
警告模塊25,用于若檢測(cè)到擴(kuò)容成功之前,接收到所述擴(kuò)容主程序發(fā)送的錯(cuò)誤消息,則輸出警告信息,并將所述擴(kuò)容標(biāo)識(shí)設(shè)為非擴(kuò)容狀態(tài)。
本實(shí)施例所述的虛擬機(jī)擴(kuò)容處理裝置可以用于執(zhí)行上述方法實(shí)施例,其原理和技術(shù)效果類似,此處不再贅述。
本發(fā)明的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。