第1章 搭建kvm

1.1 环境

CentOS7

1.2 KVM简介

什么是虚拟化?

虚拟化就是把硬件资源从物理方式转变为逻辑方式打破原有物理结构,使用户可以灵活管理这些资源,并且允许一台物理机上运行多个操作系统,以实现资源利用率最大化和灵活管理的一项技术。

虚拟化的优势

减少服务器数量,降低硬件采购成本
资源利用率最大化
降低机房空间、散热、用电消耗的成本
硬件资源可动态调整。提高企业IT业务灵活性
高可用性
在不中断服务的情况下进行物理硬件调整
降低管理成本
具备高可用的灾备能力

kvm虚拟化

kvm自linux2.6.20版本后就直接整合到linux内核中,它依托CPU虚拟化指令集(例如Intel-VT、AMD-V)实现高性能的虚拟化支持。由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现。在KVM环境中运行的每一个虚拟化操作系统都将表现为单个独立的系统进程。KVM可以运行多个未修改的Linux或Windows映像的虚拟机。每个虚拟机都有专用的虚拟化硬件:网卡,磁盘,图形适配器等。因此它可以方便的与Linux系统中的安全模块进行整合(SELinux)可以灵活实现资源的管理与分配。

1.3 虚拟机配置

8G内存

2个处理器

两个40G硬盘

开启CPU虚拟化支持

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm

1.4 关闭防火墙及selinux

systemctl stop firewalld.service
setenforce 0

实验目的是在虚拟机中安装虚拟机,所以这里的虚拟机内存要尽量大点,4G以上为佳,本来我安装的虚拟机磁盘空间为40G,我重新添加了一块磁盘用来安装虚拟机。

1.5 安装kvm所需软件

yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y
qemu-kvm
 虚拟化软件 虚拟网络和硬盘等 用户态
 libvirt 虚拟化工具统一接口(libvirt API,libvirt daemon,用户态工具)
 virsh virt-manager virt-viewer virt-install other-tools是libvirt用户态的工具

1.6 查看系统是否支持虚拟化

当你的利用VMware Workstation软件,可以运行虚拟机时,表示你的CPU已经支持虚拟化了,这里的检查是检查是否开启虚拟机的虚拟化功能(嵌套虚拟化),使用egrep ‘(vmx|svm)’ /proc/cpuinfo,只要有输出结果即表示开启成功。vmx表示intel服务器,svm表示AMD服务器。

egrep '(vmx|svm)' /proc/cpuinfo

1.7 检查kvm模块是否安装

lsmod | grep kvm

1.8 开启libvirtd服务

systemctl start libvirtd.service
systemctl status libvirtd.service

1.9 创建硬盘

qemu-img create -f raw /vdir/CentOS-7.4-x86_64.img 20G
qemu-img create -f qcow2 /images/centos.qcow2 20G

说明:以上命令任选一个。

1.10 将镜像添加到虚拟机中

挂载windows中的共享文件,然后将镜像文件复制到虚拟机中的文件夹内,不要直接使用挂载目录,会存在权限问题,导致安装失败。

1.11 配置安装

参数解释

virt-install --name CentOS7.4-x86_64 \                               //名称与创建硬盘时定义的域名称一致
--virt-type kvm \
--ram 2048 \                                                         //建议2G,少了会卡
--cdrom=/opt/CentOS-7-x86_64-DVD-1708.iso \            
//镜像文件路径
--disk path=/vdir/CentOS-7.4-x86_64.img \                     
//磁盘路径
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

启动虚拟机命令

virt-install --name CentOS7.4-x86_64 --virt-type kvm --ram 2048 --cdrom=/opt/CentOS-7-x86_64-DVD-1708.iso --disk path=/vdir/CentOS-7.4-x86_64.img --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

#安装普通nat模式网卡的虚拟机

virt-install --virt-type=kvm --name=CentOS7-01 --vcpus=4 --ram 4096  --network network=default --disk /images/centos.qcow2,size=20,format=qcow2,device=disk --cdrom /images/CentOS-7-x86_64-DVD-1511.iso  --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=centos --os-variant=rhel7

#安装bridge模式网卡的虚拟机

virt-install --virt-type=kvm --name=CentOS7-01 --vcpus=4 --ram 4096 -w  bridge=br0 --disk /images/centos.qcow2,size=20,format=qcow2,device=disk --cdrom /images/CentOS-7-x86_64-DVD-1511.iso  --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=centos --os-variant=rhel7

1.12 安装虚拟机网卡类报错

