云計(jì)算用一個(gè)朋友的話來(lái)說(shuō):”做云計(jì)算最苦逼的就是得時(shí)時(shí)刻刻為一些可能一輩子都碰不到的事做好準(zhǔn)備。更苦逼的就是剛以為一個(gè)問(wèn)題不會(huì)遇到,立刻就發(fā)生了。。。“。這個(gè)還真的沒(méi)有辦法,誰(shuí)讓哥我是搞云計(jì)算的呢,簡(jiǎn)單一個(gè)虛擬化就搞的你蛋疼,你還能想其它的嗎?一直糾結(jié)在做虛擬化使用什么鏡像格式,剛剛開(kāi)始用了raw的file,后來(lái)發(fā)現(xiàn)LVM的很多特性對(duì)于虛擬化還是有比較理想的能力,而且性能也很不錯(cuò)就用了LVM。后來(lái)被VMware騙了跑去搞Esxi接觸了VMDK,最近研究openstack發(fā)現(xiàn)了qcow2格式,貌似現(xiàn)在很流行呀。也說(shuō)不上分析這些鏡像格式的能力,就簡(jiǎn)單說(shuō)說(shuō)自己的一些使用心得。
目前主要有那些格式來(lái)作為虛擬機(jī)的鏡像:
raw
(default) the raw format is a plain binary image of the disc image, and is very portable. On filesystems that support sparse files, images in this format only use the space actually used by the data recorded in them.
老牌的格式了,用一個(gè)字來(lái)說(shuō)就是裸,也就是赤裸裸,你隨便dd一個(gè)file就模擬了一個(gè)raw格式的鏡像。由于裸的徹底,性能上來(lái)說(shuō)的話還是不錯(cuò)的。目前來(lái)看,KVM和XEN默認(rèn)的格式好像還是這個(gè)格式。因?yàn)槠湓迹泻芏嘣奶匦裕缰苯訏燧d也是一件簡(jiǎn)單的事情。
裸的好處還有就是簡(jiǎn)單,支持轉(zhuǎn)換成其它格式的虛擬機(jī)鏡像對(duì)裸露的它來(lái)說(shuō)還是很簡(jiǎn)單的(如果其它格式需要轉(zhuǎn)換,有時(shí)候還是需要它做為中間格式),空間使用來(lái)看,這個(gè)很像磁盤(pán),使用多少就是多少(du -h看到的大小就是使用大小),但如果你要把整塊磁盤(pán)都拿走的話得全盤(pán)拿了(copy鏡像的時(shí)候),會(huì)比較消耗網(wǎng)絡(luò)帶寬和I/O。接下來(lái)還有個(gè)有趣的問(wèn)題,如果那天你的硬盤(pán)用著用著不夠用了,你咋辦,在買(mǎi)一塊盤(pán)。但raw格式的就比較犀利了,可以在原來(lái)的盤(pán)上追加空間:
dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先創(chuàng)建4G的空間)
cat foresight.img zeros.raw > new-foresight.img(追加到原有的鏡像之后)
當(dāng)然,好東西是吹出來(lái)的,誰(shuí)用誰(shuí)知道,還是有挺多問(wèn)題的。由于原生的裸格式,不支持snapshot也是很正常的。傳說(shuō)有朋友用版本管理軟件對(duì)raw格式的文件做版本管理從而達(dá)到snapshot的能力,估計(jì)可行,但沒(méi)試過(guò),這里也不妄加評(píng)論。但如果你使用LVM的裸設(shè)備,那就另當(dāng)別論。說(shuō)到LVM還是十分的犀利的,當(dāng)年用LVM做虛擬機(jī)的鏡像,那性能杠杠的。而且現(xiàn)在好多兄弟用虛擬化都采用LVM來(lái)做的。在LVM上做了很多的優(yōu)化,國(guó)外聽(tīng)說(shuō)也有朋友在LVM增量備份方面做了很多的工作。目前來(lái)LVM的snapshot、性能、可擴(kuò)展性方面都還是有相當(dāng)?shù)男Ч摹D壳皝?lái)看的話,備份的話也問(wèn)題不大。就是在虛擬機(jī)遷移方面還是有很大的限制。但目前虛擬化的現(xiàn)狀來(lái)看,真正需要熱遷移的情況目前需求還不是是否的強(qiáng)烈。雖然使用LVM做虛擬機(jī)鏡像的相關(guān)公開(kāi)資料比較少,但目前來(lái)看犧牲一點(diǎn)靈活性,換取性能和便于管理還是不錯(cuò)的選擇。
對(duì)于LVM相關(guān)的特性及使用可以參考如下鏈接:
http://www.ibm.com/developerworks/linux/library/l-lvm2/index.html
cow
copy-on-write format, supported for historical reasons only and not available to QEMU on Windows
曾經(jīng)qemu的寫(xiě)時(shí)拷貝的鏡像格式,目前由于歷史遺留原因不支持窗口模式。從某種意義上來(lái)說(shuō)是個(gè)棄嬰,還沒(méi)得它成熟就死在腹中,后來(lái)被qcow格式所取代。
qcow
the old QEMU copy-on-write format, supported for historical reasons and superseded by qcow2
一代的qemu的cow格式,剛剛出現(xiàn)的時(shí)候有比較好的特性,但其性能和raw格式對(duì)比還是有很大的差距,目前已經(jīng)被新版本的qcow2取代。其性能可以查看如下鏈接:
http://www.linux-kvm.org/page/Qcow2
qcow2
QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression
現(xiàn)在比較主流的一種虛擬化鏡像格式,經(jīng)過(guò)一代的優(yōu)化,目前qcow2的性能上接近raw裸格式的性能,這個(gè)也算是redhat的官方渠道了,哈哈,希望有朋友能拍他們磚:
https://fedoraproject.org/wiki/Features/KVM_qcow2_Performance
對(duì)于qcow2的格式,幾點(diǎn)還是比較突出的,qcow2的snapshot,可以在鏡像上做N多個(gè)快照:
- 更小的存儲(chǔ)空間,即使是不支持holes的文件系統(tǒng)也可以(這下du -h和ls -lh看到的就一樣了)
- Copy-on-write support, where the image only represents changes made to an underlying disk image(這個(gè)特性SUN ZFS表現(xiàn)的淋漓盡致)
- 支持多個(gè)snapshot,對(duì)歷史snapshot進(jìn)行管理
- 支持zlib的磁盤(pán)壓縮
- 支持AES的加密
vmdk
VMware 3 & 4, or 6 image format, for exchanging images with that product
VMware的格式,這個(gè)格式說(shuō)的蛋疼一點(diǎn)就有點(diǎn)牛X,原本VMware就是做虛擬化起家,自己做了一個(gè)集群的VMDK的pool,做了自己的虛擬機(jī)鏡像格式。又拉著一些公司搞了一個(gè)OVF的統(tǒng)一封包。從性能和功能上來(lái)說(shuō),vmdk應(yīng)該算最出色的,由于vmdk結(jié)合了VMware的很多能力,目前來(lái)看,KVM和XEN使用這種格式的情況不是太多。但就VMware的Esxi來(lái)看,它的穩(wěn)定性和各方面的能力還是可圈可點(diǎn)。
vdi
VirtualBox 1.1 compatible image format, for exchanging images with VirtualBox.
SUN收購(gòu)了VirtualBox,Oracle又收購(gòu)了SUN,這么說(shuō)呢,vdi也算虛擬化這方面的一朵奇葩,可惜的是入主的兩家公司。SUN太專(zhuān)注于技術(shù)(可以說(shuō)是IT技術(shù)最前端也不為過(guò)),Oracle又是開(kāi)源殺手(mysql的沒(méi)落)。單純從能力上來(lái)說(shuō)vdi在VirtualBox上的表現(xiàn)還是不錯(cuò)的。也是不錯(cuò)的workstation級(jí)別的產(chǎn)品。
說(shuō)了這么多虛擬機(jī)鏡像格式,這么多虛擬化,做云計(jì)算的傷不起呀,得為長(zhǎng)期發(fā)展考慮,也有朋友對(duì)鏡像的轉(zhuǎn)換做了很多事情,簡(jiǎn)單看看幾種鏡像的轉(zhuǎn)化:
VMDK–>qcow2:
kevin@kevin:~# qemu-img convert -f vmdk -O qcow2 SLES11SP1-single.vmdk SLES11SP1-single.img
http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm3/index.html
qcow2–>raw:
kevin@kevin:~$ qemu-img convert -O qcow2 image-raw.raw image-raw-converted.qcow
轉(zhuǎn)載自:
http://www.prajnagarden.com/?p=248
posted on 2012-10-11 15:43
David1228 閱讀(637)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
云計(jì)算、虛擬化