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