KVM虚拟机管理
概述
如果需要高级教程,请看kvm虚拟机管理套件
需要安装的软件包
CentOS 6.3 服务器端需要安装的软件包,
yum install qemu-kvm libvirt
Ubuntu 12.10 客户端需要安装的软件包,
virt-manager
KVM虚拟机的网络管理
KVM 客户机网络连接有两种方式,:
- 用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。NAT方式。
- 虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。Bridge方式。
注意:kvm安装后的默认是NAT方式,网桥方式需要手动配置
NAT方式
Bridge方式
Bridge方式原理
Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。
目前版本的NetworkManger 不支持配置桥接网络功能,如何需要配置桥接网络,请停用 NetworkManger 服务,改用network 服务来管理网络!
Bridge方式网络的配置
1 编辑修改网络设备脚本文件,增加网桥设备br0 CentOS发行版配置文件 /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0" TYPE="Bridge" BOOTPROTO=static IPADDR=10.1.83.205 PREFIX=22 GATEWAY=10.1.80.254 DNS1=59.108.119.3 IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=br0 ONBOOT=yes DELAY=0
2 编辑修改网络设备脚本文件,修改网卡设备eth0 CentOS发行版配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" TYPE=Ethernet NM_CONTROLLED="yes" BRIDGE="br0" BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=system-eth0 UUID=611d95bc-0d27-4536-b012-c5d4994c5815 ONBOOT=yes LAST_CONNECT=1350313129
NM_CONTROLLED这个属性值,根据RedHat公司的文档是必须设置为“no”的(这个值为“yes”表示可以由服务NetworkManager来管理。NetworkManager服务不支持桥接,所以要设置为“no”。),但实际上发现设置为“yes”没有问题。通讯正常。 3、重启网络服务
service network restart
4、校验桥接接口
[root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.003048c68ab0 no eth0 vnet0 vnet1
注意事项
- IP配置在桥接器上,对应的网卡不需要配置IP;
- 所有桥接器,物理网卡都必须处于running状态;
- 客户机安装时注意,网络要选择用br0桥接方式;
- 保证宿主机IP和虚拟机IP处于同一网段
kvm虚拟机的备份与恢复
确认虚拟机镜像文件格式
qemu-img info centos1.img
RAW格式是最原始的镜像格式,好处是速度快,但不支持很多新的功能,raw格式不具备快照功能。现在qcow2格式效率有很大提升了,而且还支持一些新的功能
- 更小的存储空间,即使是不支持holes的文件系统也可以(这下du -h和ls -lh看到的就一样了)
- Copy-on-write support, where the image only represents changes made to an underlying disk image(这个特性SUN ZFS表现的淋漓尽致)
- 支持多个snapshot,对历史snapshot进行管理
- 支持zlib的磁盘压缩
- 支持AES的加密
想要启用快照功能,需要先转换镜像文件格式为qcow2。
virsh shutdown esojourn.org qemu-img convert -f raw -O qcow2 centos1.img centos1qcow2.img
常用快照命令 这里有一份libvirt官方的命令文档。完整,但说明不详细:http://wiki.libvirt.org/page/VM_lifecycle
具体示例: 1. 列出快照:
virsh snapshot-list CentOS1 Name Creation Time State ------------------------------------------------------------ centos1.snap1 2012-10-08 17:25:11 +0800 running snap2 2012-10-08 17:33:14 +0800 running snap3 2012-10-08 17:57:21 +0800 running
创建快照
virsh snapshot-create-as CentOS1 snap2 virsh snapshot-create-as --domain CentOS1 --name snap2 --description "URL: www.esojourn.org"
查看快照配置
virsh snapshot-current CentOS1
恢复快照
virsh snapshot-revert CentOS1 snap2
删除快照
virsh snapshot-delete CentOS1 snap2
获取帮助
virsh help snapshot
关于qemu-img snapshot -c和savevm 很多互相抄袭的教程里,都提到了使用qemu-img snapshot -c的命令来创建快照。但我自己测试的结果 ,不管虚拟机是运行中,还是关闭状态,这个命令创建的快照字节都是0。也就是说什么也没保存下来。对此,我还没有找到原因。但找到Red hat员工Kashyap Chamarthy的一篇文章。文章里提到virsh在不同情况下,会调用不同方式来保存快照。其中至少包括‘qemu-img snapshot -c‘,qemu的 ‘savevm‘和qemu的 ‘snapshot_blkdev‘这三种方式。所以看起来快照保存,还是使用virsh snapshot-create的方式比较好。
原文引用
Also, discussed with Eric, in what cases does virsh invoke Qemu’s ‘savevm‘ and ‘qemu-img snapshot -c‘ commands while creating different types of snapshots discussed earlier above. Here is the outline: - it uses ‘qemu-img snapshot -c‘ if the domain is offline and –disk-only was not specified - it uses qemu’s ‘savevm‘ if the domain is online and –disk-only was not specified - it uses qemu’s ‘snapshot_blkdev‘ if the domain is online and –disk-only is specified http://kashyapc.wordpress.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/
qemu-img snapshot相关命令格式: qemu-img snapshot -c snap1 centos1-qcow2.img qemu-img snapshot -l centos1-qcow2.img
Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snap1 0 2011-07-21 23:17:38 00:00:00.000
恢复快照:
qemu-img snapshot -a CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img 其他操作: 'snapshot' is the name of the snapshot to create, apply or delete '-a' applies a snapshot (revert disk to saved state) '-c' creates a snapshot '-d' deletes a snapshot '-l' lists all snapshots in the given image