kvm-虚拟机克隆以及桥接网络
[TOC]
一:kvm虚拟机克隆
1:完整克隆
1.1:自动克隆
[root@kvm-01 ~]# ll -h /data/centos01.qcow2
-rw-r--r-- 1 root root 2.3G May 2 09:45 /data/centos01.qcow2
[root@kvm-01 ~]# virt-clone --auto-clone -o web -n web-backup
Allocating 'centos01-clone.qcow2' | 10 GB 00:00:49
Clone 'web-backup' created successfully.
[root@kvm-01 ~]# ll -h /data/centos01* #再次查看大小不一样,克隆的时候不会克隆快照
-rw------- 1 root root 1.3G May 2 20:53 /data/centos01-clone.qcow2
-rw-r--r-- 1 root root 2.3G May 2 09:45 /data/centos01.qcow2
1.2:手动克隆
[root@kvm-01 ~]# cp /data/centos01-clone.qcow2 /data/web01.qcow2 #拷贝磁盘文件
[root@kvm-01 ~]# virsh dumpxml web >web01.xml #备份配置文件
[root@kvm-01 ~]# vim web01.xml #编辑配置文件
#修改虚拟机的名字为web01
<name>web</name> 改为 <name>web01</name>
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/web01.qcow2'/> # centos01改为web01
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
[root@kvm-01 ~]# virsh define web01.xml #导入配置文件
[root@kvm-01 ~]# virsh start web01 #启动系统
2:连接克隆
生成虚拟机磁盘文件
[root@kvm-01 ~]# qemu-img create -f qcow2 -b /data/centos01-clone.qcow2 /data/web02.qcow2
Formatting '/data/web02.qcow2', fmt=qcow2 size=10737418240 backing_file='/data/centos01-clone.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm-01 ~]# qemu-img info /data/web02.qcow2
image: /data/web02.qcow2 #在你使用web02.qcow2这块盘的时候也会要求先加载centos01-clone.qcow2这块盘,然后再把web02.qcow2这块盘的差异数据补上。
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
backing file: /data/centos01-clone.qcow2 #基于centos01-clone.qcow2做的连接克隆
Format specific information:
compat: 1.1
lazy refcounts: false
生成虚拟机配置文件
[root@kvm-01 ~]# ll -h /data/web02.qcow2 #查看一下大小
-rw-r--r-- 1 root root 193K May 2 21:03 /data/web02.qcow2
[root@kvm-01 ~]# virsh dumpxml web01 >web02.xml
[root@kvm-01 ~]# vim web02.xml
#修改虚拟机的名字
<name>web01</name> 改为 <name>web02</name>
#删除虚拟机uuid
<uuid>ded20983-d091-48f9-af0c-1e18ea3b9c72</uuid>
#删除mac地址
<mac address='52:54:00:3f:7f:62'/>
#修改磁盘路径
<source file='/data/web02.qcow2'/>
导入虚拟机并进行启动测试
[root@kvm-01 ~]# virsh define web02.xml
[root@kvm-01 ~]# virsh start web02
[root@kvm-01 ~]# ll -h /data/web02.qcow2 #再次查看大小变大了。这个是因为开机之后生成一些日志、数据
-rw-r--r-- 1 qemu qemu 7.7M May 2 21:08 /data/web02.qcow2
3:全自动连接克隆脚本
[root@kvm-01 ~]# cat link_clone.sh
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
disk_tmp=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk ${disk_tmp}/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g"
/tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
二:kvm虚拟机桥接网络
默认的虚拟机网络是NAT模式,网段192.168.122.0/24
1:创建桥接网卡
创建桥接网卡
[root@kvm-01 ~]# virsh iface-bridge eth0 br0
Created bridge br0 with attached device eth0
Bridge interface br0 started
取消桥接网卡
[root@kvm-01 ~]# virsh iface-unbridge br0
2:新虚拟机使用桥接模式
默认NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name bridge--memory 1024 --vcpus 1 --disk /data/bridge.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
1.1:桥接模式
重点修改’bridge=‘参数
[root@kvm-01 ~]# qemu-img create -f qcow2 -b /data/centos01-clone.qcow2 /data/bridge.qcow2
Formatting '/data/bridge.qcow2', fmt=qcow2 size=10737418240 backing_file='/data/centos01-clone.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm-01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name bridge --memory 1024 --vcpus 1 --disk /data/bridge.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Domain creation completed.
验证网段是否和虚拟机桥接网段一样
[root@kvm-01 ~]# virsh console bridge
[root@localhost ~]# ip a |grep 192
inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic eth0
1.2:修改默认网络虚拟机为桥接网络
[root@kvm-01 ~]# virsh destroy web
[root@kvm-01 ~]# virsh edit web
<interface type='network'>
<mac address='52:54:00:42:53:52'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<!--修改成如下-->
<interface type='bridge'>
<mac address='52:54:00:42:53:52'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
[root@kvm-01 ~]# virsh start web #启动
[root@kvm-01 ~]# virsh console web #consle连接
[root@localhost ~]# ip a|grep 192
inet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute dynamic eth0