KVM安装配置指南

1. KVM介绍

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 线程。这使得 KVM 能够使用 Linux 内核的已有功能。KVM 本身不执行任何硬件模拟,需要用户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟 I/O。
这里写图片描述
KVM在linux中的工作模式如图所示,这是裸机虚拟技术,KVM完全充当了hypervisor层,各单位工作如下:

  • Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的CPU 模式下运行。
  • KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。
  • QEMU:修改过的被 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设备和 KVM 交互。

2. KVM安装和网络环境配置

2.1 KVM安装

KVM本身是在Linux内核中的一个模块儿,直接加载就可以使用,所谓的安装,实际上是安装KVM的管理工具包,视图化管理工具包和字符型管理包。

2.1.1 KVM管理工具介绍:

  • qemu:(最底层的管理工具)
    • qemu-kvm
    • qemu-img
  • libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等在内的多种 Hypervisor。
    • Virsh:基于 libvirt 的 命令行工具 (CLI)
    • Virt-Manager:基于 libvirt 的 GUI 工具

2.1.2 KVM管理工具包安装

[root@Init ~]# yum -y install libvirt-daemon-kvm qemu-kvm virt-manager libvirt
#安装相应管理的软件
[root@Init ~]# modprobe kvm 
#加载KVM模块儿
[root@Init ~]# systemctl start libvirtd.service
#启动守护进程

2.2 网络环境配置

2.2.1 桥接型网络配置

由于大家所在的生产场景是不同的,那么虚拟机对于网络的需求也是不一样的,大多数人经常会用到NAT模式下的网络和桥接形式的网络,如果你用过虚拟机,那么想必你对这几种类型的网络会很清楚。KVM中NAT类型的网络是只要启动守护进程就有的的,因此,我们只需要关注如何配置出桥接的网络类型即可。NAT和桥接两种模型的拓扑图如下所示
这里写图片描述
这里写图片描述
Bridge方式原理

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。具体可参考下图:
这里写图片描述
Bridge配置步骤
1.编辑修改配置文件,拿我自己的虚拟机为例,我虚拟机中ens33网卡是桥接网卡,那么我需要将这张网卡创建一个网桥br0,如上图所示,然后br0就成了我之后使用kvm时候桥接网卡。

[root@Init ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
NM_CONTROLLED=no
#是否受Network Mangement控制,这里选择no。
BRIDGE=br0

2.修改br0网卡的配置

[root@Init ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 
BOOTPROTO=dhcp
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no

3.重启网络,或者重启系统以上配置就能够生效。
如果以上内容仍有不清楚的地方,可参考以下两篇博文:
配置KVM虚拟机的网络,Bridge和Nat方式
KVM虚拟机网络配置 Bridge方式,NAT方式

2.2.2 NAT或者仅主机型网络配置

1.在宿主机上配置新的网桥。

[root@Init /images]# brctl addbr mybr0
#在宿主机上添加一个名为mybr0的网桥
[root@Init /images]# ip link set mybr0 up 
#激活该网桥

上面使用的命令具有一定的局限性,服务器重启之后,这些配置都会丢失,因此,如果希望这些配置能永久生效,则需要修改配置文件。
[root@Init ~]# vim /etc/sysconfig/network-scripts/ifcfg-mybr0
BOOTPROTO=static
DEVICE=mybr0
TYPE=Bridge
NM_CONTROLLED=no

2.在使用KVM安装虚拟机的时候,指定网卡名为该网卡即可,如图所示
这里写图片描述
3.为该网卡的两端(宿主机和虚拟机)手动添加Ip地址。(因为是自己创建的网桥,并没有指定dhcp设备,所以一开始是没有Ip地址的,需要自己去指定ip地址)

  • 配置仅主机模型
[root@Init /images]# ifconfig mybr0 172.16.0.66/24
#在宿主机上修改mybr0的网络地址
ifconfig eth0 172.16.0.55/24
#KVM的虚拟机上修改eth0的网络地址。

宿主机ping虚拟机,可以ping通,虚拟机Ping宿主机也可以ping通。但是虚拟机不能ping通外网。
- 配置NAT模型

1.虚拟机上设置默认网关,并指向宿主机的ip。
route add default gw 172.16.0.66
2.宿主机上设置默认NAT规则,进行SNAT(源地址转换)保证虚拟机的网络能够出去
[root@Init /images]# iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 172.16.0.0/16 -j MASQUERADE 
3.在宿主机上为桥接型的网桥设置第二个ip地址,并将所有有关该ip地址的访问都转给KVM虚拟机。
[root@Init /images]# ifconfig br0:0 192.168.3.155/24
#修改网桥地址
[root@Init /images]# iptables -t nat  -A PREROUTING -d 192.168.3.155 -j DNAT --to-destination 172.16.0.55
#创建DNAT防火墙规则。
这样就能进也能出了

3. KVM使用

3.1 图形化界面的使用方法

[root@Init ~]# yum -y groups install 'GNOME Desktop'
#在服务端安装可视化界面。
[root@Init ~]# virt-manager  
#打开可视化界面

常见问题:x11没打开转发,或者windows不能提供x11可视化服务。
解决方案:KVM图形管理界面打不开(virt-manager 报错)
有关图形界面的使用其实没什么要说的,因为大部分操作和你在windows下使用VMvare一样,但是有一些不同的地方是在最开始安装操作系统的时候,可以使用镜像文件来安装操作系统,经常在云计算测试环境中使用的镜像文件有下面这两种。
alpine
cirros
你也可以在csdn下载中搜索cirros,有很多这样的文件,或者你可以直接下载我测试所使用的这个。
cirros下载链接

初始时系统镜像的账户和密码
user:cirros
pass:cubswin:)

切换到root用户下的命令
sudo su -

猜你喜欢

转载自blog.csdn.net/gui951753/article/details/81088552