文章目录
  1. 1. 虚拟机硬盘格式比较
    1. 1.1. 1. raw
    2. 1.2. 2. qcow2
    3. 1.3. 3. raw格式和qcow2格式的转化
    4. 1.4. 4. 总结
  2. 2. Openstack中的使用
    1. 2.1. 实际使用分析
    2. 2.2. 虚拟机创建过程中镜像格式的变化
    3. 2.3. 总结

声明:
本博客欢迎转发
内容系本人学习, 研究和总结,有些使摘抄自互联网,如有雷同,实属荣幸.

虚拟机硬盘格式比较

1. raw

raw格式是最简单,什么都没有,所以叫raw格式。连头文件都没有,就是一个直接给虚拟机进行读写的文件。raw不支持动态增长空间,必须一开始就指定空间大小。所以相当的耗费磁盘空间。但是对于支持稀疏文件的文件系统(如ext4)而言,这方面并不突出。ext4下默认创建的文件就是稀疏文件,所以不要做什么额外的工作。

raw镜像格式是虚拟机种I/O性能最好的一种格式,大家在使用时都会和raw进行参照,性能越接近raw的越好。但是raw没有任何其他功能。对于稀疏文件的出现,像qcow这一类的运行时分配空间的镜像就没有任何优势了。 Raw 的优势

  1. 简单,并能够到处为其他虚拟机虚拟硬盘格式
  2. 根据实际使用量来占用空间,而非设定的最大值(需要宿主支持hole)
  3. 能够被宿主机挂载, 不用开虚拟机即可在宿主和虚拟机间进行数据传输

2. qcow2

现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能. 与普通的raw格式的镜像相比,有以下的特性:

  1. 更小的空间占用,即使文件系统不支持空洞(holes);
  2. 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
  3. 支持快照(snapshot),镜像文件能够包含多个快照的历史;
  4. 可选择基于 zlib 的压缩方式
  5. 可以选择 AES 加密

3. raw格式和qcow2格式的转化

  1. raw –> qcow2

    1
    # qemu-img convert -f raw -O qcow2 centos.raw centos.qcow2
  2. qcow2 –> raw

    1
    # qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw

4. 总结

通过以上分析,我们很难分别出到底那种格式更好.

Openstack中的使用

实际使用分析

  1. 我们使用的Openstack环境后端配置Ceph作为统一的共享存储, Glance和Cinder都使用Ceph的RBD后端, 这个时候从image转化为volume的时候,如果使用raw格式,支持copy-on-write的克隆, volume的创建速度为秒级. 而如果镜像格式使用qcow2格式,需要先下载到local,然后转化为raw格式,在上传的cinder后端中,时间上慢了许多.

  2. 使用raw格式的镜像创建虚机的时候比qcow2格式的镜像也快了许多.

  3. 快照. 在Openstack对虚机进行快照是全量快照.创建后的快照格式也是raw格式的. 对云硬盘的快照使用的rbd的copy on write.

虚拟机创建过程中镜像格式的变化

内容参考 OpenStack虚拟机创建过程中镜像格式的的变化过程

总结

综上可以看出使用raw格式的镜像格式比qcow格式的在虚机创建, cinder convert image to volume方面要快许多,同时因为Ceph统一存储rbd clone特性,在创建虚机的过程中,虚机使用的存储空间也会小许多.有理由相信raw格式使更好的选择.

文章目录
  1. 1. 虚拟机硬盘格式比较
    1. 1.1. 1. raw
    2. 1.2. 2. qcow2
    3. 1.3. 3. raw格式和qcow2格式的转化
    4. 1.4. 4. 总结
  2. 2. Openstack中的使用
    1. 2.1. 实际使用分析
    2. 2.2. 虚拟机创建过程中镜像格式的变化
    3. 2.3. 总结