KVM虚拟化环境安装
Posted 陈老师门徒计划
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM虚拟化环境安装相关的知识,希望对你有一定的参考价值。
在前面的学习过程中,我们对虚拟化及KVM的理论做了深入探究,接下来我们就进一步学习如何实现KVM虚拟化环境及VM的相关操作。
1、KVM虚拟化环境安装
简单回顾一下KVM的知识点
KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。目前KVM已成为主流VMM之一,它包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或 kvm-amd.ko)。kvm还需要一个经过修改的QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。 KVM可以运行多个其本身运行未改动的镜像的虚拟机,例如Windows,Mac OS X ,每个虚拟机都有各自的虚拟硬件,比如网卡、硬盘核图形适配器等。
KVM和QEMU的关系
QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT), AMD SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案:KVM+QEMU。
接下来聊聊基于CentOS Linux release 7.5.1804 (Core) 的环境下安装KVM虚拟化环境的详细过程。
系统版本:CentOS Linux release 7.5.1804 (Core)
#cat/etc/redhat-release
系统位数:x86_64
# uname -r
硬件支持:CPU开启虚拟化支持
如果是物理机的话在Bios里开启虚拟化支持,如有必要,还需在BIOS中开启VT-d。如果是用VMware Workstation做实验,建立的虚拟机的CPU要勾选虚拟化功能,这样虚拟机才会支持KVM虚拟化:虚拟机设置--处理器--勾选虚拟化InterVT-x/EPT或AMD-V/RVI(V)(虚拟机关机状态操作)
VT(Virtualization Technology):处理器虚拟化硬件支持
VT-D(VirtualizationTechonlogy for Directed I/O):I/O设备虚拟化硬件支持
主机名重命名
# cat /etc/hostname
kvm-server1
主机名修改后重启系统
或者
使用hostnamectl命令,hostnamectl set-hostname name
设置时间
#crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp.api.bz
安装KVM环境
RedHat/CentOS KVM 有如下两种安装方式:
1)在安装Linux系统时安装KVM
2)在已有的Linux系统中安装KVM(这种安装方式是本文要重点介绍的)
检测是否支持KVM
KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
# grep -E '(svm|vmx)' /proc/cpuinfo 或 egrep '(svm|vmx)'/proc/cpuinfo
注意:信息有输出表示支持虚拟化,否则就不支持虚拟化,无法安装KVM,也可能是没有开启CPU虚拟化支持。
查看是否加载KVM模块
# lsmod | grep kvm
kvm_intel 174841 0
kvm 578518 1 kvm_intel
irqbypass 13503 1 kvm
如果没有加载,运行以下命令:
# modprobe kvm
# ll /dev/kvm
crw-------. 1 root root 10, 232 Sep 1016:54 /dev/kvm
在部署KVM虚拟化环境之前先了解下KVM虚拟化平台的网络模型
一般虚拟机网络的连接方式主要包括三种方式。主要如下:
1)NAT模式:
2)Bridge模式
桥接模式是使用比较多的模式,它使虚拟机拥有自己的独立网卡和IP,然后通过借用宿主机的网卡对外连接网络。它把宿主机的网卡当作了一种桥,通过这个桥连接外网的世界。在这种模式下,可以简单的理解成虚拟机和宿主机是两个不同的机器,有独立IP可以相互访问。对于虚拟机的IP获取,一般可以手动配置也可以通过DHCP获取得到。
桥接模式下客户机与宿主机处于同一网络环境,类似于一台真实的宿主机,直接访问网络资源,设置好后客户机与互联网,客户机与主机之间的通信都很容易。
Bridge方式适用于服务器虚拟化
选择:当需要外界能定位(找)到虚机时使用Bridge方式、当不需要外界定位到虚机时使用NAT方式。
3)host-only:也叫隔离模式,意思就是将所有的虚拟机组成一个局域网,不能和外界通信,不能访问Internet,其他主机也不能访问虚拟主机,安全性高。
如何配置桥接网络
如果没有brctl命令(用来管理网桥的工具),则需要安装bridge-utils
# yum -y install bridge-utils
# systemctl restart network
配置KVM的网桥模式
一般来说,服务器可能有多个网卡,选择一个网卡当做网桥来与虚拟机通信
桥接网卡配置:
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-ens33 ifcfg-br0
# cat ifcfg-br0
TYPE=Bridge //这一行修改为Bridge,(按照规范首字母大写)
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0 //修改设备名称为br0
#UUID=fead84ed-1171-4d14-b693-f80cac2fa9fd //这一行注释
DEVICE=br0 //修改设备为br0
ONBOOT=yes
IPADDR=192.168.1.9
PREFIX=24
GATEWAY=192.168.1.1
DNS=8.8.8.8
宿主机物理网卡配置,我的网卡是ens33:
# cat ifcfg-ens33
TYPE=Ethernet
BRIDGE=br0 //添加这一行,将物理接口桥接到桥接器,即网卡ens33桥接到br0设备上
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=fead84ed-1171-4d14-b693-f80cac2fa9fd
DEVICE=ens33
ONBOOT=yes
#PREFIX=24
#GATEWAY=192.168.1.1
#DNS=8.8.8.8
注意:在配置完网卡以后,你可能会遇见yum install error 的问题,不用担心,请执行 vi /etc/resolv.conf,添加 nameserver :8.8.8.8
重启网卡服务
# systemctl restart network
查看网卡
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c299d13f1 no ens33
查看ip信息
# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet192.168.1.9 netmask 255.255.255.0 broadcast 192.168.1.255
ether00:0c:29:9d:13:f1 txqueuelen 1000 (Ethernet)
RX packets609 bytes 50034 (48.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 41 bytes 3536 (3.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether00:0c:29:9d:13:f1 txqueuelen 1000 (Ethernet)
RX packets152901 bytes 174467359 (166.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets73112 bytes 11194166 (10.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
# ping www.baidu.com
PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.
64 bytes from 111.13.100.92 (111.13.100.92): icmp_seq=1 ttl=55time=26.1 ms
64 bytes from 111.13.100.92 (111.13.100.92): icmp_seq=2 ttl=55time=26.6 ms
……
安装libvirt及kvm
libvirt是为了更方便地管理各种Hypervisor而设计的一套虚拟化库,libvirt作为中间适配层,让底层Hypervisor对上层用户空间的管理工具(virsh,virt-manager)做到完全透明,因为libvirt屏蔽了底层各种Hypervisor的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)
libvirt项目最初是为Xen设计的一套API,但是目前对KVM等其他Hypervisor的支持也非常的好。libvirt支持多种Hypervisor,既支持包括KVM、QEMU、Xen、VMware、VirtualBox等在内的平台虚拟化方案,又支持OpenVZ、LXC等Linux容器虚拟化系统,还支持用户态Linux(UML)的虚拟化。
libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口(API),而且一些常用的虚拟机管理工具和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用libvirt的应用程序接口,结构如下图
和手动使用qemu-kvm命令启动虚拟机不同,Libvirt使用xml文件来定义虚拟机的配置细节,就像配置虚拟机CPU,内存大小,网络,磁盘这些都可以在xml文件中定义,然后使用这些定义启动虚拟机,所谓更改虚拟机配置,其实就是更改这个虚拟机的xml文件参数(更改某些参数需要重启虚拟机才会生效)
配置yum环境
使用阿里云的yum源
先备份centos7自带的yum源仓库文件
# mkdir /etc/yum.repos.d/centos_yumrepo
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/centos_yumrepo
下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
之后运行yum makecache生成缓存
注:也可以使用epel源
yum -y install qemu-kvmqemu-img qemu-kvm-tools virt-manager libvirt libvirt-python libvirt-clientvirt-* bridge-utils libiscsi libcanberra-gtk2 libvirt-cim.x86_64 libvirt-java.noarch libiscsi-1.9.0-7.el7.x86_64 dbus-devel libguestfs-tools acpid
重启系统以便加载 kvm 模块
查看虚拟化环境
开启kvm服务,并且设置其开机自动启动
# systemctl start libvirtd.service
# systemctl enable libvirtd.service
# systemctl start acpid.service (开启虚拟机的电源模式服务)
# systemctl enable acpid.service
# systemctl status libvirtd
# systemctl status acpid
查看状态操作结果,如Active: active (running),说明运行情况良好
查看kvm模块支持
# lsmod | grep kvm
查看虚拟工具版本
# virsh --version
3.9.0
# virt-install --version
1.4.3
为方便起见,创建一个link
# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
# qemu-kvm -version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-156.el7_5.5),Copyright (c) 2003-2008 Fabrice Bellard
查看网桥
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c299d13f1 no ens33
virbr0 8000.52540012930f yes virbr0-nic
再来查看下KVM是否安装成功,执行:
# virsh -c qemu:///system list 或者 #virsh list (-c qemu可以省略)
如果输入结果像下面这样的,那么成功了:
Id Name State
----------------------------------------------------
到此kvm虚拟化环境安装完毕。
以上是关于KVM虚拟化环境安装的主要内容,如果未能解决你的问题,请参考以下文章