文章目录
- 前言
- 一:KVM理论
- 1.1:概述
- 1.2:KVM运行时的三种模式
- 1.3:KVM工作原理
- 二:KVM虚拟化平台实操
- 2.1:安装centos7系统
- 2.2:centos7系统开局优化和KVM环境准备
- 2.3:安装KVM
- 2.4:设置KVM网络为桥接
- 2.5:KVM管理
- 2.5.1:开始创建虚拟机
前言
- KVM 自 Linux 2.6.20 版本后就直接整合到 Linux 内核, 它依托 CPU 虚拟化指令集(如
Intel-VT、 AMD-V) 实现高性能的虚拟化支持。
一:KVM理论
1.1:概述
- 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部
分就是经过简化和修改的 Qemu。
- KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提
供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚
拟化平台。 - 请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软
件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件
模拟出来的, 所以 Qemu 的性能比较低。
1.2:KVM运行时的三种模式
- 客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式
和用户模式。
- 用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在
这个模式之下。 - 内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内
核模块运行在这个模式下
1.3:KVM工作原理
- 用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚
拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运
行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保
存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O
则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,
处理完成后进入内核模式, 再进入客户模式,
二:KVM虚拟化平台实操
拓扑图:
2.1:安装centos7系统
- 在VMware软件中新建虚拟机,并安装centos7系统
- 此处比较简单,不在赘述
2.2:centos7系统开局优化和KVM环境准备
centos7系统安装完成后,需要勾选上KVM虚拟化功能,且网卡选择NAT模式
设置镜像光盘自动挂载
[root@localhost ~]# vim /etc/fstab /dev/sr0 /mnt iso9660 defaults 0 0 '//尾行添加'
优化ssh
[root@localhost ~]# vim /etc/ssh/sshd_config UseDNS no '//取消注释,并将yes改成no'
yum本地仓库搭建
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir bak [root@localhost yum.repos.d]# mv * bak mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 下 [root@localhost yum.repos.d]# ls bak [root@localhost yum.repos.d]# vim abc.repo 输入以下信息 [abc] name=test baseurl=file:///mnt enabled=1 gpgcheck=0 [root@localhost yum.repos.d]# yum clean all '//清空yum仓库' [root@localhost yum.repos.d]# mount /dev/sr0 /mnt '//因为没有重启,所以需要手动挂载一下光盘镜像' [root@localhost yum.repos.d]# yum makecache '//加载yum数据'
防火墙优化
[root@localhost yum.repos.d]# systemctl stop firewalld.service [root@localhost yum.repos.d]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost yum.repos.d]# setenforce 0 [root@localhost yum.repos.d]# vim /etc/selinux/config SELINUX=disabled '//将enforcing修改为disabled'
已完成所有开局优化,重启系统
[root@localhost yum.repos.d]# reboot
2.3:安装KVM
有些是已经安装过的,但是下面的安装还是需要在过一遍
[root@localhost ~]# yum groupinstall -y "GNOME Desktop" '//安装 GNOME 桌面环境 如果装了图形界面不需要装了' [root@localhost ~]# yum -y install qemu-kvm '//安装KVM 模块' [root@localhost ~]# yum -y install qemu-kvm-tools '// KVM 调试工具,可不安装' [root@localhost ~]# yum -y install virt-install '//构建虚拟机的命令行工具' [root@localhost ~]# yum -y install qemu-img '//qemu 组件,创建磁盘、 启动虚拟机等' [root@localhost ~]# yum -y install bridge-utils '//网络支持工具' [root@localhost ~]# yum -y install libvirt '//虚拟机管理工具' [root@localhost ~]#yum -y install virt-manager '//图形界面管理虚拟机' [root@localhost ~]# reboot '//重启'
注意: 在使用 yum 安装完桌面后,需要进行一些优化
执行 ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 命 令 , 将 系 统 的 默 认 运 行 target 更 改 为graphical.targe。 重启后系统将进入图形化界面。
进行一些检查
[root@localhost ~]# cat /proc/cpuinfo | grep vmx '//查看CPU是否支持虚拟化' [root@localhost ~]# lsmod | grep kvm '//查看KVM模块是否安装' kvm_intel 183621 0 kvm 586948 1 kvm_intel irqbypass 13503 1 kvm [root@localhost ~]# systemctl start libvirtd '//开启libvirtd服务' [root@localhost ~]# systemctl enable libvirtd '//开机启动libvirtd服务'
2.4:设置KVM网络为桥接
宿主服务器安装完成 KVM, 首先要设定网络, 在 libvirt 中运行 KVM 网络有两种方法:
NAT 和 Bridge, 默认是 NAT。- 用户模式, 即 NAT 方式, 这种方式是默认网络, 数据包由 NAT 方式通过主机的接口进行
传送, 可以访问外网, 但是无法从外部访问虚拟机网络。 - 桥接模式, 这种模式允许虚拟机像一台独立的主机一样拥有网络, 外部的机器可以直接
访问到虚拟机内部, 但需要网卡支持, 一般有线网卡都支持。
这里以 Bridge(桥接) 为例。
- 用户模式, 即 NAT 方式, 这种方式是默认网络, 数据包由 NAT 方式通过主机的接口进行
修改ens33网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO=none '//原本的修改为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="0739b616-18e4-49b1-9a09-f75cc793899b" DEVICE="ens33" ONBOOT="yes" #IPADDR=192.168.233.136 #NETMASK=255.255.255.0 #GATEWAY=192.168.233.2 #DNS1=8.8.8.8 #DNS2=114.114.114.114 BRIDGE=br0 '//注释掉原本的IP地址,添加此处'
新建桥接网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge OTPROTO=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=192.168.233.136 NETMASK=255.255.255.0 GATEWAY=192.168.233.2 '//添加上述内容即可' [root@localhost ~]# systemctl restart network '//重启网卡'
2.5:KVM管理
创建KVM存储和镜像文件夹,并上传镜像
[root@localhost ~]# mkdir -p /data_kvm/iso '//上传镜像centos 7.6的镜像' [root@localhost ~]# mkdir -p /data_kvm/store '//虚拟机存储' [root@localhost ~]# mount.cifs //192.168.11.1/ccc /abc Password for root@//192.168.11.1/ccc: [root@localhost ~]# cd /abc/Linux/ [root@localhost Linux]# cp CentOS-7-x86_64-DVD-1810.iso /data_kvm/iso/ [root@localhost Linux]# ls /data_kvm/iso/ CentOS-7-x86_64-DVD-1810.iso [root@localhost Linux]# [root@bdqn ~]# virt-manager '//图形界面敲,打开虚拟系统管理器'
创建存储池
双击打开QEMU/KVM–存储–添加(加号)–填写名称–前进–浏览–其他位置–计算机–data_kvm–store–打开–完成,使用相同方法创建镜像存储池,选择的文件夹是/data_kvm/iso
创建存储卷
2.5.1:开始创建虚拟机
打开虚拟系统管理器–右击QEMU/KVM–选择新建
本地安装介质–前进
选择使用ISO映像–浏览选择刚刚创建的镜像的存储池中的镜像–前进
配置内存和CPU–前进
管理–选择刚刚创建的存储池中的存储卷–前进
点击在安装前自定义配置–选择网络(桥接)–完成
点击引导选项–勾选主机引导时启动虚拟机–开始安装–出现提示选择是
实操结束!