2018-12-25
制作kvm镜像(以centos 7 为例)
执行创建虚拟机命令
virt-install --name centos7_kvm --memory 1024 --vcpus=1 --disk /home/kvm/vm-disk/centos7_kvm.img,format=qcow2,size=20 --os-type=linux --os-variant=rhel7 --cdrom /home/kvm/vm-disk/CentOS-7-x86_64-Minimal-1804.iso --noautoconsole --vnc --vncport=5970 --vnclisten=0.0.0.0
virsh工具的相关选项说明 --name 虚拟机名称 --memory 内存大小 --vcpus= vcpu个数 --disk 创建硬盘 制定硬盘路径,格式,大小 --network 指定网络(可不加,默认虚拟机正在使用的虚拟网络) --os-type 指定操作系统类型 --os-variant= 指定操作系统版本 --cdrom 指定光驱安装操作系统 --noautoconsosle 虚拟机创建完毕后不会自动切换tty --vnc 使用vnc --vncport vnc端口
创建完虚拟机之后,通过vnc连接虚拟机,完成系统的安装
系统安装完成之后,进入kvm镜像存储目录,本例目录为 /home/kvm/vm-disk/
cd /home/kvm/vm-disk/ virsh list --all #查看所有kvm虚拟机 Id Name State ---------------------------------------------------- 1 centos7_kvm running
此时虚拟机正在运行,之后查看kvm镜像信息
qemu-img info centos7_kvm.img image: centos7_kvm.img file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 2.9G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true
此时可以看出kvm镜像虚拟磁盘大小为20G,实际大小为2.9G
此时异地备份镜像,会发现镜像会按照20G大小传输,不利于我们拷贝镜像
此时可以考虑压缩镜像(只有qcow2和qcow格式的镜像文件才支持压缩)
由于我的kvm镜像是qcow2的格式,我不想改变格式,所以在-O qcow2 时候输出qcow2
qemu-img convert -c -O qcow2 centos7_kvm.img new-centos7_kvm.img
qemu-img info new-centos7_kvm.img
image: new-centos7_kvm.img
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 989M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
kvm镜像虚拟空间也可拓展(raw和qcow2都支持动态的调整磁盘大小,但是qcow2不支持缩减)
[root@localhost vm-disk]# qemu-img resize new-centos7_kvm.img +2G Image resized. [root@localhost vm-disk]# qemu-img info new-centos7_kvm.img image: new-centos7_kvm.img file format: qcow2 virtual size: 22G (23622320128 bytes) disk size: 989M cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
可见磁盘大小已经拓展(kvm镜像不建议缩减磁盘空间,防止原有数据被破坏而不自知)
kvm镜像格式转换
qcow2转img格式
qemu-img convert -f qcow2 -O raw centos.qcow2 centos.img
vmdk转qcow2格式
qemu-img convert -f vmdk -O qcow2 centos.vmdk centos.qcow2
其他格式之间相互转换均可参照以上命令转换