一 KVM磁盘格式

1.两种磁盘格式

  • raw:
    裸格式,占用空间比较大,不适合远程传输,不支持快照功能,性能较好
  • qcow2:
    cow(copy on write)占用空间小,适合传输,支持快照,性能比raw差一点点

2.磁盘相关命令

  1. 创建相应格式磁盘
1
2
qemu-img create          test.raw   1G
qemu-img create -f qcow2 test.qcow2 1G
  1. 查看虚拟磁盘信息
1
qemu-img info test.raw
  1. 调整虚拟磁盘容量大小
1
qemu-img resize test.raw +1G
  1. 磁盘格式转换
    会多出一份新格式文件,源文件保留
1
2
3
4
5
qemu-img convert -f raw -O qcow2  test.raw test2.qcow2
[root@noah-tp opt]# ll test* -h
-rw-r--r--. 1 root root 193K Nov 14 22:45 test2.qcow2
-rw-r--r--. 1 root root 193K Nov 14 22:42 test.qcow2
-rw-r--r--. 1 root root 2.0G Nov 14 22:44 test.raw

3.实际操作演示

以修改centos7mb.raw为例

  1. 停止虚拟机
1
virsh shutdown centos7mb
  1. 转换虚拟机磁盘格式为qcow2
1
qemu-img convert -f raw -O qcow2 /opt/centos7-mb.raw /opt/centos7-mb.qcow2
  1. 手动修改虚拟机配置文件
1
2
3
4
virsh edit centos7mb
##搜索disk,将driver name 和source file中的raw修改为qcow2
<driver name='qemu' type='raw'/> --> <driver name='qemu' type='qcow2'/>
<source file='/opt/centos7-mb.raw'/> --> <source file='/opt/centos7-mb.qcow2'/>
  1. 重启虚拟机
1
virsh start centos7mb

二 快照和克隆

1.虚拟机快照[qcow2格式]

只有qcow2格式的虚拟机能使用快照功能

  1. 创建快照
1
virsh snapshot-create centos7mb
  1. 查看快照
1
2
3
4
5
virsh snapshot-list centos7mb
Name Creation Time State
------------------------------------------------------------
1542207368 2018-11-14 22:56:08 +0800 running
1542207451 2018-11-14 22:57:31 +0800 running
  1. 还原快照
1
virsh snapshot-revert centos7mb --snapshotname 1542207368
  1. 删除快照
1
virsh snapshot-delete centos7mb --snapshotname 1542207368

2.虚拟机克隆

1.完整克隆

实现方法:virt-clone -o 源虚拟机名 -n 新虚拟机名 -f 新虚拟机磁盘文件名 --auto-clone

1
virt-clone -o centos7mb -n web02 -f web02.qcow2 --auto-clone

2.链接克隆

  1. 创建回写文件
1
qemu-img create -f qcow2 -b cetnos7mb.qcow2 web03.qcow2
  1. 以此回写文件创建虚拟机
    通过--boot hd参数直接从硬盘启动的方式,加载别人已经做好的模板镜像,免去了从iso镜像安装的过程
1
2
3
4
5
6
7
8
9
10
11
virt-install --virt-type kvm \
--os-type=linux \
--os-variant rhel7 \
--name web03 \
--memory 1024 \
--vcpus 1 \
--disk /opt/web03.qcow2,format=qcow2,size=10 \
--boot hd \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole