一種虛擬磁盤構建方法
【技術領域】
[0001] 本發明涉及虛擬機磁盤技術領域,特別是一種結合塊設備和虛擬磁盤文件格式優 點的虛擬磁盤構建方法。
【背景技術】
[0002] 如果單獨使用虛擬磁盤文件格式的方式來創建和使用虛擬磁盤,其最大優點是可 以按需使用,節約空間,以及格式靈活,但是會帶來以下問題:
[0003] -是虛擬磁盤放在文件系統上,讀寫效率相對低下;
[0004] 二是共享不方便,如果要想共享,需要用到第三方網絡文件系統如nfs,這樣會增 加系統的復雜性,增加運維的負擔;
[0005] 如果直接使用塊設備的方式來創建和使用虛擬磁盤,其最大優點是讀寫效率高, 共享方便,但是會帶來以下問題:
[0006] -是浪費空間,因為塊設備格式化創建文件系統后實際占用的空間就是虛擬磁盤 所定義的大小,即使磁盤里面什么內容都沒寫入,也是要占用超過實際寫入數據大小的空 間的。
[0007] 二是在對磁盤上的數據進行存儲、快照、備份、打包等操作時因為操作的是整個塊 設備上的數據,所以特別浪費空間和時間。
[0008] 三是缺乏虛擬磁盤格式的各種靈活性,比如不同格式之間的互相轉換。
[0009] 單獨使用qC〇w2文件系統方式或者單獨使用塊設備方式來創建和使用虛擬磁盤, 都有各自的優點和缺點,不管使用哪種方式,都有其局限性,需要找一種方法,使得虛擬磁 盤的使用同時擁有這兩種方式的優點,且規避這兩種方式的缺點。
【發明內容】
[0010] 本發明解決的技術問題在于提供一種的虛擬磁盤構建方法;結合塊設備和虛擬磁 盤文件格式優點,解決了單獨使用虛擬磁盤文件格式的方式或者單獨使用塊設備的方式使 用虛擬磁盤所帶來的問題。
[0011] 本發明解決上述問題的技術方案,包括以下步驟:
[0012] 所述的方法包括如下步驟:
[0013] 步驟1:準備一個塊設備,塊設備實現方式不限;
[0014] 步驟2:使用qemu工具鏈在塊設備上創建一個qcow2格式的文件;
[0015] 步驟3:把此塊設備的路徑配置進虛擬機的磁盤路徑配置項里;
[0016] 步驟4:把虛擬機磁盤的設備格式配置為qcow2格式;
[0017] 步驟5:完成創建,可按需要對虛擬磁盤進行操作。
[0018] 所述的塊設備可以從不同類型的存儲系統,如SAN存儲或分布式存儲系統里創建 一個塊設備并映射到本地路徑上。
[0019] 用命令格式qemu-img create-f qcow2/path/to/block_devsizeG,在塊設備上創 建一個qcow2格式的文件。
[0020] 修改虛擬機配置文件里面的source參數,配置虛擬機的磁盤路徑,如:〈source f i le =' /dev/rbd/volumes/volume-xxxxxxxxxxx' />;把此塊設備的路徑配置進虛擬機的 磁盤路徑配置項里;
[0021 ]修改driver參數,如:〈driver name =' qemu' type =' qcow^ cache =' none' />;把 虛擬機磁盤的設備格式配置為qcow2格式。
[0022] 本發明提供一種結合塊設備和虛擬磁盤文件格式優點的虛擬磁盤使用方式,通過 比較容易實現的方法結合這兩種方式來創建虛擬磁盤,成功的規避了單獨使用的方式所帶 來的各種問題,使得虛擬磁盤同時擁有了虛擬磁盤文件格式磁盤和塊設備磁盤的優點,不 僅節約空間,方便共享,格式靈活,傳輸速度更快,也提高了系統的穩定性以及降低了維護 成本。本發明能適用于不同類型的存儲系統,比如SAN存儲或分布式存儲系統,實現簡單。
【附圖說明】
[0023] 下面結合附圖對本發明進一步說明:
[0024]圖1是本發明流程框圖。
【具體實施方式】
[0025]見圖1所示,本發明的實施包括以下步驟:
[0026] 1、使用qemu工具鏈在塊設備上創建一個qcow2格式的文件,命令如下;
[0027] qemu-img create-f qcow2/dev/rbd/volume-χχχχχ 100G
[0028] 其中/de v/rbd/vo lume-xxxxx指的是塊設備的路徑
[0029] 2、把塊設備的路徑配置進虛擬機的磁盤路徑配置項里,這個是寫到libvirt. xml 的,代碼如下;
[0030] public ¥〇 i d setLibvirtXml(VmDetai1 vmlns) throws GCloudException{ String templetPath = VmNodeUtil. getLibvirtTempletPat;h(); File tempietXmi = new File(templetPath); String I jbXmlPath = VmNodeUtiL getlibvirtXinlPath (vmlns. getUserTdO, vmlns. ge tlnstanceldO ); String core = String. valueOf(vmlns. getCore()); String memQryKb = String. valueOf (vmlns. getMemoryO * i024L); List<VmDi:skDetail> vmDisks = vmlns. getVmDisks ();
[0031]
[0032] 完成后,在配置文件中參數值如下(注意這個路徑是到實際塊設備的軟連接):
[0033] <sourcefile=//instances/disk/lcb99ecb01c548bfbe684fa4d095338f/i-e^SSEOS/i-e^SSEOS.snap 7 /> ;
[0034] 3、把虛擬機磁盤的設備格式配置為qc〇w2格式,命令如下;
[0035] qemu-img create-b bFile-f format disk sizeGB
[0036] 其中參數:bFile是指的鏡像;disk是指的系統盤;sizeGB是指的系統盤大小。
[0037] 完成后,在配置文件中參數值如下:
[0038] <driver name =7 qemu7 type =7 qcow27 cache =7 none7/>〇
【主權項】
1. 一種虛擬磁盤構建方法,其特征在于:所述的方法包括如下步驟: 步驟1:準備一個塊設備,塊設備實現方式不限; 步驟2:使用qemu工具鏈在塊設備上創建一個qcow2格式的文件; 步驟3:把此塊設備的路徑配置進虛擬機的磁盤路徑配置項里; 步驟4:把虛擬機磁盤的設備格式配置為qcow2格式; 步驟5:完成創建,可按需要對虛擬磁盤進行操作。2. 根據權利1所述的虛擬磁盤構建方法,其特征在于:所述的塊設備可以從不同類型的 存儲系統,如SAN存儲或分布式存儲系統里創建一個塊設備并映射到本地路徑上。3. 根據權利1所述的虛擬磁盤構建方法,其特征在于:用命令格式qemu-img create-f qcow2/path/to/block_devsizeG,在塊設備上創建一個qcow2格式的文件。4. 根據權利2所述的虛擬磁盤構建方法,其特征在于:用命令格式qemu-img create-f qcow2/path/to/block_devsizeG,在塊設備上創建一個qcow2格式的文件。5. 根據權利1至4任一項所述的虛擬磁盤構建方法,其特征在于:修改虛擬機配置文件 里面的source參數,配置虛擬機的磁盤路徑,如:〈source f ile = '/dev/rbd/volumes/ volume-xxxxxxxxxxx '/>;把此塊設備的路徑配置進虛擬機的磁盤路徑配置項里; 修改driver參數,如:〈driver name ='qemu'type = 'qcow2'cache = 'none'/>;把虛擬 機磁盤的設備格式配置為qcow2格式。
【專利摘要】本發明涉及虛擬機磁盤技術領域,特別是一種結合塊設備和虛擬磁盤文件格式優點的虛擬磁盤構建方法。本發明首先準備一個塊設備,塊設備的實現方式不限,然后使用qemu工具鏈在該塊設備上創建一個qcow2格式的文件,再把此塊設備的路徑配置進虛擬機的磁盤路徑配置項里,并把虛擬機磁盤的設備格式配置成qcow2格式,這樣就完成了虛擬磁盤的創建和虛擬機的創建,可按需要操作該虛擬磁盤。本發明解決了單獨使用虛擬磁盤文件格式的方式或者單獨使用塊設備的方式創建虛擬磁盤所帶來的問題;本發明適用于不同類型存儲系統的虛擬磁盤構建。
【IPC分類】G06F9/455
【公開號】CN105511938
【申請號】CN201510821450
【發明人】溫金花, 楊松, 季統凱
【申請人】國云科技股份有限公司
【公開日】2016年4月20日
【申請日】2015年11月23日