写时复制(copy-on-write,缩写COW)技术不会对原始的镜像文件做更改,变化的部分写在另外的镜像文件中,这种特性在qemu中只有QCOW格式支持,多个 COW 文件可以指向同一映像同时测试多个配置, 而不会危及基本系统。

下面以windows2003为例介绍使用过程,首先安装windows2003,然后制作COW镜像,这样用一个基本的windows2003系统,可以用户安装不同的应用环境,避免重复安装操作系统。

环境

宿主机:windows 10 pro
qemu版本:3.1
客户机:windows2003

第一步:创建qcow2磁盘,作为系统盘

qemu-img.exe create -f qcow2 win2003base.qcow2 40G

创建一个 40G的qcow2文件作为系统磁盘,将来是COW的基础镜像。

第二步:安装操作系统

qemu-system-x86_64.exe -L . -m 1024 -machine accel=hax,usb=on -device usb-tablet -cdrom .\Win2003entsp2.iso -hda .\win2003base.qcow2 -boot order=dc,menu=on

临时增加win.img 安装virtio驱动(安装virtio不是必须的,只是为了获得更好的性能)

c:qemu-system-x86_64.exe -L . -m 1024 -machine accel=hax,usb=on -device usb-tablet -hda .\win2003base.qcow2 -boot order=dc,menu=on -drive file=win.img,format=qcow2,if=virtio -cdrom virtio-win-0.1.141.iso

将系统盘改为virtio

qemu-system-x86_64.exe -L . -m 1024 -machine accel=hax,usb=on -device usb-tablet -boot order=dc,menu=on -drive file=win2003base.qcow2,format=qcow2,if=virtio

第三步:创建一个引用镜像win2003_viclient.qcow2

qemu-img create -f qcow2 -b win2003base.qcow2 win2003_viclient.qcow2

-b参数是制定backing_file,即基础镜像或原始镜像。win2003_viclient.qcow2,只有193kb,将win2003base.qcow2修改为只读文件,确保不会被修改。

第四步:将win2003_viclient.qcow2改为系统盘,引导系统,在其中安装vmware-vilient-4.1,系统只会修改COW镜像文件,运行时要确保基础镜像存在

qemu-system-x86_64.exe -L . -m 1024 -machine accel=hax,usb=on -device usb-tablet -boot order=dc,menu=on -drive file=win2003_viclient.qcow2,format=qcow2,if=virtio

 其他命令:
查看COW镜像信息

qemu-img info --backing-chain win2003_viclient.qcow2

重新指定基础镜像

qemu-img rebase -b another.qcow2 win2003_viclient.qcow2

合并镜像,将cow合并到基础镜像(合并前可以先复制基础镜像rebase之后再合并)

qemu-img commit win2003_viclient.qcow2

参考文档:

https://www.unixmen.com/qemu-kvm-using-copy-write-mode/

qemu使用copy-on-write(COW)磁盘的更多相关文章

  1. 8,SSO,,eager copy,COW

    针对字符串不同的长度,“编译器”选择不同的优化策略:SSO, eager copy,COW,分别针对短字符串,中等长度字符串,长字符串.不过,现在(2016)的大多数编译器(gcc 4.9.1,vs2 ...

  2. QEMU简单知识 以及磁盘格式转换的简单命令

    From 百度百科 QEMU,是由 Fabrice Bellard开发的通用.开源机器模拟与虚拟化软件,Fabrice Bellard是另一个著名的C编译器的作者.QEMU可以在不同的机器上运行独自开 ...

  3. QEMU/KVM磁盘在线备份

    QEMU/KVM磁盘的在线完整及增量备份,是"打包"方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复. tag: qemu, k ...

  4. KVM虚拟化技术(六)磁盘管理

    KVM支持的虚拟磁盘类型 raw 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像:它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案,然而也正因为 它不存储元数据,因此不能支持某些高 ...

  5. KVM(七)使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

    本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KVM 快照 1.1 概念 QE ...

  6. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  7. 网络IO和磁盘IO详解

    1. 缓存IO 缓存I/O又被称作标准I/O,大多数文件系统的默认I/O操作都是缓存I/O.在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址 ...

  8. DMA/Zero copy

    DMA: 直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式.在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就 ...

  9. [转帖]QEMU和QEMU-KVM的关系

    QEMU和QEMU-KVM的关系 https://blog.csdn.net/shengxia1999/article/details/52244119   版权声明:本文为博主原创文章,未经博主允许 ...

  10. QEMU,KVM及QEMU-KVM介绍

    What's QEMU QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交 ...

随机推荐

  1. angular 响应式表单(登录实例)

    一.表单验证 1. 只有一个验证规则: this.myGroup = this.fb.group({ email:['hurong.cen@qq.com',Validators.required], ...

  2. StackExchange.Redis 官方文档(六) PipelinesMultiplexers

    原文:StackExchange.Redis 官方文档(六) PipelinesMultiplexers 流水线和复用 糟糕的时间浪费.现代的计算机以惊人的速度产生大量的数据,而且高速网络通道(通常在 ...

  3. Access WMI via Python from Linux

    You can use Impacket (https://github.com/CoreSecurity/impacket) that has WMI implemented in Python. ...

  4. 飞镖忍者 quick-cocos2d-x3.2

    经典的入门小游戏.这里用quick-cocos2d-x3.2又一次写一遍,以便熟悉下quick 首先,创建project,假设不会自行百度啊. 1.编译效果例如以下: watermark/2/text ...

  5. netty epoll调用示例

    1.服务器端 import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.PooledByteBufAllocator; imp ...

  6. Java 学习(19):Java 多线程编程

    Java 多线程编程 Java 给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特 ...

  7. iOS改动UIButton setTitle字体颜色和调整字体位置

    调整Title字体位置 [button setTitleEdgeInsets:UIEdgeInsetsMake(10, 0, 0, 0)]; 四个參数分别代表:上边界,左边界.下边界,右边界 改动UI ...

  8. 初识OpenStack(1)

    初识OpenStack(1) 首先 先来说说我与openstack的渊源吧.那是在上个月中旬.学张的一个朋友给我打电话说让一起来搞一个云平台,当时也不知道是什么.就非常高兴的答应下来了,到了周末,就过 ...

  9. Delegates, Events and Singletons with Unity3D – C#

     在这里我将演示怎样创建代表. 事件和Singletons 在一起工作. 本教程为 Unity3D 编写. 我想知道这为什么?作为一个年轻的自学程序猿,我常常发现自己写tons 和布尔的语句,以确 ...

  10. goland 2018.2 激活

    感谢 http://blog.sina.com.cn/s/blog_1885d23df0102ydjc.html http://www.3322.cc/soft/38102.html 下载   htt ...