指定--network network=default报错

开始安装......
ERROR    所需操作无效:网络 'default' 未激活
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start CentOS7-01'
否则请重新开始安装。

激活default网卡
1、首先建立default网卡文件

cat /etc/libvirt/qemu/networks/default.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>693b5cfe-27b6-44f4-a0c3-be75cd0c071c</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:90:6b:ba'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2、定义网卡

virsh net-define /etc/libvirt/qemu/networks/default.xml

3、启动网卡

virsh net-start default

4、查看网卡

virsh net-list
 名称               状态     自动开始  持久
----------------------------------------------------------
 default              活动     否           是

或者ip a

ip a
7: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 52:54:00:90:6b:ba brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
8: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:90:6b:ba brd ff:ff:ff:ff:ff:ff

第2章 virsh-install详解

virt-install命令有许多选项,这些选项大体可分为下面几大类,同时对每类中的常用选项也做出简单说明。

2.1 一般选项

指定虚拟机的名称、内存大小、VCPU个数及特性等;

-n NAME, --name=NAME:虚拟机名称,需全局惟一;  
-r MEMORY, --ram=MEMORY:虚拟机内在大小,单位为MB;  
--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU个数及相关配置;  
--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?来获取支持的CPU模式;  
安装方法:指定安装方法、GuestOS类型等;  
-c CDROM, --cdrom=CDROM:光盘安装介质;  
-l LOCATION, --location=LOCATION:安装源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;  
--pxe:基于PXE完成安装;  
--livecd: 把光盘当作LiveCD;  
--os-type=DISTRO_TYPE:操作系统类型,如linux、unix或windows等;  
--os-variant=DISTRO_VARIANT:某类型操作系统的变体,如rhel5、fedora8等;  
-x EXTRA, --extra-args=EXTRA:根据--location指定的方式安装GuestOS时,用于传递给内核的额外选项,例如指定kickstart文件的位置,--extra-args "ks=http://172.16.0.1/class.cfg"  
--boot=BOOTOPTS:指定安装过程完成后的配置选项,如指定引导设备次序、使用指定的而非安装的kernel/initrd来引导系统启动等 ;例如:  
--boot  cdrom,hd,network:指定引导次序;  
--boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定启动系统的内核及initrd文件;

2.2 存储配置

指定存储类型、位置及属性等;

--disk=DISKOPTS:指定存储设备及其属性;格式为--disk /some/storage/path,opt1=val1,opt2=val2等;常用的选项有:  
device:设备类型,如cdrom、disk或floppy等,默认为disk;  
bus:磁盘总线类型,其值可以为ide、scsi、usb、virtio或xen;  
perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;  
size:新建磁盘映像的大小,单位为GB;  
cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写);  
format:磁盘映像格式,如raw、qcow2、vmdk等;  
sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间;  
--nodisks:不使用本地磁盘,在LiveCD模式中常用;

2.3 网络配置

指定网络接口的网络类型及接口属性如MAC地址、驱动模式等;

-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为:  
bridge=BRIDGE:连接至名为“BRIDEG”的桥设备;  
network=NAME:连接至名为“NAME”的网络。

2.4 其它常用的选项

model:GuestOS中看到的网络设备型号,如e1000、rtl8139或virtio等;  
mac:固定的MAC地址;省略此选项时将使用随机地址,但无论何种方式,对于KVM来说,其前三段必须为52:54:00;  
--nonetworks:虚拟机不使用网络功能;

2.5 图形配置

定义虚拟机显示功能相关的配置,如VNC相关配置;

--graphics TYPE,opt1=val1,opt2=val2:指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口;  
TYPE:指定显示类型,可以为vnc、sdl、spice或none等,默认为vnc;  
port:TYPE为vnc或spice时其监听的端口;  
listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1,可以通过修改/etc/libvirt/qemu.conf定义新的默认值;  
password:TYPE为vnc或spice时,为远程访问监听的服务进指定认证密码;  
--noautoconsole:禁止自动连接至虚拟机的控制台;

2.6 设备选项

指定文本控制台、声音设备、串行接口、并行接口、显示接口等;

--serial=CHAROPTS:附加一个串行设备至当前虚拟机,根据设备类型的不同,可以使用不同的选项,格式为“--serial type,opt1=val1,opt2=val2,...”,例如:  
--serial pty:创建伪终端;  
--serial dev,path=HOSTPATH:附加主机设备至此虚拟机;  
--video=VIDEO:指定显卡设备模型,可用取值为cirrus、vga、qxl或vmvga;

