本發(fā)明涉及云計算技術(shù)領(lǐng)域,尤其涉及一種提高虛擬機(jī)性能的方法和終端。
背景技術(shù):
在目前云平臺提供的虛擬機(jī)磁盤中,是以ceph(分布式文件系統(tǒng))集中式網(wǎng)絡(luò)存儲作為后端存儲。當(dāng)ceph虛擬存儲器集群出現(xiàn)宕機(jī)時,會造成所有虛擬機(jī)業(yè)務(wù)中斷。另外,當(dāng)虛擬機(jī)訪問ceph網(wǎng)絡(luò)存儲的IO高峰時,會造成業(yè)務(wù)的磁盤訪問擁堵。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種提高虛擬機(jī)性能的方法和終端。
一方面,本發(fā)明提供了一種提高虛擬機(jī)性能的方法,該方法包括:
若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障;
若出現(xiàn)故障,把所述讀請求或者寫請求發(fā)送到與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件以使所述存儲設(shè)備反饋相應(yīng)的數(shù)據(jù);
若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù);
若恢復(fù),把所述寫請求反饋回來的數(shù)據(jù)寫到所述宿主機(jī)相應(yīng)的磁盤上。
另一方面,本發(fā)明提供了一種終端,該終端包括:
判斷單元,用于若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障;
請求發(fā)送單元,用于若宿主機(jī)上保存虛擬磁盤文件的磁盤出現(xiàn)故障,把所述讀請求或者寫請求發(fā)送到與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件以使所述存儲設(shè)備反饋相應(yīng)的數(shù)據(jù);
檢測單元,用于若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù);
同步寫單元,用于若所述宿主機(jī)相應(yīng)的磁盤恢復(fù),把所述寫請求反饋回來的數(shù)據(jù)寫到所述宿主機(jī)相應(yīng)的磁盤上。
本發(fā)明實施例提供的方法和終端,可以在保存虛擬磁盤文件的磁盤出現(xiàn)故障時,保證虛擬機(jī)業(yè)務(wù)的正常運行。
附圖說明
為了更清楚地說明本發(fā)明實施例技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種提高虛擬機(jī)性能的方法流程示意圖;
圖2為本發(fā)明另一實施例提供的一種提高虛擬機(jī)性能的方法流程示意圖;
圖3為步驟S202的具體流程示意圖;
圖4為本發(fā)明實施例提供的一種終端的示意性框圖;
圖5為本發(fā)明第二實施例提供的一種終端的示意性框圖;
圖6為本發(fā)明第三實施例提供的一種終端的示意性框圖;
圖7為本發(fā)明第三實施例提供的一種終端的緩存單元的示意性框圖;
圖8為本發(fā)明第四實施例提供的一種終端的示意性框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)當(dāng)理解,當(dāng)在本說明書和所附權(quán)利要求書中使用時,術(shù)語“包括”和“包含”指示所描述特征、整體、步驟、操作、元素和/或組件的存在,但并不排除一個或多個其它特征、整體、步驟、操作、元素和/或其集合的存在或添加。
圖1為本發(fā)明實施例提供的一種提高虛擬機(jī)性能的方法流程示意圖。該方法包括S101~S109。
S101,若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障。若出現(xiàn)故障,執(zhí)行S102;若沒有出現(xiàn)故障,執(zhí)行S108。若發(fā)出寫請求而沒有該寫請求相對應(yīng)的虛擬磁盤文件時,就添加相應(yīng)的虛擬磁盤文件;若發(fā)出寫請求時有該寫請求相對應(yīng)的虛擬磁盤文件,將相對應(yīng)的虛擬磁盤文件覆蓋。
S102,把所述讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備上保存有虛擬磁盤文件以使該存儲設(shè)備反饋相應(yīng)的數(shù)據(jù)。在宿主機(jī)上預(yù)先存儲宿主機(jī)與該存儲設(shè)備的相關(guān)聯(lián)的關(guān)系。若該存儲設(shè)備是一個獨立的設(shè)備,該相關(guān)聯(lián)的關(guān)系包括存儲設(shè)備的IP地址等。具體地,通過網(wǎng)絡(luò)將所述讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備通過網(wǎng)絡(luò)把反饋的相應(yīng)的數(shù)據(jù)返回到宿主機(jī)。該存儲設(shè)備上保存有宿主機(jī)上的虛擬磁盤文件,宿主機(jī)上也會同時保存該存儲設(shè)備上的虛擬磁盤文件。優(yōu)選地,該存儲設(shè)備與宿主機(jī)位于同一個交換機(jī)上,即同一個網(wǎng)絡(luò)上,如此,網(wǎng)絡(luò)傳輸?shù)乃俣缺容^大,以使所述讀請求或者寫請求以較快的速度發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,不會出現(xiàn)網(wǎng)絡(luò)傳輸?shù)难訒r。若該存儲設(shè)備是一個虛擬存儲器集群,在宿主機(jī)上預(yù)先存儲宿主機(jī)與該虛擬存儲器集群的相關(guān)聯(lián)的關(guān)系,該關(guān)聯(lián)的關(guān)系包括該虛擬存儲器集群的IP地址、存儲容量等。該虛擬存儲器集群上保存有虛擬磁盤文件以使該虛擬存儲器集群反饋相應(yīng)的讀請求或者寫請求的數(shù)據(jù)到宿主機(jī)。優(yōu)選地,在宿主機(jī)上通過調(diào)用相應(yīng)的程序庫就可訪問該虛擬存儲器集群。
S103,若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù)。若宿主機(jī)相應(yīng)的磁盤恢復(fù),執(zhí)行S104;若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),執(zhí)行S105。優(yōu)選地,當(dāng)檢測到宿主機(jī)相應(yīng)的磁盤在預(yù)設(shè)時間內(nèi)沒有恢復(fù),即確定宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù)。預(yù)設(shè)時間優(yōu)選為10天。
S104,把所述寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。若是讀請求返回的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
步驟S101~S104實現(xiàn)了當(dāng)宿主機(jī)存儲虛擬磁盤文件的磁盤出現(xiàn)故障時,把對虛擬磁盤文件的讀請求或者寫請求發(fā)送到宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上以反饋相應(yīng)的數(shù)據(jù),該存儲設(shè)備上有相應(yīng)的虛擬磁盤文件,當(dāng)宿主機(jī)相應(yīng)的磁盤恢復(fù)故障后,把反饋回來的讀請求的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上,以避免宿主機(jī)出現(xiàn)故障時,造成虛擬機(jī)業(yè)務(wù)的中斷,保證虛擬機(jī)業(yè)務(wù)的正常運行。
S105,啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī)。若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),直接啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī),包括存儲設(shè)備上的虛擬機(jī)以及存儲設(shè)備上存儲的宿主機(jī)上的虛擬機(jī)。以避免虛擬機(jī)中斷時間太長,影響虛擬機(jī)的IO操作。
S106,將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián)。
S107,將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備中遷移到所述另一存儲設(shè)備上。
若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián),同時將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上遷移到另一存儲設(shè)備上,以避免在宿主機(jī)上的虛擬磁盤文件丟失以及宿主機(jī)上虛擬機(jī)業(yè)務(wù)的長時間中斷。
S108,在宿主機(jī)相應(yīng)的磁盤上執(zhí)行讀請求或者寫請求。若宿主機(jī)相應(yīng)的磁盤沒有出現(xiàn)故障,在宿主機(jī)相應(yīng)的磁盤上執(zhí)行讀請求或者寫請求。
S109,若執(zhí)行了寫請求,將所述寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件。若是讀請求反饋的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
若宿主機(jī)存儲虛擬磁盤文件的磁盤沒有出現(xiàn)故障,在宿主機(jī)上執(zhí)行讀請求或者寫請求,并把寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上。
圖2為本發(fā)明另一實施例提供的一種提高虛擬機(jī)性能的方法流程示意圖。該方法包括S201~S211。
S201,若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷讀請求或者寫請求是否出現(xiàn)擁塞。若出現(xiàn)擁塞,執(zhí)行S212;若沒有出現(xiàn)擁塞,執(zhí)行S202。若發(fā)出寫請求而沒有該寫請求相對應(yīng)的虛擬磁盤文件時,就添加相應(yīng)的虛擬磁盤文件;若發(fā)出寫請求時有該寫請求相對應(yīng)的虛擬磁盤文件,將相對應(yīng)的虛擬磁盤文件覆蓋。
S202,將所述讀請求或者寫請求緩存到宿主機(jī)分配的內(nèi)存里。宿主機(jī)分配的內(nèi)存包括靜態(tài)共享內(nèi)存和動態(tài)共享內(nèi)存。其中,靜態(tài)共享內(nèi)存的大小是固定的,存取的速度快;動態(tài)共享內(nèi)存的大小隨著存入數(shù)據(jù)的大小動態(tài)變化的,存取的速度比靜態(tài)共享內(nèi)存的存取速度要慢。
具體地,如圖3所示,步驟S202包括S301~S303。S301,將所述讀請求或者寫請求緩存到宿主機(jī)分配的靜態(tài)共享內(nèi)存里。S302,檢測靜態(tài)共享內(nèi)存是否出現(xiàn)內(nèi)存不足。S303,若靜態(tài)共享內(nèi)存出現(xiàn)內(nèi)存不足,將所述讀請求或者寫請求緩存到所述宿主機(jī)分配的動態(tài)共享內(nèi)存里。
S203,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障。若出現(xiàn)故障,執(zhí)行S204,若沒有出現(xiàn)故障,執(zhí)行S210。
S204,根據(jù)預(yù)設(shè)的順序把緩存中的讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備上保存有虛擬磁盤文件以使該存儲設(shè)備反饋相應(yīng)的數(shù)據(jù)。其中,預(yù)設(shè)的順序優(yōu)選為產(chǎn)生讀請求或者寫請求的時間先后順序。
S205,若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù)。若宿主機(jī)相應(yīng)的磁盤恢復(fù),執(zhí)行S206;若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),執(zhí)行S207。優(yōu)選地,當(dāng)檢測到宿主機(jī)相應(yīng)的磁盤在預(yù)設(shè)時間內(nèi)沒有恢復(fù),即確定宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù)。預(yù)設(shè)時間優(yōu)選為10天。
S206,把所述寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。若是讀請求返回的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
S207,啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī)。若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),直接啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī),包括存儲設(shè)備上的虛擬機(jī)以及存儲設(shè)備上存儲的宿主機(jī)上的虛擬機(jī)。以避免虛擬機(jī)中斷時間太長,影響虛擬機(jī)的IO操作。
S208,將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián)。
S209,將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備中遷移到所述另一存儲設(shè)備上。
若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián),同時將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上遷移到另一存儲設(shè)備上,以避免在宿主機(jī)上的虛擬磁盤文件丟失以及在宿主機(jī)上的虛擬機(jī)無法正常運行。
S210,根據(jù)預(yù)設(shè)的順序在宿主機(jī)相應(yīng)的磁盤上執(zhí)行緩存的讀請求或者寫請求。其中,預(yù)設(shè)的順序優(yōu)選為產(chǎn)生讀請求或者寫請求的時間先后順序。
S211,若執(zhí)行了寫請求,將所述寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件。若是讀請求反饋的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
S212,宿主機(jī)不再接收虛擬機(jī)發(fā)出的對虛擬磁盤文件的讀請求或者寫請求。
上述實施例當(dāng)虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求后,判斷讀請求或者寫請求是否出現(xiàn)擁塞,如果沒有出現(xiàn)擁塞,把讀請求或者寫請求緩存到宿主機(jī)分配的內(nèi)存中,然后根據(jù)預(yù)設(shè)的順序執(zhí)行讀請求或者寫請求,保證了磁盤訪問IO的均衡。如果出現(xiàn)擁塞,不再接收虛擬機(jī)發(fā)出的對虛擬磁盤文件的讀請求或者寫請求。避免當(dāng)讀請求或者寫請求出現(xiàn)擁塞時,造成磁盤的訪問擁堵問題。
圖4為本發(fā)明實施例提供的一種終端的示意性框圖。該終端40包括判斷單元401、請求發(fā)送單元402、檢測單元403、同步寫單元404、請求執(zhí)行單元405。
判斷單元401,用于若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障。若發(fā)出寫請求而沒有該寫請求相對應(yīng)的虛擬磁盤文件時,就添加相應(yīng)的虛擬磁盤文件;若發(fā)出寫請求時有該寫請求相對應(yīng)的虛擬磁盤文件,將相對應(yīng)的虛擬磁盤文件覆蓋。
請求發(fā)送單元402,用于若宿主機(jī)上保存虛擬磁盤文件的磁盤出現(xiàn)故障,把所述讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備上保存有虛擬磁盤文件以使該存儲設(shè)備反饋相應(yīng)的數(shù)據(jù)。在宿主機(jī)上預(yù)先存儲宿主機(jī)與該存儲設(shè)備的相關(guān)聯(lián)的關(guān)系。若該存儲設(shè)備是一個獨立的設(shè)備,該相關(guān)聯(lián)的關(guān)系包括存儲設(shè)備的IP地址等。具體地,通過網(wǎng)絡(luò)將所述讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備通過網(wǎng)絡(luò)把反饋的相應(yīng)的數(shù)據(jù)返回到宿主機(jī)。該存儲設(shè)備上保存有宿主機(jī)上的虛擬磁盤文件,宿主機(jī)上也會同時保存該存儲設(shè)備上的虛擬磁盤文件。優(yōu)選地,該存儲設(shè)備與宿主機(jī)位于同一個交換機(jī)上,即同一個網(wǎng)絡(luò)上,如此,網(wǎng)絡(luò)傳輸?shù)乃俣缺容^大,以使所述讀請求或者寫請求以較快的速度發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,不會出現(xiàn)網(wǎng)絡(luò)傳輸?shù)难訒r。若該存儲設(shè)備是一個虛擬存儲器集群,在宿主機(jī)上預(yù)先存儲宿主機(jī)與該虛擬存儲器集群的相關(guān)聯(lián)的關(guān)系,該關(guān)聯(lián)的關(guān)系包括該虛擬存儲器集群的IP地址、存儲容量等。該虛擬存儲器集群上保存有虛擬磁盤文件以使該虛擬存儲器集群反饋相應(yīng)的讀請求或者寫請求的數(shù)據(jù)到宿主機(jī)。優(yōu)選地,在宿主機(jī)上通過調(diào)用相應(yīng)的程序庫就可訪問該虛擬存儲器集群。
檢測單元403,用于若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù)。
同步寫單元404,用于若宿主機(jī)相應(yīng)的磁盤恢復(fù),把所述寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。若是讀請求返回的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋回來的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
上述判斷單元401、請求發(fā)送單元402、檢測單元403、同步寫單元404實現(xiàn)了當(dāng)宿主機(jī)存儲虛擬磁盤文件的磁盤出現(xiàn)故障時,把對虛擬磁盤文件的讀請求或者寫請求發(fā)送到宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上以反饋相應(yīng)的數(shù)據(jù),該存儲設(shè)備上有相應(yīng)的虛擬磁盤文件,當(dāng)宿主機(jī)相應(yīng)的磁盤恢復(fù)故障后,把反饋回來的讀請求的數(shù)據(jù)寫到宿主機(jī)相應(yīng)的磁盤上,以避免宿主機(jī)出現(xiàn)故障時,造成虛擬機(jī)業(yè)務(wù)的中斷,保證虛擬機(jī)業(yè)務(wù)的正常運行。
請求執(zhí)行單元405,用于若宿主機(jī)上保存虛擬磁盤文件的磁盤沒有出現(xiàn)故障,在宿主機(jī)相應(yīng)的磁盤上執(zhí)行讀請求或者寫請求。
同步寫單元404,還用于若在宿主機(jī)相應(yīng)的磁盤上執(zhí)行了寫請求,將所述寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件。若是讀請求反饋的數(shù)據(jù),由于讀請求并沒有修改虛擬磁盤文件的內(nèi)容,因此無需將讀請求反饋回來的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上。而由于執(zhí)行了寫請求,很有可能改變了虛擬磁盤文件的內(nèi)容,因此需要將寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,以保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
上述請求執(zhí)行單元405、同步寫單元404實現(xiàn)了若宿主機(jī)存儲虛擬磁盤文件的磁盤沒有出現(xiàn)故障,在宿主機(jī)上執(zhí)行讀請求或者寫請求,并把寫請求反饋的數(shù)據(jù)寫到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上。保證宿主機(jī)與相關(guān)聯(lián)的存儲設(shè)備上的虛擬磁盤文件的內(nèi)容保持一致。
圖5為本發(fā)明第二實施例提供的一種終端的示意性框圖。該終端50包括判斷單元501、請求發(fā)送單元502、檢測單元503、同步寫單元504、請求執(zhí)行單元505、啟動單元506、關(guān)聯(lián)單元507、遷移單元508。該終端50與終端40的不同之處在于:增加了啟動單元506、關(guān)聯(lián)單元507、遷移單元508。判斷單元501、請求發(fā)送單元502、檢測單元503、同步寫單元504、請求執(zhí)行單元505請參看圖4中相對應(yīng)的各單元,在此不在贅述。
啟動單元506,用于若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī)。與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī),包括存儲設(shè)備上的虛擬機(jī)以及存儲設(shè)備上存儲的宿主機(jī)上的虛擬機(jī)。優(yōu)選地,當(dāng)檢測到宿主機(jī)相應(yīng)的磁盤在預(yù)設(shè)時間內(nèi)沒有恢復(fù),即確定宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),預(yù)設(shè)時間優(yōu)選為10天。啟動與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有虛擬機(jī),以避免虛擬機(jī)中斷時間太長,影響虛擬機(jī)的IO操作。
關(guān)聯(lián)單元507,用于將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián)。
遷移單元508,用于將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備中遷移到所述另一存儲設(shè)備上。
若宿主機(jī)相應(yīng)的磁盤出現(xiàn)故障后無法恢復(fù),將另一存儲設(shè)備與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián),同時將宿主機(jī)上所有的虛擬磁盤文件從所述與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上遷移到另一存儲設(shè)備上,以避免在宿主機(jī)上的虛擬磁盤文件丟失以及在宿主機(jī)上的虛擬機(jī)無法正常運行。
圖6為本發(fā)明第三實施例提供的一種終端的示意性框圖。該終端60包括判斷單元601、請求發(fā)送單元602、檢測單元603、同步寫單元604、請求執(zhí)行單元605、啟動單元606、關(guān)聯(lián)單元607、遷移單元608、緩存單元609、拒收單元610。該終端60與終端50的最大不同之處在于:增加了緩存單元609、拒收單元610。其中,啟動單元606、關(guān)聯(lián)單元607、遷移單元608請參看圖5中相對應(yīng)的各單元,判斷單元601、請求發(fā)送單元602、檢測單元603、同步寫單元604、請求執(zhí)行單元605請參看圖4中相對應(yīng)的各單元,在此不在贅述。
判斷單元601,還用于若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷讀請求或者寫請求是否出現(xiàn)擁塞。
緩存單元609,用于若讀請求或者寫請求沒有出現(xiàn)擁塞,將所述讀請求或者寫請求緩存到宿主機(jī)分配的內(nèi)存里。宿主機(jī)分配的內(nèi)存包括靜態(tài)共享內(nèi)存和動態(tài)共享內(nèi)存。其中,靜態(tài)共享內(nèi)存的大小是固定的,存取的速度快;動態(tài)共享內(nèi)存的大小隨著存入數(shù)據(jù)的大小動態(tài)變化的,存取的速度比靜態(tài)共享內(nèi)存的存取速度要慢。具體地,如圖7所示,緩存單元609包括第一緩存單元701、內(nèi)存檢測單元702、第二緩存單元703。第一緩存單元701,用于將所述讀請求或者寫請求緩存到宿主機(jī)分配的靜態(tài)共享內(nèi)存里。內(nèi)存檢測單元702,用于檢測靜態(tài)共享內(nèi)存是否出現(xiàn)內(nèi)存不足。第二緩存單元703,用于若靜態(tài)共享內(nèi)存出現(xiàn)內(nèi)存不足,將所述讀請求或者寫請求緩存到所述宿主機(jī)分配的動態(tài)共享內(nèi)存里。
判斷單元601,還用于判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障。
請求發(fā)送單元602,還用于若宿主機(jī)上保存虛擬磁盤文件的磁盤出現(xiàn)故障,根據(jù)預(yù)設(shè)的順序把緩存中的讀請求或者寫請求發(fā)送到與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,該存儲設(shè)備上保存有虛擬磁盤文件以使該存儲設(shè)備反饋相應(yīng)的數(shù)據(jù)。其中,預(yù)設(shè)的順序優(yōu)選為產(chǎn)生讀請求或者寫請求的時間先后順序。
請求執(zhí)行單元605,還用于若宿主機(jī)上保存虛擬磁盤文件的磁盤沒有出現(xiàn)故障,根據(jù)預(yù)設(shè)的順序在宿主機(jī)相應(yīng)的磁盤上執(zhí)行緩存的讀請求或者寫請求。其中,預(yù)設(shè)的順序優(yōu)選為產(chǎn)生讀請求或者寫請求的時間先后順序。
拒收單元610,用于若讀請求或者寫請求出現(xiàn)擁塞,不再接收虛擬機(jī)發(fā)出的對虛擬磁盤文件的讀請求或者寫請求。
上述實施例當(dāng)虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求時,判斷讀請求或者寫請求是否出現(xiàn)擁塞,如果沒有出現(xiàn)擁塞,把讀請求或者寫請求緩存到宿主機(jī)分配的內(nèi)存中,根據(jù)預(yù)設(shè)的順序執(zhí)行讀請求或者寫請求,保證了虛擬磁盤訪問的IO均衡。若出現(xiàn)擁塞,不再接收虛擬機(jī)發(fā)出的對虛擬磁盤文件的讀請求或者寫請求,避免當(dāng)讀請求或者寫請求出現(xiàn)擁塞時,造成磁盤的訪問擁堵問題。
圖8為本發(fā)明第四實施例提供的一種終端的示意性框圖。該終端80包括包括輸入裝置801、輸出裝置802、存儲器803以及處理器804,上述輸入裝置801、輸出裝置802、存儲器803以及處理器804通過總線805連接。其中:
輸入裝置801,用于提供用戶輸入對虛擬磁盤文件的讀請求或者寫請求。具體實現(xiàn)中,本發(fā)明實施例的輸入裝置801可包括鍵盤、鼠標(biāo)、光電輸入裝置、聲音輸入裝置、觸摸式輸入裝置等。
輸出裝置802,用于輸出讀請求或者寫請求反饋的數(shù)據(jù)等。具體實現(xiàn)中,本發(fā)明實施例的輸出裝置802可包括顯示器、顯示屏、觸摸屏、聲音輸出裝置等。
存儲器803,用于存儲帶有各種功能的程序數(shù)據(jù)。本發(fā)明實施例中存儲器803存儲的數(shù)據(jù)包括宿主機(jī)與宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備、讀請求或者寫請求等,以及其他可調(diào)用并運行的程序數(shù)據(jù)。具體實現(xiàn)中,本發(fā)明實施例的存儲器803可以是系統(tǒng)存儲器,比如,揮發(fā)性的(諸如RAM),非易失性的(諸如ROM,閃存等),或者兩者的結(jié)合。具體實現(xiàn)中,本發(fā)明實施例的存儲器803還可以是系統(tǒng)之外的外部存儲器,比如,磁盤、光盤、磁帶等。
處理器804,用于調(diào)用存儲器803中存儲的程序數(shù)據(jù),并執(zhí)行如下操作:
若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障;若出現(xiàn)故障,把所述讀請求或者寫請求發(fā)送到與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件以使所述存儲設(shè)備反饋相應(yīng)的數(shù)據(jù);若接收到寫請求反饋回來的數(shù)據(jù),檢測宿主機(jī)相應(yīng)的磁盤是否恢復(fù);若恢復(fù),把所述寫請求反饋回來的數(shù)據(jù)寫到所述宿主機(jī)相應(yīng)的磁盤上。若宿主機(jī)上保存虛擬磁盤文件的磁盤沒有出現(xiàn)故障,在所述宿主機(jī)相應(yīng)的磁盤上執(zhí)行讀請求或者寫請求;若執(zhí)行了寫請求,將所述寫請求反饋的數(shù)據(jù)寫到與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件。
處理器804,還執(zhí)行如下操作:
若宿主機(jī)上保存虛擬磁盤文件的磁盤出現(xiàn)故障后無法恢復(fù),啟動與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上的所有的虛擬機(jī);將另一存儲設(shè)備與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備進(jìn)行關(guān)聯(lián);將所述宿主機(jī)上所有的虛擬磁盤文件從所述與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備中遷移到所述另一存儲設(shè)備上。
處理器804,還執(zhí)行如下操作:
若虛擬機(jī)發(fā)出對虛擬磁盤文件的讀請求或者寫請求,判斷讀請求或者寫請求是否出現(xiàn)擁塞;若沒有出現(xiàn)擁塞,將所述讀請求或者寫請求緩存到所述宿主機(jī)分配的內(nèi)存里;判斷宿主機(jī)上保存虛擬磁盤文件的磁盤是否出現(xiàn)故障;若出現(xiàn)故障,根據(jù)預(yù)設(shè)的順序把緩存的讀請求或者寫請求發(fā)送到與所述宿主機(jī)相關(guān)聯(lián)的存儲設(shè)備上,所述存儲設(shè)備上保存有所述虛擬磁盤文件以使所述存儲設(shè)備反饋相應(yīng)的數(shù)據(jù)。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的終端和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的終端和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本發(fā)明實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以是兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。