1.理论部分

1.1 虚拟化概述

在一个操作系统中(win10) 模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(nginx+tomcat) ,从而实现一台宿主机搭建一个集群(从整体)
通过软件/应用程序的方式,来实现物理硬件的功能
比如ensp软件的形式模拟出硬件设备(二、三层交换机、三层路由器、PC机、防火墙等等)

1.1.1 虚拟化类型

全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
使用的方法:使用hypervisor (VMM) 软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。

半虚拟化:需要修改操作系统

直通:直接使用物理硬件资源(需要支持,还不完善)

Xen支持的虚拟化技术:全虚拟化,半虚拟化
KVM:支持的虚拟化技术:全虚拟化
VMM功能:
对物理资源进行逻辑分割(转化为虚拟资源)
调用虚拟资源供与应用程序(虚拟机)

1.2 KVM 概述

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor
广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部分就是经过简化和修改的 Qemu。

KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚拟化平台。

请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件模拟出来的, 所以 Qemu 的性能比较低。

1.2.1 KVM的模式

客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式
和用户模式。

用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在
这个模式之下。

内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内
核模块运行在这个模式下


KVM的核心组件:

在内核层:将物理资源逻辑分割为虚拟化资源
在抽象层:Qemn组件,会和内核层的KVM进行对接,调用所需的资源

1.2.2 KVM工作原理

用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚
拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运
行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保
存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O
则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,
处理完成后进入内核模式, 再进入客户模式

1.2.3 KVM 的补充

KVM (Kernel-based Vritual Machine) --基于内核的虚拟机
KVM是基于虚拟化扩展的X8 6硬件的开源Linux原生的全虚拟化方案( 要求cpu支持Intel-VT-x或AMD-V)
KVM(组件)内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行
虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度
虚拟机的每个虚拟CPU被实现为一个常规的Linux 进程。这使得KMV能够使用Linux 内核的已有功能,但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)
接口设置一个客户机虚拟服务器的地址空间,并且由Qemu模拟I/O (ioctl) 进行调度资源和维护管理
Libvirt: KVM的管理工具,除了可以管理KVM这类VMM,还可以管理Xen,VirtualBox, 甚至openStack底层
Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh

2. 搭建KVM

2.1 搭建环境

一台虚拟机即可:192.168.152.130
这里的NAT 也可以改成VM8 模式,都是一样的,可以ping 通百度就可以了

2.2 搭建步骤

====修改主机名====
hostnamectl set-hostname kvm

====配置dns====
vim /etc/resolv.conf
nameserver 114.114.114.114

====挂载光盘====
vim /etc/fstab
在文件末尾添加
/dev/sr0 /mnt iso9660 defaults 0 0

mount -a //立即生效
df -hT //查看是否挂载

====配置本地yum====
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak
vim local.repo
[local]
name=kvm
baseurl=file:///mnt
enabled=1
gpgcheck=0

yum clean all
yum makecache
yum repolist

====设置DNS反向解析====
vim /etc/ssh/sshd_config
定位到#UseDNS yes 取消注释改为no
UseDNS no

==========安装VKM==========
1、安装kvm基本组件
安装 GNOME 桌面环境,如果装了图形界面可以不用安装
yum -y groupinstall "GNOME Desktop"

yum -y install qemu-kvm                    //kvm模块
yum -y install qemu-kvm-tools              //kvm调试工具,可不安装
yum -y install virt-install                //构建虚拟机的命令行工具
yum -y install qemu-img                    //qemu组件,创建磁盘、启动虚拟机等
yum -y install bridge-utils                //网络支持工具
yum -y install libvirt                     //虚拟机管理工具
yum -y install virt-manager                //图形界面管理虚拟机

yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager

====检测cpu是否支持虚拟化====
[root@kvm opt]# cat /proc/cpuinfo | grep vmx //可能看不到,没有关系

====检查KVM模块是否已安装====
[root@kvm opt]# lsmod | grep kvm //我的cpu是amd的,所以显示的是kvm_amd
kvm_amd              2177212  0 
kvm                   586948  1 kvm_amd
irqbypass              13503  1 kvm

====设置开启启动界面的显示模式====
ln -sf /lib/systemc/systemc/graphical.target /etc/systemd/system/default.target

=============设置KVM网络(桥接模式)=============
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
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.152.130 //注释掉
#NETMASK=255.255.255.0  //注释掉::
#GATEWAY=192.168.152.2  //注释掉
BRIDGE=br0  //设置为桥接模式

创建、编辑桥接网卡
vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6PEERDNS=yes
IPV6PEERROUTES=yes
IPV6_ADDR_GEN_MODE=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.152.130
NETMASK=255.255.255.0
GATEWAY=192.168.152.2

========创建kvm存储和镜像数据的目录,上传centos7镜像========
mkdir -p /data_kvm/iso
cd /data_kvm/iso   #上传镜像文件
mkdir -p /data_kvm/store

systemctl restart network //重启网卡

VMware workstation 上进入虚拟机 192.168.177.116
使用virt-manager 命令 打开图形化界面

这里注意一下:普通上传rz 会导致上传的镜像不完整,后续会报错
所以这里使用xshell的工具进行传输


2.3 图形化界面步骤

2.3.1 第一步:创建存储


2.3.2 创建存储

2.3.3 创建虚拟机


接下来是傻瓜操作,选择一下自己创建的目录,里面存放着镜像文件
选择卷 也是自己创建的目录,生成的20G 的空间即可

2.3.4 验证安装成功

直到安装完成即可:

3. 小结

1.虚拟化类型:
全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
半虚拟化:需要修改操作系统(以软件形式模拟物理硬件功能+物理硬件资源的加强型支持)
直通:直接使用物理硬件资源(需要支持,还不完善)

2、KVM虚拟化架构三种模式:
客户模式(guestOs)
用户模式
linux内核模式

3、配置kvm 的时候
导入进去的安装包过大的时候,使用xshell自带的传输文件的工具进行传输,不然的话导进去的镜像文件 不完整,会报错
图形化安装的时候,指定需要使用的卷:
注意对应的目录对应的内容。存放镜像 ,设置磁盘大小
配置好桥接网卡,重启网络配置
最后在启动开始安装时,点击引导选项,勾选启动时开启虚拟机

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