牵牛吃草 / vm / kvm虚拟化小结(九)virt

分享

   

kvm虚拟化小结(九)virt

2016-06-23  牵牛吃草

 本篇和 ubuntu下kvm的安装   本属同篇,不过细想后感觉有必要将其单独拎出来做个总结 。之前在创建KVM 虚拟机时,宿主机都是通过先按raw格式进行安装后,再转化成qcow2格式,最终edit xml文件,并virsh start再重新启动 。之前网上也看到过很多一步直接安装成qcow2格式的示例 ,不过拿来下在环境上试的时候一直不行 。今天在ubuntu上搭建zabbix虚拟机环境时,又想到网上查询下试一下该问题 。结果测试通过,而成功的重点在于创建qcow2镜像时,选择preallocation=metadata选项

一、qemu-img创建镜像文件

创建raw格式镜像文件(默认创建的是该格式)

  1. yang@yang-acer:/opt/test$ sudo qemu-img create /opt/img/test-raw.img 1G
  2. Formatting '/opt/img/test-raw.img', fmt=raw size=1073741824

创建普通的qcow2格式镜像文件

  1. yang@yang-acer:/opt/test$ sudo qemu-img create -f qcow2 /opt/img/test.qcow2 1G
  2. Formatting '/opt/img/test.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off

创建 预分配 元数据选项 的qcow2格式镜像文件

  1. yang@yang-acer:/opt/test$ sudo qemu-img create -f qcow2 -o preallocation=metadata /opt/img/test-metadata.qcow2 1G
  2. Formatting '/opt/img/test-metadata.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off

注:这里预分配元数据的叫法是我直译过来的,不知道这样称呼是否有问题 。只是希望能便于理解和区分。

二、3种镜像文件的比较

上面我们以三种方式创建了三个镜像文件,下面通过ls -l 、stat、qemu-img info、du四种方式查看下各自的不同:

ls -l 给出的结果

  1. yang@yang-acer:/opt/img$ ll
  2. -rw-r--r-- 1 root root 1074135040 5月 23 15:52 test-metadata.qcow2
  3. -rw-r--r-- 1 root root 197120 5月 23 15:52 test.qcow2
  4. -rw-r--r-- 1 root root 1073741824 5月 23 15:52 test-raw.img

ls -l 给出的结果看出,预分配元数据的 qcow2格式的镜像文件raw格式的镜像文件占用的大小接近,基本上都是1G ,而普通格式的qcow2镜像文件占用的大小只有190K左右 。

stat 给出的结果

  1. yang@yang-acer:/opt/img$ stat test-metadata.qcow2
  2. 文件:"test-metadata.qcow2"
  3. 大小:1074135040 块:664 IO 块:4096 普通文件
  4. 设备:808h/2056d Inode:530343 硬链接:1
  5. 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
  6. 最近访问:2014-05-23 15:52:36.179523406 +0800
  7. 最近更改:2014-05-23 15:52:36.179523406 +0800
  8. 最近改动:2014-05-23 15:52:36.179523406 +0800
  9. 创建时间:-
  10. yang@yang-acer:/opt/img$ stat test-raw.img
  11. 文件:"test-raw.img"
  12. 大小:1073741824 块:0 IO 块:4096 普通文件
  13. 设备:808h/2056d Inode:530341 硬链接:1
  14. 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
  15. 最近访问:2014-05-23 15:52:17.915523541 +0800
  16. 最近更改:2014-05-23 15:52:17.915523541 +0800
  17. 最近改动:2014-05-23 15:52:17.915523541 +0800
  18. 创建时间:-
  19. yang@yang-acer:/opt/img$ stat test.qcow2
  20. 文件:"test.qcow2"
  21. 大小:197120 块:392 IO 块:4096 普通文件
  22. 设备:808h/2056d Inode:530342 硬链接:1
  23. 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
  24. 最近访问:2014-05-23 15:52:27.943523467 +0800
  25. 最近更改:2014-05-23 15:52:27.943523467 +0800
  26. 最近改动:2014-05-23 15:52:27.943523467 +0800
  27. 创建时间:-

stat 给出的结果更为详细,其中文件大小情况和ls -l 的结果一致。

qemu-img info给出的结果

  1. yang@yang-acer:/opt/img$ qemu-img info test-metadata.qcow2
  2. image: test-metadata.qcow2
  3. file format: qcow2
  4. virtual size: 1.0G (1073741824 bytes)
  5. disk size: 332K
  6. cluster_size: 65536
  7. Format specific information:
  8. compat: 1.1
  9. lazy refcounts: false
  10. yang@yang-acer:/opt/img$ qemu-img info test-raw.img
  11. image: test-raw.img
  12. file format: raw
  13. virtual size: 1.0G (1073741824 bytes)
  14. disk size: 0
  15. yang@yang-acer:/opt/img$ qemu-img info test.qcow2
  16. image: test.qcow2
  17. file format: qcow2
  18. virtual size: 1.0G (1073741824 bytes)
  19. disk size: 196K
  20. cluster_size: 65536
  21. Format specific information:
  22. compat: 1.1
  23. lazy refcounts: false

