kvm镜像格式使用注意事项

常用的kvm镜像格式包括raw及qcow2
RAW:
创建raw格式镜像文件

[root@localhost tmp]# qemu-img create -f raw raw.img 1G
Formatting 'raw.img', fmt=raw size=1073741824
[root@localhost tmp]# qemu-img info raw.img 
image: raw.img
file format: raw
virtual size: 1.0G (1073741824 bytes)
disk size: 0
[root@localhost tmp]# ls -l raw.img 
-rw-r--r--. 1 root root 1073741824 Sep 13 01:18 raw.img
[root@localhost tmp]# du -h raw.img 
0   raw.img

QCOW2:
创建qcow2格式镜像

[root@localhost tmp]# qemu-img create -f qcow2 qcow2.img 1G
Formatting 'qcow2.img', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost tmp]# qemu-img info qcow2.img 
image: qcow2.img
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@localhost tmp]# ls -l qcow2.img 
-rw-r--r--. 1 root root 197120 Sep 13 01:22 qcow2.img
[root@localhost tmp]# du -h qcow2.img 
196K    qcow2.img

总结:

  • qemu-img info 看到的disk size为镜像所占用物理磁盘的实际大小
  • raw使用命令ls/du 看到的输入结果
  • qcow使用命令ls/du 看到的输入结果相同
    两者对比发现raw创建的镜像文件使用ls命令看到的结果与创建镜像时指定大小一致,但du命令看到的为0,这是因为raw具有稀疏特性(Sparse File),其内部有若干holes
    当在本地拷贝raw文件时,拷贝大小为du命令看到的结果,速度很快,当通过网络传输时拷贝大小为ls命令看到的大小,传输很慢,所以这里要注意一下,而qcow2无论是ls或者
    du看到的大小相同,没有这种情况.

另一个需要注意的地方,当我们用 GUI界面创建虚拟机时,有两种方式创建磁盘(img):

  • 在GUI里直接填写路径及volume名字,选在qcow2格式,让GUI自动创建
  • 使用qemu-img手动创建好之后在GUI里面进行选择.
    这两种方式创建出的磁盘文件使用qemu-img info命令看到的disk size不同,并且第一种方式创建的文件在网络传输拷贝时现象与raw类似,非常慢,按照创建时文件大小进行的传输.
    而使用第二种方式创建的并没有这个问题,是按照实际文件大小进行传输,如果制作虚拟机时使用了第一种方式,那在传输之前使用virsh vol-clone,qemu-img convert等命令重新克隆或转换一遍,再次进行传输就与第二种方式速度相当.
    时什么原因导致这两种方式产生的差距,目前还没有找出来.
    参考链接:
    https://blog.csdn.net/Jmilk/article/details/69418999?locationNum=5&fps=1
    https://people.gnome.org/~markmc/qcow-image-format.html.

转载于:https://www.cnblogs.com/twoper/p/9640010.html

你可能感兴趣的:(运维)