2.7 虚拟化平台

虚拟化模型(hvm或paravirt)、模拟的CPU平台类型、模拟的主机类型、hypervisor类型(如kvm、xen或qemu等)以及当前虚拟机的UUID等;

-v, --hvm:当物理机同时支持完全虚拟化和半虚拟化时,指定使用完全虚拟化;  
-p, --paravirt:指定使用半虚拟化;  
--virt-type:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令获取;

2.8 其它选项

autostart:指定虚拟机是否在物理启动后自动启动;  
--print-xml:如果虚拟机不需要安装过程(--import、--boot),则显示生成的XML而不是创建此虚拟机;默认情况下,此选项仍会创建磁盘映像;  
--force:禁止命令进入交互式模式,如果有需要回答yes或no选项,则自动回答为yes;  
--dry-run:执行创建虚拟机的整个过程,但不真正创建虚拟机、改变主机上的设备配置信息及将其创建的需求通知给libvirt;  
-d, --debug:显示debug信息;

2.9 必须提供的选项

尽管virt-install命令有着类似上述的众多选项,但实际使用中,其必须提供的选项仅包括
–name、–ram、–disk(也可是–nodisks)及安装过程相关的选项。此外,有时还需要使用括–connect=CONNCT选项来指定连接至一个非默认的hypervisor。

2.10 使用TightVNC Viewer 连接服务器

TightVNC是一款免费的远程控制软件包。使用TightVNC,可以看到远程计算机的桌面并使用本地鼠标和键盘控制它,就像坐在计算机前面一样。TightVNC是跨平台的,适用于Windows和Unix,包含Java客户端,兼容标准VNC软件,符合RFB协议规范。在连接过程中如果出现连接被拒绝,可以检查虚拟机的防火墙状态,是否正常关闭。
下载方式
https://www.tightvnc.com/download.php

2.11 使用vnc连接

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_虚拟化_02

说明:该安装包已经下载到百度网盘。

2.12 查看虚拟机状态

虚拟机安装完成之后,此时的虚拟机状态是处于关闭状态,当你使用TightVNC连接时会被拒绝,此时需要开启虚拟机

virsh list --all                   //查看虚拟机状态
virsh start CentOS7.4-x86_64      //开启虚拟机

2.13 登陆虚拟机

使用远程软件,输入用户名和密码即可登陆

2.14 在宿主机上登录虚拟机

arp安装

yum -y install net-tools

查看虚拟机的mac

virsh dumpxml 虚拟机id号或者名字|grep mac

过滤更详细的信息

virsh dumpxml 2|grep 'mac address'|awk -F "[']" '{print $2}'
arp -a |grep mac #查看mac和ip对应关系
ssh root@ip登录虚拟机

第3章 kvm桥接网络配置

3.1 kvm网络模式

kvm 虚拟化技术中,网络访问方式分为三种,分别是:
(1)虚拟网络’default’:NAT (默认方式,支持虚拟机上网但不支持互访)
(2)主机设备 vnet0(根据实际情况而定):macvtap (支持互访)
(3)主机设备 vnet0 (桥接’br0’) (bridge 方式,使虚拟机成为网络中具有独立IP的主机)
推荐采用 bridge 方式,要采用 bridge 方式,需要在宿主机网络上建立一个桥接器。

①启动kvm虚拟机,会多出一个vnet0网络设备,这是虚拟机启动后生成的。
查看:ifconfig
②kvm虚拟机启动后,vnet0默认桥接到了virbr0上,关闭后消失。
查看:brctl show
关机:virsh shutdown vm-01
再查看:brctl show

③此时的kvm虚拟机出去的流量是桥接到virbr0上,然后经过宿主机的iptables的nat,再经过eth0出去。
这有网络瓶颈,而且依靠iptables,如果你把iptables关闭无法上网了。同时ip地址是地址池中分配的内网地址。
查看:iptables -t nat -vnL

④kvm获取的地址来源于下面。
ps aux | grep dns
cat /var/lib/libvirt/dnsmasq/default.conf
3.2 配置桥接
生产中,网络的配置如下:
一般是添加一个网络设备桥,把宿主机的网卡桥接到这上面。
删除原先宿主机的IP地址,把宿主机的地址配置到这个网络设备桥上。
最后修改kvm配置文件,让kvm也桥接到这个网络设备桥上。

命令配置

1,查看网桥:brctl show
2,重新添加网桥:brctl addbr br0
3,查看网桥:brctl show

