写时复制(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. Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function

    今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比較的迷糊.这种命名确实是和之前的那套基于SOAP协议的API全然联系不上.好了,不说 ...

  2. js用button激活 Alert 元素关闭按钮的交互功能

    js用button激活 Alert 元素关闭按钮的交互功能 一.总结 1.点(.)对应class,井号(#)对应id  2.jquery:amaze里面用的jquery,jquery熟悉之后,这些东西 ...

  3. 7 Java Performance Metrics to Watch After a Major Release--转

    原文地址:https://dzone.com/articles/7-java-performance-metrics-to-watch-after-a-major-1 The Java perform ...

  4. HDU 1214 圆桌会议 圆环逆序

    http://acm.hdu.edu.cn/showproblem.php?pid=1214 题目大意: 一群人围着桌子座,如果在一分钟内一对相邻的人交换位置,问多少分钟后才能得到与原始状态相反的座位 ...

  5. 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样

    前言 每一种该语言在某些极限情况下的表现一般都不太一样,那么我常用的Java语言,在达到100万个并发连接情况下,会怎么样呢,有些好奇,更有些期盼.这次使用经常使用的顺手的netty NIO框架(ne ...

  6. Android学习笔记之GridView的使用具体解释

    (1)创建布局代码例如以下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...

  7. KDE Plasma 5.8 的 LTS 周期正好与其所采用的 Qt 5.6 的 LTS 周期一致

    在 KDE Plasma 5.7 刚刚发布不久,KDE 开发团队就宣布了 KDE Plasma 5.8 的开发计划.这个版本将是一个 LTS 版本,据我所知,这应该是 KDE 历史上第一个 LTS 版 ...

  8. vue学习笔记一:用Key管理可复用元素

    vue为了高效的渲染元素,会尽可能的复用组件,而不是从头渲染,如下案例 <template> <div id="app"> <template v-i ...

  9. js进阶 12-3 如何实现元素跟随鼠标移动

    js进阶 12-3 如何实现元素跟随鼠标移动 一.总结 一句话总结:获取鼠标位置,将鼠标位置设置为元素偏移即可. 1.用什么事件获取鼠标位置? 用mousemove可以获取鼠标移动的时候的位置 $(d ...

  10. css3-11 如何实现2D动画

    css3-11 如何实现2D动画 一.总结 一句话总结:就是transform属性,属性值为1.translate()    2.rotate()    3.scale(),而这是哪个属性值是带参数的 ...