云計算用一個朋友的話來說:”做云計算最苦逼的就是得時時刻刻為一些可能一輩子都碰不到的事做好準備。更苦逼的就是剛以為一個問題不會遇到,立刻就發生了。。。“。這個還真的沒有辦法,誰讓哥我是搞云計算的呢,簡單一個虛擬化就搞的你蛋疼,你還能想其它的嗎?一直糾結在做虛擬化使用什么鏡像格式,剛剛開始用了raw的file,后來發現LVM的很多特性對于虛擬化還是有比較理想的能力,而且性能也很不錯就用了LVM。后來被VMware騙了跑去搞Esxi接觸了VMDK,最近研究openstack發現了qcow2格式,貌似現在很流行呀。也說不上分析這些鏡像格式的能力,就簡單說說自己的一些使用心得。
目前主要有那些格式來作為虛擬機的鏡像:
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.
老牌的格式了,用一個字來說就是裸,也就是赤裸裸,你隨便dd一個file就模擬了一個raw格式的鏡像。由于裸的徹底,性能上來說的話還是不錯的。目前來看,KVM和XEN默認的格式好像還是這個格式。因為其原始,有很多原生的特性,例如直接掛載也是一件簡單的事情。
裸的好處還有就是簡單,支持轉換成其它格式的虛擬機鏡像對裸露的它來說還是很簡單的(如果其它格式需要轉換,有時候還是需要它做為中間格式),空間使用來看,這個很像磁盤,使用多少就是多少(du -h看到的大小就是使用大小),但如果你要把整塊磁盤都拿走的話得全盤拿了(copy鏡像的時候),會比較消耗網絡帶寬和I/O。接下來還有個有趣的問題,如果那天你的硬盤用著用著不夠用了,你咋辦,在買一塊盤。但raw格式的就比較犀利了,可以在原來的盤上追加空間:
dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先創建4G的空間)
cat foresight.img zeros.raw > new-foresight.img(追加到原有的鏡像之后)
當然,好東西是吹出來的,誰用誰知道,還是有挺多問題的。由于原生的裸格式,不支持snapshot也是很正常的。傳說有朋友用版本管理軟件對raw格式的文件做版本管理從而達到snapshot的能力,估計可行,但沒試過,這里也不妄加評論。但如果你使用LVM的裸設備,那就另當別論。說到LVM還是十分的犀利的,當年用LVM做虛擬機的鏡像,那性能杠杠的。而且現在好多兄弟用虛擬化都采用LVM來做的。在LVM上做了很多的優化,國外聽說也有朋友在LVM增量備份方面做了很多的工作。目前來LVM的snapshot、性能、可擴展性方面都還是有相當的效果的。目前來看的話,備份的話也問題不大。就是在虛擬機遷移方面還是有很大的限制。但目前虛擬化的現狀來看,真正需要熱遷移的情況目前需求還不是是否的強烈。雖然使用LVM做虛擬機鏡像的相關公開資料比較少,但目前來看犧牲一點靈活性,換取性能和便于管理還是不錯的選擇。
對于LVM相關的特性及使用可以參考如下鏈接:
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
曾經qemu的寫時拷貝的鏡像格式,目前由于歷史遺留原因不支持窗口模式。從某種意義上來說是個棄嬰,還沒得它成熟就死在腹中,后來被qcow格式所取代。
qcow
the old QEMU copy-on-write format, supported for historical reasons and superseded by qcow2
一代的qemu的cow格式,剛剛出現的時候有比較好的特性,但其性能和raw格式對比還是有很大的差距,目前已經被新版本的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
現在比較主流的一種虛擬化鏡像格式,經過一代的優化,目前qcow2的性能上接近raw裸格式的性能,這個也算是redhat的官方渠道了,哈哈,希望有朋友能拍他們磚:
https://fedoraproject.org/wiki/Features/KVM_qcow2_Performance
對于qcow2的格式,幾點還是比較突出的,qcow2的snapshot,可以在鏡像上做N多個快照:
- 更小的存儲空間,即使是不支持holes的文件系統也可以(這下du -h和ls -lh看到的就一樣了)
- Copy-on-write support, where the image only represents changes made to an underlying disk image(這個特性SUN ZFS表現的淋漓盡致)
- 支持多個snapshot,對歷史snapshot進行管理
- 支持zlib的磁盤壓縮
- 支持AES的加密
vmdk
VMware 3 & 4, or 6 image format, for exchanging images with that product
VMware的格式,這個格式說的蛋疼一點就有點牛X,原本VMware就是做虛擬化起家,自己做了一個集群的VMDK的pool,做了自己的虛擬機鏡像格式。又拉著一些公司搞了一個OVF的統一封包。從性能和功能上來說,vmdk應該算最出色的,由于vmdk結合了VMware的很多能力,目前來看,KVM和XEN使用這種格式的情況不是太多。但就VMware的Esxi來看,它的穩定性和各方面的能力還是可圈可點。
vdi
VirtualBox 1.1 compatible image format, for exchanging images with VirtualBox.
SUN收購了VirtualBox,Oracle又收購了SUN,這么說呢,vdi也算虛擬化這方面的一朵奇葩,可惜的是入主的兩家公司。SUN太專注于技術(可以說是IT技術最前端也不為過),Oracle又是開源殺手(mysql的沒落)。單純從能力上來說vdi在VirtualBox上的表現還是不錯的。也是不錯的workstation級別的產品。
說了這么多虛擬機鏡像格式,這么多虛擬化,做云計算的傷不起呀,得為長期發展考慮,也有朋友對鏡像的轉換做了很多事情,簡單看看幾種鏡像的轉化:
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
轉載自:
http://www.prajnagarden.com/?p=248
posted on 2012-10-11 15:43
David1228 閱讀(637)
評論(0) 編輯 收藏 所屬分類:
云計算、虛擬化