虛擬機硬盤格式的選擇:qcow2、 raw

 在qemu技術中,支持的格式很多,有raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd blkdebug host_cdrom host_floppy host_device file,可以說很豐富,但是比較常用的有qcow2和raw

 大概搜了下,發現大部分用qemu或者kvm的,都默認使用qcow2來作爲虛擬硬盤,但qemu官方默認是用raw
下面是qemu wiki對兩種格式的描述:
raw
Raw disk p_w_picpath format (default). This format has the advantage of being simple and easily exportable to all other emulators. If your file system supports holes (for example in ext2 or ext3 on Linux or NTFS on Windows), then only the written sectors will reserve space. Use qemu-img info to know the real size used by the p_w_picpath or ls -ls on Unix/Linux.
qcow2
QEMU p_w_picpath format, the most versatile format. Use it to have smaller p_w_picpaths (useful if your filesystem does not supports holes, for example on Windows), optional AES encryption, zlib based compression and support of multiple VM snapshots.
raw
的優勢(能找到的相關資料太少,不知道是不是理解有誤):
1
、簡單,並能夠導出爲其他虛擬機的虛擬硬盤格式
2
、根據實際使用量來佔用空間使用量,而非原先設定的最大值(比如設定最高20G,而實際只使用3G)。——需要宿主分區支持hole(比如ext2 ext3 ntfs等)
3
、以後能夠改變空間最大值(把最高值20G提高到200Gqcow2也可以,不過要轉爲raw
4
、能夠直接被宿主機掛載,不用開虛擬機即可在宿主和虛擬機間進行數據傳輸(注意,此時虛擬機不要開)
qcow2的優勢:
1
、更小的虛擬硬盤空間(尤其是宿主分區不支持hole的情況下)
2
optional AES encryption, zlib based compression and support of multiple VM snapshots.
另外,根據fedora12wiki,說測試結果是rawqcow2性能更好,即使是新版的qcow2http://fedoraproject.org/wiki/Featur...w2_Performance
如果單純靠這些信息,那麼raw好像更有優勢,而且更方便。(raw支持快照否???)
那麼,爲什麼大家都默認使用qcow2呢?爲什麼?
同樣的,還有vmdk vdi等虛擬機硬盤格式的優劣表現在哪方面呢?
又看到一個資料,說raw 格式是一種直讀直寫的格式,不具備特殊的特性。也就是說,qcow2具備的這兩個AES encryption, zlib based compressionraw就沒有。
kqemu
qemu的內核加速模塊,不是kvmwikiqemu部分有寫,和kvm是分爲兩部分的,是兩種不同的內核加速模塊。
qemu
98mexp是很慢的,但跑win95win2000,是飛速的,尤其是win2000nndwin2000好像在普通電腦裏相比那幾個好像是最慢的)。98me要快,可以用定製版的windows,好像叫lite的。
但今天再回過頭來看,發現其實raw更好:
raw
相比qcow2就缺乏的四個功能,但都能通過別的方式解決:
1
、加密功能:把raw本身就當普通文件加密之搞定
2
、快照功能:把raw加入版本管理目錄中,具體需要的設置可能稍微有點多。
3
、宿主機不支持按需打孔模式(hole):這個可以自己根據使用情況來擴展raw的最大值
4
、硬盤壓縮:就當普通電腦文件壓縮之即可
rawqcow2所無法媲美的功能:
1
、效率高於qcow2
2
、直接讀寫虛擬機硬盤裏面的文件,這比較暴力,但既然可以這麼暴力,那麼也就不怕虛擬機出任何問題了。
3
、通用性好,是轉爲其他虛擬機的格式的通用中間格式,這樣就不用擔心轉換虛擬機系統了。
==================================================================
補充一:
如何讓KVM等各種虛擬系統能夠拿到本地硬件的原始級別圖形加速功能:
linuxsirplayfish提到:可以讓kvm拿到native級別的圖形加速性能。
目前我對spice仍然不熟,感覺就是一個虛擬機統一後端/前端圖形界面,但這個用遠程桌面不也可以實現?(已經被我下面的否定了,兩者不一樣,spice應該是:遠程桌面+遠程資源本地映射)
剛剛看了其英文介紹,簡要翻譯下:
硬件加速方面:
1
客戶端”2D使用通用的Cairo渲染
2
客戶端”windows下使用GDIlinux下使用Opengl
3
、使用客戶端GPU來替換CPU渲染:可因此獲得高效的渲染,並改善虛擬機的CPU使用率
4
服務端使用Opengl來渲染
ps
:這很好玩,不管虛擬的機子是什麼類型,都可以根據自己電腦的配置,來使用本地的硬件,那這樣的話,同樣的一個虛擬機,在不同的電腦上顯示效果可就不一樣了。
==============================================================
補充二:
虛擬硬盤所在的宿主機分區該使用何種分區方式?
問題的關鍵可能是虛擬機的虛擬硬盤到底保留了多少宿主機的分區格式特點了。比如宿主用ext3,而虛擬機裏用ext4,那麼虛擬機裏面的性能如何?是 ext3的性能還是ext4的性能?——我想可能ext3的性能應該是該虛擬機的最高上限了,而不會有ext4提升的那部分。
硬盤的最大性能>特定分區格式和系統所能利用的最大性能>虛擬機虛擬硬盤所能利用的最大性能>虛擬機中的操作系統和分區格式所能利用的最大性能
經過這麼多層的削弱,估計確實非常有必要有一種專門爲虛擬機設計的分區格式,比如lvm之類的,來獲得更高的性能。
虛擬機中,linuxswap還是要開的,因爲你無法確定某一天你會大量使用內存(尤其是用於服務器方面的),以至你原來給的內存不夠用,所以需要預留這些空間,有了這點緩衝時間,估計夠在線解決問題了。
但掛了swap之後慢,可能和我上面說的:虛擬機的硬盤性能最大隻能達到宿主的硬盤性能上限,而不會超過它,所以導致的。
========================================================
補充三:
raw
在生產環境下也這麼好?
並非如此,因爲我所上面列舉的4raw可以通過別的方式搞定的功能,實際上有個前提:能夠隨時關機。(不關機也可以,但因爲這方面並沒有經過多少驗證,安全性穩定性如何存疑。)
raw的很多優勢,也是基於關機狀態才具備的優勢,比如:直接掛載。
而這些都是生產環境下所無法具備的條件,生產環境大都需要的是:在線方式實現/不關機就可搞定(即使是硬盤分區之類底層操作,所以纔會發展出lvm之類的東東)。
也就是說,如果要在線具備更高級的硬盤特性/穩定性/有保障的品質追求,那麼raw可能不是個好選擇。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章