zoukankan      html  css  js  c++  java
  • qemu使用copy-on-write(COW)磁盘

    写时复制(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/

  • 相关阅读:
    MySQL Explain学习笔记
    postman测试文件上传接口教程
    URLDecoder异常Illegal hex characters in escape (%)
    第三章 jQuery总结 参考文本
    史上最简单的一道面试题!坑人吧
    cookie和session的关联关系
    服务器配置
    Rancher 添加主机无法显示、添加主机无效的解决办法
    .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用
    .Net Core 跨平台应用使用串口、串口通信 ,可能出现的问题、更简洁的实现方法
  • 原文地址:https://www.cnblogs.com/bingzhu/p/10806837.html
Copyright © 2011-2022 走看看