下面操作过程中会断网。可以写成脚本形式执行。 
1、创建脚本edit-net.sh,如下:
brctl addif br0 eth0
ip addr del dev eth0 192.168.145.133/24
ifconfig br0 192.168.145.133/24 up
route add default gw 192.168.145.2
2、可以看到eth0上就没有ip地址了,同时eth0桥接到了br0上了。
查看:brctl show
查看:ifconfig
3.3 修改既存的虚拟机为桥接
虚拟机配置文件(.xml)的路径:cd /etc/libvirt/qemu
修改虚拟机的配置文件,把kvm也桥接到br0上。
★interface这里原先配置如下:

<interface type='network'>
<mac address='52:54:00:83:f7:a0'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
修改配置如下:
修改命令:virsh edit vm-01
<interface type='bridge'>
<mac address='52:54:00:83:f7:a0'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

如果想在原来的基础上新加一个桥接网卡,那么只需要复制一份网卡配置部分,修改如下部分,注意pci的bus部分不同,否则无法更改
修改命令:virsh edit vm-01

<interface type='bridge'>
<mac address='52:54:00:83:f7:a0'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x03' function='0x0'/>
</interface>

重启虚拟机使配置生效

virsh destroy vm-01
virsh start vm-01

说明:virsh reboot vm-01不会使桥接配置生效,需要先关闭再重启。
此时,查看kvm虚拟机,可以看到IP已经和主机同一网段了。

3.4 修改桥接为永久生效

上述桥接操作,让宿主机的eth0桥接到br0上是临时生效的,重启宿主机,就失效了。
★brctl命令来自于下面包:
①which brctl
显示:/usr/sbin/brctl
②查询包名:rpm -qf /usr/sbin/brctl
bridge-utils-1.5-9.el7.x86_64

③创建了一个ifcfg-br0文件,然后更改eth0的配置文件,桥接上去。
配置完成后,重启主机。

【手动配置】
不用上面命令配置法,直接执行手动配置法更方便。

cp ifcfg-eth0 ifcfg-br0

★ ifcfg-eth0的配置文件如下:

cat ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=681822d5-ef6d-4401-b7d6-096d0841cf7a
DEVICE=eth0
ONBOOT=yes
#IPADDR=192.168.0.113
#NETMASK=255.255.255.0
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
#DNS2=114.114.114.114
BRIDGE=br0

★ ifcfg-br0的配置文件如下:

TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.145.133
NETMASK=255.255.255.0
GATEWAY=192.168.145.2
NAME=br0

第4章 kvm使用

4.1 更改kvm主机名信息

virsh edit 虚拟机名字或虚拟机id

<domain type='kvm'>
  <name>CentOS7-01</name>
  <uuid>beaab854-95a5-400f-a91d-66a065d7be6e</uuid>

说明:name和uuid一块改了否则会报错。
错误:操作失败: 已使用 uuid CentOS7-01 定义域名 ‘beaab854-95a5-400f-a91d-66a065d7be6e’
失败的。 Try again? [y,n,i,f,?]:
第二种方法重新定义虚拟机的xml文件

virsh dumpxml centos7-01 >>/etc/libvirt/qemu/vm-01.xml
virsh destroy centos7-01
virsh undefine centos7-01
vim /etc/libvirt/qemu/vm-01.xml
<domain type='kvm'>
  <name>vm-01</name>
virsh define /etc/libvirt/qemu/vm-01.xml

注意:virsh edit 更改主机名后会生成一个新的虚拟机,virsh start新的虚拟机名字 即可。

4.2 更改kvm网络地址

kvm原来的网络地址

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_虚拟化_03

vim /etc/libvirt/qemu/networks/default.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->
<network>
  <name>default</name>
  <uuid>966190a2-5481-4121-a8c8-0b33d2502a69</uuid>
  <forward mode='bridge'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ae:14:92'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>
virsh net-define /etc/libvirt/qemu/networks/default.xml

错误:从 /etc/libvirt/qemu/networks/default.xml 定义网络失败

错误:XML 错误:只能在路由、nat 以及孤立模式中,而不能在 bridge(网络 ‘default’)中使用桥接 delay/stop 选项

说明:virsh定义kvm的网络模式,bridge会出错。其他模式可以。

更改kvm的网络地址

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm_04

virsh net-define /etc/libvirt/qemu/networks/default.xml
virsh net-destroy default
virsh net-start default

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_CentOS_05

4.3 新建一个kvm网卡

cp /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/eth2.xml

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm_06

