qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:
- 更小的空间占用,即使文件系统不支持空洞(holes);
- 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
- 支持快照(snapshot),镜像文件能够包含多个快照的历史;
- 可选择基于 zlib 的压缩方式
- 可以选择 AES 加密
Raw 格式与 qcow2 转化
QEMU 软件包里面提供的 qemu-img 工具可用于 image 镜像一些常用操作。
将 raw 格式转化为 qcow2 格式的文件命令如下:
qemu-img convert -f raw -O qcow2 test.raw test.raw.qcow2
qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量,更适用于云计算系统,同时,它还具有加密,压缩,以及快照等 raw 格式不具有的功能。
qemu-img create安装过程
创建qwo2磁盘格式,大小为10G,文件名为lcentos7.qcow2
qemu-img create -f qcow2 lcentos7.qcow2 10G
执行后会在该目录下生成lcentos7.qcow2文件,可以通过如下命令
qemu-img info lcentos7.qcow2
查看详细信息,执行结果如下
image: lcentos7.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
创建虚拟机
virt-install --virt-type kvm --name lcentos7 --ram 1024 \
> --cdrom=/home/liyubo/attempt/CentOS-7-x86_64-DVD-1804.iso\
> --disk=/home/liyubo/attempt/lcentos7.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux
创建增量镜像
qemu-img create -b base.img -f qcow2 new.img
virt-install 参数详解
- -n --name= 客户端虚拟机名称
- -r --ram= 客户端虚拟机分配的内存
- -u --uuid= 客户端UUID 默认不写时,系统会自动生成
- -v --hvm 全虚拟化
- -p --paravirt 半虚拟化
- -l --location=localdir 安装源,有本地、nfs、http、ftp几种,多用于ks网络安装
- --vnc 使用vnc ,另有--vnclient=监听的IP
- --vncport =VNC监听的端口
- -c --cdrom= 光驱 安装途径
- --disk= 使用不同选项作为磁盘使用安装介质
- -w NETWORK, --network=NETWORK 连接客户机到主机网络
- -s --file-size= 使用磁盘映像的大小 单位为GB
- -f --file= 作为磁盘映像使用的文件
- --cpuset=设置哪个物理CPU能够被虚拟机使用
- --os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’)
- --os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步优化虚拟机配置
- --host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV是随着libvirt使用的一个节点设备名(具体设备如’virsh nodedev-list’的显示的结果)
- --accelerate KVM或KQEMU内核加速,这个选项是推荐最好加上。如果KVM和KQEMU都支持,KVM加速器优先使用。
- -x EXTRA, --extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序
- --nographics "virt-install" 将默认使用--vnc选项,使用nographics指定没有控制台被分配给客户
使用virsh create 创建虚拟机
- 编辑centos7.xml文件,并在aevices标签下包含以下内容
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/root/centOS-7.img'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='cdrom'>
<source file='/root/CentOS-7-x86_64-DVD-1804.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
其中.ios文件为系统的安装文件,.img为创建的qcw2文件,使用qemu-img create -f qcow2 *.img创建
- 使用virsh create 命令创建
virsh create centos7.xml
之后通过 vnc连接,安装系统
系统会安装在.img 文件中,再次启动可以删除img 项
- 使用 vnc连接
使用VNC连接虚拟机需要关闭防火墙,使用以下命令操作防火墙
- 启动: systemctl start firewalld
- 关闭: systemctl stop firewalld
- 查看状态: systemctl status firewalld
- 开机禁用 : systemctl disable firewalld
- 开机启用 : systemctl enable firewalld