KVM虚拟化平台的搭建
文章目录
- KVM虚拟化平台的搭建
- 1.KVM原理简介
- 2.KVM运行时的三种模式
- 3.KVM虚拟化平台的部署
1.KVM原理简介
- 广义的KVM实际上包含两部分,一部分是基于LINUX内核支持的KVM内核模块,另一部分就是经过简化和修改的Qemu。
- KWM内核模块模拟处器和内存以支持虚拟机的运行,Qemu主要处理 I/0以及为用户提供一个用户空间工具来进行虛拟机的管理。两者相互结合,相辅相成,构成了一个完整的虚拟化平台。
- 注意: Qemu本身并不是KVI的一部分,Qemu 是一套完整的虚拟化解决方案,是纯软件实现虚拟化,包括处理器虚拟化、内存虚拟化以及各种虚拟设备的模拟,但因为是纯软件模拟出来的,所以Qemu的性能比较低。
2.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,
处理完成后进入内核模式, 再进入客户模式,
3.KVM虚拟化平台的部署
- 逻辑架构图
- 在VMware Workstation中安装centos7系统注意点
- 处理器数量:2 每个处理器内核数:2 处理器内核总数:4
- 虚拟化Intel VT-X 选项√下(打开虚拟机的虚拟化功能)
- 内存大小为16G 网络NAT模式 声卡和打印机移除(稍作优化) 挂载光盘 硬盘1TB
- 安装GNOME桌面 点开发工具 分区自动分配 安装操作系统
- 自动挂载硬盘
[root@localhost ~]# vim /etc/fstab
/dev/sr0 /mnt iso9660 defaults 0 0 '//尾行添加'
[root@localhost ~]# mount -a
- 优化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 kvm.repo
输入以下信息
[kvm]
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'
- KVM的开局优化完成,优化完成后重启系统
[root@localhost yum.repos.d]# init 6
- 安装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 ~]# ln -sf /lib/systemd/system/graphical.target
/etc/systemd/system/default.target
#将系统的默认运行target更改为graphical.targe。重启后系统将进入图形化界面。
[root@localhost ~]# reboot '//重启'
- 检查KVM的一些细节
[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服务'
- 设置KVM的网络模式为桥接模式
- 宿主服务器安装完成 KVM, 首先要设定网络, 在 libvirt 中运行 KVM 网络有两种方法:NAT 和 Bridge, 默认是 NAT。
- 用户模式,即NAT模式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传输,可以访问外网,但是无法从外部访问虚拟机。
- 桥接模式 这种模式允许虚拟机像一台独立的主机一样拥有网络, 外部的机器可以直接访问到虚拟机内部, 但需要网卡支持, 一般有线网卡都支持。这里以 Bridge(桥接) 为例。
[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 '//重启网卡'
- 创建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
- 创建存储卷
- 创建虚拟机