利用Qemu(qemu-img)磁盘为Xen服务

本文深入探讨了QEMU磁盘模拟技术,包括如何创建虚拟磁盘、理解磁盘类型特点、实现增量磁盘以及QEMU快照操作。通过实例演示,为虚拟机快速部署提供便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来一段常规的开场白,放狗:

QEMU是一套由Fabrice Bellard所编写的模拟处理器自由软件。它与BochsPearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。

至此,Qemu是什么东西已经介绍完了。但是今天主题不是用Qemu来模拟一台完整的主机,而是只用它的磁盘模拟部分。

1、怎么用Qemu创建一个虚拟磁盘?

qemu和块设备相关联命令式qemu-img,这个命令的各个详细参数我就不解释了,网上一搜一大堆。

qemu-img create -f qcow2 filename.img

这个指令就是创建一个qcow2格式的磁盘,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.

大意就是这种格式支持AES加密,支持压缩,支持快照。

qemu-img create -f raw filename.img

qemu-img create -f filename.img(这个和上面的指令是一个意思,下面有解释)

这个指令就是创建一个raw格式的磁盘,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不同,raw需要宿主机支持hole(比如ext2,ext3,ntfs等);

能够调节空间最大值;

能够直接被宿主机挂载,以传输数据;

由于采用直接写文件的方式,性能高于qcow2;

注:由于raw格式是qemu-img创建磁盘的默认格式,所以如果不指定文件类型的话,默认是raw。

2、怎么用qemu-img创建一块增量磁盘呢?

qemu-img -b basefile.img -f qcow2 filename.img

这个指令就能创建出一块增量磁盘。在网上发现很多关于qemu实现增量磁盘的文章,但都是大同小异的在这个命令的结尾指定了filenam.img的大小。

qemu-img -b basefile.img -f qcow2 filename.img 10G

qemu-img -b basefile.img -f qcow2 filename.img 10000M

我当初实验增量磁盘的时候为这个困惑了一段时间,后来发现加上的这个大小确实没有实际的意义。后来索性就不写大小了。

创建好增量磁盘后分配给虚拟机,然后开机,发现创建的这个文件才慢慢地变大,而basefile.img的大小没有变化,而且登陆系统后,发现内容和basefile.img中的内容一模一样的。到此,说明增量磁盘创建成功了。如果虚拟机创建成功之后开机发现和basefile.img的虚拟机有区别,不好意思,好好检查为什么失败了。

ps:如果哪位高手知道这个大小是干什么的希望一定不吝赐教。

pss:这个指令很简单,但是在libvirt中怎么用呢?为了让大家别像我一样走弯路,在此列出libvirt中块设备写法。

    <disk type="file" device="disk">
      <driver name="tap" type="qcow2"/>
      <source file="/storage/nfs/win2003_template.img"/>
      <target dev="hdb"/>
    </disk>
其实关键是
<driver name="tap" type="qcow2"/>

这一行代码。

psss:当basefile.img作为一个base盘之后就不能对它所属的虚拟机进行开机操作了,最好是删除掉他所属的虚拟机。(只是删除所属的虚拟机啊!)

3、qemu如何将对qcow格式的磁盘进行快照相关操作?

qcow-img snapshot -l filename.img

列出filename.img文件下所有快照

qcow-img snapshot -c snapshotname filename.img

为filename.img文件创建一个名称为snapshotname的快照

qcow-img snapshot -a snapshotname filename.img

用名称为snapshotname的快照为文件名为filename.img的qcow2磁盘进行快照

qcow-img snapshot -d snapshotname filename.img

将名称为snapshotname的快照从文件名为filename.img中删除

qemu的快照确实很好用,而且做一次快照几乎不占用什么空间。但是在实验的过程中,反复的执行多次”快照还原后使用“的操作,偶尔会出现蓝屏的问题,而且有时是无法修复的。所以,这个功能一定要慎用。

小结:qemu的增量磁盘的出现对虚拟机的快速部署提供了很大的方便,而且qcow2格式更节省空间。其实不能说那个好那个不好,具体使用raw还是qcow2,就要看用户的需求了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值