LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2531|回复: 17

虚拟机硬盘格式的选择:qcow2、 raw

[复制链接]
发表于 2010-6-11 09:57:38 | 显示全部楼层 |阅读模式
曾经有过一段时间,徘徊于对虚拟机硬盘格式的迷惑中,2009年,终于得出了一些结论(下面的思路基本通用于其他虚拟机)

搜了下,发现大部分用qemu或者kvm的,都默认使用qcow2来作为虚拟硬盘,但qemu官方默认是用raw。
下面是qemu wiki对两种格式的描述:
raw
Raw disk image 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 image or ls -ls on Unix/Linux.

qcow2
QEMU image format, the most versatile format. Use it to have smaller images (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提高到200G,qcow2也可以,不过要转为raw)
4、能够直接被宿主机挂载,不用开虚拟机即可在宿主和虚拟机间进行数据传输(注意,此时虚拟机不要开)

而qcow2的优势:
1、更小的虚拟硬盘空间(尤其是宿主分区不支持hole的情况下)
2、optional AES encryption, zlib based compression and support of multiple VM snapshots.

另外,根据fedora12的wiki,说测试结果是raw比qcow2性能更好,即使是新版的qcow2。http://fedoraproject.org/wiki/Featur...w2_Performance

如果单纯靠这些信息,那么raw好像更有优势,而且更方便。(raw支持快照否???)

那么,为什么大家都默认使用qcow2呢?为什么?

同样的,还有vmdk vdi等虚拟机硬盘格式的优劣表现在哪方面呢?

又看到一个资料,说raw 格式是一种”直读直写”的格式,不具备特殊的特性。也就是说,qcow2具备的这两个AES encryption, zlib based compression,raw就没有。

kqemu是qemu的内核加速模块,不是kvm。wiki里qemu部分有写,和kvm是分为两部分的,是两种不同的内核加速模块。

qemu跑98、me、xp是很慢的,但跑win95,win2000,是飞速的,尤其是win2000(nnd,win2000好像在普通电脑里相比那几个好像是最慢的)。98、me要快,可以用定制版的windows,好像叫lite的。

但今天再回过头来看,发现其实raw更好:
raw相比qcow2就缺乏的四个功能,但都能通过别的方式解决:
1、加密功能:把raw本身就当普通文件加密之搞定
2、快照功能:把raw加入版本管理目录中,具体需要的设置可能稍微有点多。
3、宿主机不支持按需打孔模式(hole):这个可以自己根据使用情况来扩展raw的最大值
4、硬盘压缩:就当普通电脑文件压缩之即可

而raw有qcow2所无法媲美的功能:
1、效率高于qcow2
2、直接读写虚拟机硬盘里面的文件,这比较“暴力”,但既然可以这么暴力,那么也就不怕虚拟机出任何问题了。
3、通用性好,是转为其他虚拟机的格式的通用中间格式,这样就不用担心转换虚拟机系统了。

ps:我知道这不是事情的最终面目,这个只是我目前的理解阶段,所以提出来供大家讨论,以期提高。
发表于 2010-6-11 11:10:08 | 显示全部楼层
顶一个,最近想换kvm,一直在犹豫用哪种格式。此外,还研究了spice协议,据说用这个,可以让kvm拿到native级别的图形加速性能。不过现在还在开发阶段,arch上还没有现成的东西。此外,spice server必须依赖64位系统。这点相当不爽。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-12 07:30:14 | 显示全部楼层
Post by playfish;2095999
顶一个,最近想换kvm,一直在犹豫用哪种格式。此外,还研究了spice协议,据说用这个,可以让kvm拿到native级别的图形加速性能。不过现在还在开发阶段,arch上还没有现成的东西。此外,spice server必须依赖64位系统。这点相当不爽。
kvm好像本来就应该依赖64位硬件的吧?

对spice不熟,感觉就是一个虚拟机通用的后端/前端图形界面,但这个用远程桌面不也可以实现?(已经被我下面的否定了,两者不一样,spice应该是:远程桌面+远程资源本地映射)

刚刚看了其英文介绍,简要翻译下:
“图形”硬件加速方面:
1、“客户端”2D使用通用的Cairo渲染
2、“客户端”windows下使用GDI,linux下使用Opengl
3、使用“客户端”的GPU来替换CPU渲染:可因此获得高效的渲染,并改善虚拟机的CPU使用率

4、“服务端”使用Opengl来渲染

ps:这很好玩,不管虚拟的机子是什么类型,都可以根据自己电脑的配置,来使用本地的硬件,那这样的话,同样的一个虚拟机,在不同的电脑上显示效果可就不一样了。
回复 支持 反对

使用道具 举报

发表于 2010-6-12 08:50:14 | 显示全部楼层
我现在想把vmdk转换成预分配的试试性能, 特别是mac的vmdk
其他系统好像还没那么明显,用mac的时候一有磁盘io系统就卡.
回复 支持 反对

使用道具 举报

发表于 2010-6-12 11:34:46 | 显示全部楼层
Post by jobinson99;2096221
kvm好像本来就应该依赖64位硬件的吧?


kvm是64/32通用的啊?
http://wiki.ubuntu.org.cn/UbuntuHelp:KVM/Installation里如是说:
   1. To serve more than 2GB of RAM for your VMs, you must use a 64-bit kernel (see 32bit_and_64bit). On a 32-bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM.
   2. Also, a 64-bit system can host both 32-bit and 64-bit guests. A 32-bit system can only host 32-bit guests.
它们的区别只是客户端使用内存的大小。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-12 13:11:21 | 显示全部楼层
Post by playfish;2096276
kvm是64/32通用的啊?
http://wiki.ubuntu.org.cn/UbuntuHelp:KVM/Installation里如是说:
   1. To serve more than 2GB of RAM for your VMs, you must use a 64-bit kernel (see 32bit_and_64bit). On a 32-bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM.
   2. Also, a 64-bit system can host both 32-bit and 64-bit guests. A 32-bit system can only host 32-bit guests.
它们的区别只是客户端使用内存的大小。


哦,我搞错了。
应该是依赖于多核是否支持虚拟化。
回复 支持 反对

使用道具 举报

发表于 2010-6-12 14:38:15 | 显示全部楼层
我一般用RAW。
话说虚拟盘所在分区用什么格式比较好啊,我感觉reiserfs和ext4还算好,XFS慢死。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-12 14:59:20 | 显示全部楼层
Post by liwangli;2096301
我一般用RAW。
话说虚拟盘所在分区用什么格式比较好啊,我感觉reiserfs和ext4还算好,XFS慢死。。。


能说说理由么?

至于虚拟盘所在分区用什么格式,这个好像要根据使用情况吧?每种需求对应不同的分区格式。
回复 支持 反对

使用道具 举报

发表于 2010-6-12 16:09:10 | 显示全部楼层
Post by jobinson99;2096307
能说说理由么?

至于虚拟盘所在分区用什么格式,这个好像要根据使用情况吧?每种需求对应不同的分区格式。


理由和你的大体差不多了,RAW通用性好,可以直接挂载。

我说的是虚拟盘(文件)所在宿主机的分区格式啦
回复 支持 反对

使用道具 举报

发表于 2010-6-12 18:11:51 | 显示全部楼层
今天本来想装kvm,最后时刻搜集资料中突然发现,kvm网络桥接只支持有线网,而我的笔记本主要是无线上网。于是装了vbox。:yun:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表