virsh net-define /etc/libvirt/qemu/networks/eth2.xml
virsh net-start eth2
virsh net-list

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm如何给虚拟主机开启虚拟化_07


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_虚拟化_08

4.4 虚拟机新网卡替换旧的网卡

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_桥接_09

virsh destroy vm-01
virsh start vm-01

注意:virsh destroy vm-01不生效。

4.5 将新网卡加到虚拟机上

查看虚拟机的网卡

virsh domiflist vm-01

临时添加桥接网卡

virsh attach-interface vm-01 --source virbr0 --type bridge

临时添加network网卡

virsh attach-interface vm-01 --source virbr0 --type network

永久添加桥接网卡

virsh attach-interface vm-01 --source virbr0 --type bridge --config

说明:只执行这个命令虚拟机不会立刻生成网卡。需要destroy,start。
永久添加network网卡

virsh attach-interface vm-01 --source virbr0 --type network --config

说明:只执行这个命令虚拟机不会立刻生成网卡。需要destroy,start。

查看是否加上

virsh domiflist vm-01

4.6 虚拟机分离网卡

virsh detach-interface vm-01 --type bridge --mac 52:54:00:14:86:cf
virsh detach-interface vm-01 --type bridge
virsh detach-interface vm-01 --mac 52:54:00:14:86:cf

4.7 查看虚拟机信息

virsh  dominfo windows-server-2008
Id:             23
名称:       windows-server-2008
UUID:           ec68702a-1985-496e-926b-81c6cbd486d9
OS 类型:    hvm
状态:       running
CPU:          4
CPU 时间:   122.3s
最大内存: 9125888 KiB
使用的内存: 9125888 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0

4.8 设置虚拟机最大内存

方法1

virsh destroy windows-server-2008

说明:必须关闭虚拟机

virsh  setmaxmem --size 4096M windows-server-2008
virsh  dominfo windows-server-2008
Id:             -
名称:       windows-server-2008
UUID:           ec68702a-1985-496e-926b-81c6cbd486d9
OS 类型:    hvm
状态:       关闭
CPU:          4
最大内存: 4194304 KiB
使用的内存: 1048576 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0

方法2

virsh destroy windows-server-2008
virsh edit windows-server-2008
<domain type='kvm'>
  <name>windows-server-2008</name>
  <uuid>ec68702a-1985-496e-926b-81c6cbd486d9</uuid>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>

4.9 为windows虚拟机添加硬盘

qemu-img create -f qcow2 /images/centos.qcow2 20G
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/images/win.qcow2'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/images/windows-server-2008.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>

#这部分是新加的硬盘配置,注意 <target dev='hdc’是需要改的

<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/images/win-vdb.qcow2'/>
      <target dev='hdc' bus='ide'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>

关闭虚拟机

virsh destroy  windows-server-2008

启动虚拟机

virsh start  windows-server-2008

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_桥接_10


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_CentOS_11


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm_12


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm如何给虚拟主机开启虚拟化_13


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_桥接_14


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_桥接_15

4.10 windows虚拟机硬盘扩容

先扩容镜像文件

qemu-img resize /images/win-vdb.qcow2 +200G

重新启动虚拟机

virsh destroy windows-server-2008
virsh start windows-server-2008

进入windows server系统,选择服务器管理器,选择磁盘1的盘符E,右键选择扩展卷,如下图

kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm_16


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_桥接_17


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_虚拟化_18


kvm如何给虚拟主机开启虚拟化 kvm虚拟化搭建_kvm如何给虚拟主机开启虚拟化_19

4.11 查看linux底下所有的虚拟网卡

ls /sys/devices/virtual/net/

4.12 查看Linux系统中全部的网卡

cat /proc/net/dev

第5章 克隆虚拟机

5.1 关闭要被克隆的虚拟机

virsh destroy vm-01
virt-clone --connect=qemu:///system -o vm-01 -n vm-01-clone -f /var/lib/libvirt/images/vm-01-clone.img
正在分配 'vm-01-clone.img'                                                                                                                                        |  20 GB  00:01:14     

成功克隆 'vm-01-clone'。

5.2 查看

virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     vm-01                          关闭
 -     vm-01-clone                    关闭

第6章 创建快照

virsh snapshot-create  windows-server-2008
已生成域快照 1564556584

说明:可以不关闭虚拟机

6.1 查看生成的快照

virsh snapshot-list    windows-server-2008
 名称               生成时间              状态
------------------------------------------------------------
 1564556584           2019-07-31 15:03:04 +0800 running