qemu-img info给出的结果里面有两个我关以的指标,一个是virtual size 一个是disk size 。其中前者是qemu-img create时后面参数值的大小,三者都是1G ;后者的结果经对比和du file -sh的结果一致 。


du的结果:

  1. yang@yang-acer:/opt/img$du test-metadata.qcow2 -sh
  2. 332K test-metadata.qcow2
  3. yang@yang-acer:/opt/img$du test-raw.img -sh
  4. 0 test-raw.img
  5. yang@yang-acer:/opt/img$du test.qcow2 -sh
  6. 196K test.qcow2

根据上面的结果来推测,创建预分配元数据的qcow2格式的镜像应该是参照了 原始的raw镜像文件的一些特点 做的一部分加快读写的优化 ,原理同raw一样,提前以空数据的方式将空间占用,而不是像普通的qcow2格式,按需递增占用 。而以上无论是raw格式还是qcow2预分配元数据的方式都不会直接将1G的空间完全占用,对宿主机的i节点占用上也没有影响,这个可以通过各文件创建和删除后df -hl和df -i 的结果来测试

三、文件写后的镜像对比

上面的测试结果是空文件下的对比 ,在镜像上按默认方式装完相同的系统后,我再次对三者进行了比对 。

test-raw.img :原始的raw镜像,并在其上安装centos 6系统

test-centos.qcow2:为test-raw.img ,通过qemu-img convert -f raw -O qcow2 test-raw.img  test-centos.qcow2 命令转化后的img镜像

centos.img:预分配元数据的qcow2格式的img,并在其上面安装centos6系统

ls -l 的结果:

  1. yang@yang-acer:/opt$ ll
  2. -rw-r--r-- 1 root root 21478375424 5月 23 18:03 centos.img
  3. -rw-r--r-- 1 root root 2004942848 5月 23 18:25 test-centos.qcow2
  4. -rw-r--r-- 1 root root 21474836480 5月 23 18:12 test-raw.img

同安装系统之前的结果一样,预分配元数据的 qcow2格式的镜像文件raw格式的镜像文件占用的大小接近 ,test-centos.qcow2 的ls -l 的大小和实际du的结果相同。由于stat的大小和ls -l 的大小一致,这里不再列出 。

qemu-img info的结果:

  1. yang@yang-acer:/opt$ qemu-img info test-centos.qcow2
  2. image: test-centos.qcow2
  3. file format: qcow2
  4. virtual size: 20G (21474836480 bytes)
  5. disk size: 1.9G
  6. cluster_size: 65536
  7. Format specific information:
  8. compat: 1.1
  9. lazy refcounts: false
  10. yang@yang-acer:/opt$ qemu-img info test-raw.img
  11. image: test-raw.img
  12. file format: raw
  13. virtual size: 20G (21474836480 bytes)
  14. disk size: 2.3G
  15. yang@yang-acer:/opt$ qemu-img info centos.img
  16. image: centos.img
  17. file format: qcow2
  18. virtual size: 20G (21474836480 bytes)
  19. disk size: 2.3G
  20. cluster_size: 65536
  21. Format specific information:
  22. compat: 1.1
  23. lazy refcounts: false

这里给出了实际占用大小和创建前大小,同样安装完系统后,预分配元数据的 qcow2格式的镜像文件raw格式的镜像文件占用的大小接近。

du的结果

  1. yang@yang-acer:/opt$ du test-centos.qcow2 -sh
  2. 1.9G test-centos.qcow2
  3. yang@yang-acer:/opt$ du test-raw.img -sh
  4. 2.3G test-raw.img
  5. yang@yang-acer:/opt$ du centos.img -sh
  6. 2.4G centos.img

四、总结

以上测试结果,有利于理解以下两方面的优点:

1、利用预分配,可以直接一步完成KVM guest主机qcow2镜像格式主机的安装 ,而不需要像之前装完再转换 。

2、利用预分配,可以加速qcow2格式下的KVM guest主机的读写速度 (虽然这里的测试结果不涉及到具体的速度测试,说起来有点牵强) 。

有兴趣的话,可以将在上面第三步的基础上再做下性能测试来验证上面的预分配对性能的影响 。

关于预分配优化和KVM原理性的东西参考如下文章:

kvm IO优化的措施, KVM优化措施

几种虚拟机镜像格式及其性能测试 (许艳军等人 研究论文)

Qcow2文件格式简述


对于已有的镜像可以做如下的转换,来实现预分配:

  1. qemu-img convert -f qcow2 -O qcow2 -o preallocation=metadata centos_test0_nopreallc.qcow2 centos_test0_preallc.qcow2



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>