导读 一直想尝试弄下大名鼎鼎的KVM虚拟机,但是受到硬件方面的限制一直没进行过测试,最终还是基于VMware Workstation 的基础上安装KVM 进行二层虚拟化测试。
安装流程

1.宿主机是基于VMware 上安装的centos 7 系统(centos 6.5和centos 7都有测试,略微区别),开启VMware的CPU虚拟化。

2.yum安装对应软件和依赖。

3.调整网卡设置,创建虚拟网桥。

系统初始化设置

这里是指关闭selinux 和iptables等设置,根据实验测试,centos 6 版本作为宿主系统需要调整内核为兼容模式,而centos 7上无需进行调整。

centos 6.5宿主系统调整内核
[root@kvmserver ~] vim  /boot/grub/grub.conf
default=1
关闭selinux 和iptables

centos 7预装firewalld 直接关闭开机启动

[root@kvmserver ~] systemctl stop firewalld.service
[root@kvmserver ~] systemctl disable firewalld.service

查看selinux状态,调整为关闭:

[root@kvmserver ~] getenforce  #即可查看selinux 的状态
[root@kvmserver ~] setenforce 0 #临时关闭,重启后失效
[root@kvmserver ~] vim /etc/selinux/config  
设置为SELINUX=disabled  #永久关闭selinux
设置yum源,为了更快,更方便下载,建议修改为阿里云公共yum源

如果不会,请查看官方设置方法: http://mirrors.aliyun.com/help/centos

安装软件和依赖
先查看一下是否支持虚拟化,命令执行后看到有红色字体的信息则代表支持,如果没有显示输出,则不支持虚拟化
[root@kvmserver ~] egrep '(vmx|svm)' --color=always /proc/cpuinfo
安装kvm 和virsh 相关组件
[root@kvmserver ~] yum -y install kvm python-virtinst libvirt tunctl  bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-install virt-v2v libguestfs-tools

完成后查看一下内核中是否已经增加了KVM

[root@kvmserver ~] lsmod | grep kvm
kvm_intel             148081  6 
kvm                   461126  1 kvm_intel
libvirtd 进程是KVM的守护进程,启动libvirtd 并设置开机启动
[root@kvmserver ~] systemctl restart libvirtd
[root@kvmserver ~] systemctl enable libvirtd

centos 6 的环境下启动有出息报错的情况,报错信息如下:

启动 libvirtd 守护进程:libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 .......

[root@kvmserver ~] yum -y upgrade device-mapper-libs

连接到kvm中查看状态,现在没有创建虚拟机,所以没有对应的显示:

[root@kvmserver ~]  virsh -c qemu:///system list
 Id    名称                         状态
----------------------------------------------------
创建虚拟网桥

该过程很好理解,将宿主服务器的本地网卡设置为桥接模式,提供给KVM创建的虚拟机使用,创建一个虚拟网卡用于宿主服务自身使用

调整网络管理进程为network
[root@kvmserver ~]# systemctl disable NetworkManager.service
[root@kvmserver ~]# systemctl stop NetworkManager.service
[root@kvmserver ~]# systemctl restart network
设置网卡,先备份当前网卡信息,创建虚拟网卡
[root@kvmserver ~] cd  /etc/sysconfig/network-scripts/
[root@kvmserver network-scripts] cp ifcfg-eno16777736  ifcfg-eno16777736.bak
[root@kvmserver network-scripts] cp ifcfg-eno16777736  ifcfg-br0

调整原网卡为网桥模式:

vim ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eno16777736"
BRIDGE="br0"
DEVICE="eno16777736"
ONBOOT="yes"

设置虚拟网卡:

vim ifcfg-br0
TYPE="Bridge"
BOOTPROTO="static"
NAME="eth1"
DEVICE="br0"
ONBOOT="yes"
IPADDR=192.168.31.30
NETMASK=255.255.255.0
GATEWAY=192.168.31.1

宿主服务器的本地网卡设置工作模式为网桥,然后新建一个虚拟网卡配置好服务器自身的IP地址。

查看网络状态:完成上面设置后,重启network服务

查看网卡信息:

[root@kvmserver ~]  ifconfig
br0: flags=4163  mtu 1500
        inet 192.168.10.26  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::a409:3ff:feac:2f1c  prefixlen 64  scopeid 0x20
        ether fe:54:00:10:85:54  txqueuelen 0  (Ethernet)
        RX packets 28  bytes 5008 (4.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 900 (900.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno16777736: flags=4163  mtu 1500
................

查看网桥信息:

[root@kvmserver ~] brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000000000000	no		eno16777736
virbr0		8000.525400424353	yes		virbr0-nic

本文原创地址:https://www.linuxprobe.com/kvm-virutal.html编辑:xiangping wu,审核员:逄增宝