一種虛擬機磁盤輸入輸出調度方法及系統的制作方法
【技術領域】
[0001]本發明涉及計算機領域,尤其涉及一種虛擬機磁盤輸入輸出調度方法及系統。
【背景技術】
[0002]Linux Container (lxc)容器是一種內核虛擬化技術,目前lxc作為一種輕量級的虛擬化方案,被廣泛應用;lxc在CPU和內存方面有較好的隔離性,但磁盤輸入輸出(或讀寫)10方面隔離較差。對于部署于同一底層磁盤的多個子機,在一 /多個子機磁盤10密集時,其他子機會因10饑餓而無法正常工作;為了消除這種影響,必須對高10進行限制,以實現10隔離。
[0003]現有技術可以通過邏輯卷管理(Logical Volume Manager, LVM)技術來實現lxc的?ο隔離,LVM作為lxc的存儲設備,底層是一塊scsi盤;例如通過1-throttle限速機制,根據具體的每秒讀寫次數(Input/Output Operat1ns Per Second, 1ps)和位/秒(bps)來限制10。具體地,結合控制組control groups (cgroup)和塊輸入輸出限制(blk1),設置相應cgroup對各個塊設備的訪問1ps和bps限制后,各個cgroup中的進程讀寫塊設備的帶寬不會超過設定值,從而達到限速效果,實現10的隔離。
[0004]現有技術的1-throttle限速機制是通過設定固定的值去限定每個cgroup產生的10個數和字節數,從根本上限制住高10產生的頻率,留出足夠的帶寬給其他cgroup使用;即,1-throttle需要一個固定的bps或者1ps值,然而,在實際應用過程中,磁盤10是動態變化的,因此,現有技術中設固定值的方法來實現磁盤10隔離將大大降低磁盤10的效率,不利于虛擬機的運行。
【發明內容】
[0005]本發明實施例所要解決的技術問題在于,提供一種虛擬機磁盤輸入輸出調度方法及系統,通過監測虛擬機磁盤的輸入輸出服務狀態來動態調整LVM使用的帶寬,解決了現有技術中通過設固定值來實現磁盤10隔離造成磁盤10的效率降低的技術問題,大大提高了虛擬機的運行速度。
[0006]為了解決上述技術問題,本發明實施例第一方面公開了一種虛擬機磁盤輸入輸出調度方法,包括
[0007]當監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態時,獲取在當前時刻之前的第一預設時間段內各個邏輯卷管理LVM使用的帶寬;
[0008]根據在所述繁忙狀態下獲取的各個LVM使用的帶寬,減少第一 LVM使用的帶寬,所述第一 LVM為在所述繁忙狀態下獲取的各個LVM使用的帶寬中帶寬最大對應的LVM ;
[0009]當經過第二預設時間段后監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態,則重復執行所述獲取在當前時刻之前的第一預設時間段內各個LVM使用的帶寬的步驟。
[0010]本發明實施例第二方面公開了一種虛擬機磁盤輸入輸出調度系統,包括:
[0011]獲取模塊,用于當監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態時,獲取在當前時刻之前的第一預設時間段內各個邏輯卷管理LVM使用的帶寬;
[0012]帶寬減少模塊,用于根據在所述繁忙狀態下獲取的各個LVM使用的帶寬,減少第一 LVM使用的帶寬,所述第一 LVM為在所述繁忙狀態下獲取的各個LVM使用的帶寬中帶寬最大對應的LVM ;
[0013]觸發執行模塊,用于當經過第二預設時間段后監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態,則觸發所述獲取模塊重復執行獲取的步驟。
[0014]實施本發明實施例,具有如下有益效果:
[0015]通過監測虛擬機磁盤的輸入輸出服務狀態來動態調整LVM使用的帶寬,實現動態地限制各個cgroup中進程讀寫塊設備的帶寬,從而實現了虛擬機磁盤10的隔離,解決了現有技術中通過設固定值來實現磁盤10隔離造成磁盤10的效率降低的技術問題,大大提高了虛擬機的運行速度。
【附圖說明】
[0016]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0017]圖1是本發明實施例提供的虛擬機磁盤輸入輸出調度方法的流程示意圖;
[0018]圖2是本發明提供的監測虛擬機磁盤的輸入輸出服務狀態方法的流程示意圖;
[0019]圖3是本發明提供的另一實施例的監測虛擬機磁盤的輸入輸出服務狀態方法的流程示意圖;
[0020]圖4是本發明提供的獲取的LVM使用的帶寬的流程示意圖;
[0021]圖5是本發明提供的另一實施例的虛擬機磁盤輸入輸出調度方法的流程示意圖;
[0022]圖6是本發明提供的虛擬機磁盤輸入輸出調度系統的結構示意圖;
[0023]圖7是本發明提供的另一實施例的虛擬機磁盤輸入輸出調度系統的結構示意圖;
[0024]圖8是本發明提供的監測模塊的結構示意圖;
[0025]圖9是本發明提供的帶寬減少模塊的結構示意圖;
[0026]圖10是本發明提供的另一實施例的虛擬機磁盤輸入輸出調度系統的結構示意圖;
[0027]圖11是本發明提供的虛擬機磁盤輸入輸出調度系統的另一實施例的結構示意圖。
【具體實施方式】
[0028]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0029]參見圖1,是本發明實施例提供的虛擬機磁盤輸入輸出調度方法的流程示意圖,該方法包括:
[0030]步驟S100:當監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態時,獲取在當前時刻之前的第一預設時間段內各個邏輯卷管理LVM使用的帶寬;
[0031]具體地,步驟S100之前,本發明實施例還包括監測虛擬機磁盤的10服務狀態的步驟,那么在監測到虛擬機磁盤的10服務狀態為繁忙狀態時執行步驟S100 ;需要說明的是,本發明各個實施例中的第一預設時間段可以根據實際使用情況自定義設置,包括但不限于1秒、1.5秒、2秒、3秒等等;優選地,該第一預設時間段為1秒到2秒之間。
[0032]步驟S102:根據在所述繁忙狀態下獲取的各個LVM使用的帶寬,減少第一 LVM使用的帶寬,所述第一 LVM為在所述繁忙狀態下獲取的各個LVM使用的帶寬中帶寬最大對應的 LVM ;
[0033]具體地,可以通過在虛擬機磁盤的10服務狀態為繁忙狀態下獲取的各個LVM使用的帶寬中找出帶寬最大對應的LVM,將該找出的最大帶寬對應的LVM作為限速對象(即本發明實施例中的第一 LVM),減少該第一 LVM使用的帶寬;減少的方式可以根據實際使用情況來設定,包括但不限于將該第一 LVM使用的帶寬乘以一個系數,以達到減少該第一 LVM使用的帶寬,該系數可以為0.7,0.8或0.9等,不作限制。
[0034]步驟S104:當經過第二預設時間段后監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態,則重復執行所述獲取在當前時刻之前的第一預設時間段內各個LVM使用的帶寬的步驟。
[0035]具體地,隨著磁盤10進行,磁盤10將不斷地動態改變,在執行完步驟S102后,可能出現以下情況:1、10限速效果不夠,磁盤繼續繁忙;2、磁盤10不再繁忙;因此,執行完步驟S102后,本發明實施例還執行對虛擬機磁盤的輸入輸出服務狀態的監測,詳細地,在執行完步驟S102并經過第二預設時間段后仍然監測到虛擬機磁盤的輸入輸出服務狀態為繁忙狀態,那么將重復執行上述步驟S100中獲取在當前時刻之前的第一預設時間段內各個LVM使用的帶寬的步驟,可理解的是,后續將繼續往下執行步驟S102。
[0036]可理解的是,步驟S102每次執行完減少該第一 LVM使用的帶寬后,可以將該第一LVM對應的throttle隊列的限速change標志置為1,以使新的限速值生效;另,每次執行步驟S102時的第一 LVM使用的帶寬可以與之前執行時找出的第一 LVM使用的帶寬不同,該第一 LVM使用的帶寬是指當次獲取的各個LVM使用的帶寬中帶寬最大對應的LVM。
[0037]需要說明的是,本發明各個實施例中的第二預設時間段可以根據實際使用情況自定義設置,包括但不限于1秒、1.5秒、2秒、3秒等等;優選地,該第一預設時間段為1秒到2秒之間。該第二預設時間段可以等于該第一預設時間段。
[0038]通過圖1實施例,監測虛擬機磁盤的輸入輸出服務狀態來動態調整LVM使用的帶寬,實現了動態地限制各個cgroup中進程讀寫塊設備的帶寬,從而實現了虛擬機磁盤10的隔離,解決了現有技術中通過設固定值來實現磁盤10隔離造成磁盤10的效率降低的技術問題,大大提高了虛擬機的運行速度。
[0039]進一步地,本發明實施例中監測所述虛擬