KVM之入门介绍与基于CentOS7的安装部署--01

什么是KVM

KVM: Kernel-based Virtual Machine

结构简单,包含两个部分:

  • 设备驱动/dev/kvm
  • 针对模拟PC硬件的用户空间组件
  • KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
  • 架构图
    架构图

    KVM特性

  • 嵌入到Linux正式Kernel(提高兼容性)

  • 代码级资源调用(提高性能)
  • 虚拟机就是一个进程(内存易于管理)
  • 直接支持NUMA技术(提高扩展性)
  • ———RedHat 收购KVM——-
  • 保持开源发展模式
  • 更好的商业支持和服务保障

KVM与QEMU

KVM介绍:
        对于KVM来说,其是一款支持虚拟机技术,而且是Linux内核中的一个功能模块。它在Linux2.6.20之后的任何Linux分支中都被支持。它还有一个条件,对硬件要求的条件,必须达到一定标准的硬件架构。对于Intel-VT与AMD-V都是支持的。对于是否支持也可以通过命令行查看:egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo。如果有任何内容则说明当期硬件架构是支持KVM的,否则就不支持。另外,就算支持,但是在bios中是默认设置不打开该功能的,所以你还要去bios设置其为enable。当设置成功之后,还需要关机一次,注意是关机而不是重启。否则该设置的更改就不起效。

QEMU:
        QEMU是什么。其实它也是一款虚拟化技术,就算不使用KVM,单传的QEMU也可以完全实现一个虚拟机。那为何还会有QEMU-KVM这个名词那。是因为虽然KVM的技术已经相当成熟而且可以对很多东西进行隔离,但是在某些方面还是无法虚拟出真实的机器。比如对网卡的虚拟,那这个时候就需要另外的技术来做补充,而QEMU-KVM则是这样一种技术。它补充了KVM技术的不足,而且在性能上对KVM进行了优化。
QEMU

Red-Hat企业级虚拟化解决方案

企业级虚拟化

Red-Hat桌面虚拟化

桌面虚拟化

基于CentOS7的安装部署

安装前准备

确保服务器开启虚拟化支持

1
2
3
[root@localhost ~]# grep -E '(vmx|svm)' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb lm constant_tsc nopl nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx xsaveopt
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb lm constant_tsc nopl nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx xsaveopt

关闭selinux

1
[root@localhost ~]# setenforce 0 && sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config

NTP设置

1
2
3
4
5
# 配置文件/etc/ntp.conf
[root@localhost ~]# /usr/sbin/ntpdate cn.ntp.org.cn
26 Dec 15:18:44 ntpdate[13806]: step time server 120.25.108.11 offset 1.377732 sec
[root@localhost ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate cn.ntp.org.cn >/dev/null 2>&1

安装KVM

安装epel

1
2
3
4
5
6
[root@localhost ~]# rpm -ivh http://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
Retrieving http://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
warning: /var/tmp/rpm-tmp.qzBtSd: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:epel-release-7-12 ################################# [100%]

安装相关的工具

  • qemu-kvm qemu-kvm-tools # QEMU的一个工具用于管理KVM
  • virt-manager                           # 使用这个包里的工具创建虚拟机
  • libvirt                                       # 创建的虚拟机用libvirt进行管理
1
2
3
4
5
6
[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 9.5 kB 00:00:00
* epel: my.mirrors.theg
........

启动libvird

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-12-26 15:51:16 CST; 4s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 14704 (libvirtd)
Tasks: 18 (limit: 32768)
CGroup: /system.slice/libvirtd.service
└─14704 /usr/sbin/libvirtd
Dec 26 15:51:15 localhost.localdomain systemd[1]: Starting Virtualization daemon...
Dec 26 15:51:16 localhost.localdomain systemd[1]: Started Virtualization daemon.
# 启动后会多出virbr0网卡, 对应的iptables也会跟随着变化,这个virbr0类似一个交换机
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254005a844f yes virbr0-nic

检查kvm模块是否加载

1
2
3
4
5
6
[root@localhost ~]# lsmod |grep kvm
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
# 如果没有加载则执行,还是没有就重启服务器
[root@localhost ~]# modprobe kvm-amd

至此kvm就安装部署完毕了

分享到