文章目录
KVM
KVM 概述
- 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部分就是经过简化和修改的 Qemu。
- KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提 供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚 拟化平台。
- 请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件模拟出来的, 所以 Qemu 的性能比较低。
KVM运行时的三种模式
- 客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式 和用户模式
- 用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在这个模式之下
- 内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内核模块运行在这个模式下
KVM工作原理
用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,处理完成后进入内核模式, 再进入客户模式
KVM虚拟化平台实操
拓扑图
一:虚拟机资源
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:单网卡
操作系统:Centos7.4(1708)
二:虚拟机开启虚拟化
1:开启虚拟化需要虚拟机处于关闭状态
2:查看CPU是否支持虚拟化
[root@kvm ~]# cat /proc/cpuinfo | grep vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable 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 ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable 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 ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable 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 ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable 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 ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
三:环境优化
设置DNS反向解析
- #是否反解DNS,设置为NO可以让客户端连接服务器更快
[root@kvm ~]# vi /etc/ssh/sshd_config # 取消 DNS 注释
UseDNS no
四:安装KVM
1:安装KVM基本组件
[root@kvm ~]# yum groupinstall -y "GNOME Desktop" # 安装 GNOME 桌面环境 如果装了图形界面可以不需要装
[root@kvm ~]# yum -y install qemu-kvm # KVM 模块
[root@kvm ~]# yum -y install qemu-kvm-tools # 安装 KVM 调试工具,可不安装
[root@kvm ~]# yum -y install virt-install # 构建虚拟机的命令行工具
[root@kvm ~]# yum -y install qemu-img # qemu 组件,创建磁盘、启动虚拟机等
[root@kvm ~]# yum -y install bridge-utils # 网络支持工具
[root@kvm ~]# yum -y install libvirt # 虚拟机管理工具
[root@kvm ~]# yum -y install virt-manager # 图形界面管理虚拟机
2:查看 KVM 模块是否已安装
[root@kvm ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
3:设置开启启动界面的显示模式
[root@kvm ~]# ln -sf/lib/systemd/system/graphical.target /etc/systemd/system/default.target
五:设置 KVM 网络
KVM网络的两种模式
- ① NAT: 默认设置,数据包由 NAT 方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
- ② 网桥:这种模式允许虚拟机像一*立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)
使用Bridge网桥模式进行部署
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none # 原本的修改为 none
#IPADDR=20.0.0.20
#NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS=20.0.0.2
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=ens32
UUID=55d6fe55-257b-4ef8-abc6-c714e1a01f71
DEVICE=ens32
ONBOOT=yes
BRIDGE=br0 # 将原来的地址注释或者删除,设置为网桥模式,关联 br0 网卡
创建、编辑桥接网卡
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
TPROTO=static
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
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=20.0.0.20
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
[root@kvm ~]# systemctl restart network # 重启网卡
六:KVM部署与管理
1:创建KVM存储和镜像数据的目录、上传centos7镜像
[root@kvm ~]# mkdir -p /data_kvm/iso
[root@kvm ~]# mkdir -p /data_kvm/store
[root@kvm ~]# mount.cifs //20.0.0.1/kvm /mnt
[root@kvm ~]# cd /mnt
[root@kvm mnt]# ll
总用量 4415488
-rwxr-xr-x. 1 root root 4521459712 1月 5 2018 CentOS-7-x86_64-DVD-1708.iso
[root@kvm mnt]# cp CentOS-7-x86_64-DVD-1708.iso /data_kvm/iso/
[root@kvm mnt]# cd
[root@kvm ~]# ls /data_kvm/iso/
CentOS-7-x86_64-DVD-1708.iso
2:使用虚拟系统管理器管理虚拟机
- 创建存储池
双击打开QEMU/KVM–存储–添加(加号)–填写名称–前进–浏览–其他位置–计算机–data_kvm–store–打开–完成,使用相同方法创建镜像存储池,选择的文件夹是/data_kvm/iso
[root@kvm ~]# virt-manager
开始创建虚拟机
- 打开虚拟系统管理器–右击QEMU/KVM–选择新建
- 本地安装介质–前进
- 选择使用ISO映像–浏览选择刚刚创建的镜像的存储池中的镜像–前进
-
配置内存和CPU–前进
-
管理–选择刚刚创建的存储池中的新建存储卷–前进
-
点击在安装前自定义配置–选择网络(桥接)–完成
-
点击引导选项–勾选主机引导时启动虚拟机–开始安装–出现提示选择是
-
接下来与安装CentOS7 步骤相同