KVM虚拟化
虚拟化技术概述
是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每位逻辑计算机可运行不同的操作系统,但是应用程序都可以在互相独立的空间内运行而相互不影响,因而明显增强计算机的工作效率。
虚拟化使用软件的方式重新定义界定IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提升IT资源借助率,使IT资源才能真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
发展
1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这种时间片进行鉴权因而将一个CPU伪装成多个CPU
1972年,IBM即将将system370机的分时系统命名为虚拟机
1990年,IBM推出的system390机支持逻辑分区(将个CPU分为多份,互相独立,也就是逻辑分割(隔离)
Xen2003年问世,是一个外部的hypervisor/VMM程序(虚拟机管理程序),才能控制宿主机和给多个顾客机分配资源
KVM:2007年问世,现已外置在kernel内核中的
类型全虚拟化
将化学硬件资源全部通过软件的形式具象化,最后进行调用
使用的方式:使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间构建一个具象层linux虚拟主机,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。
半虚拟化
须要更改操作系统
直通
直接使用化学硬件资源(须要支持,还不健全)
补充
Xen支持的虚拟化技术:全虚拟化,半虚拟化
KVM:支持的虚拟化技术:全虚拟化
特点优势
集中化管理(远程管理、维护)
增强硬件借助率(化学资源借助率低-比如峰值,虚拟化解决了“空闲”容量)
动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)
高可靠(可布署额外的功能和方案,可提升透明负载均衡、迁移、恢复复制等应用环境)
劣势
前期高额费用(早期的硬件支持)
增加硬件借助率(特定场景-比如极其吃资源的应用不一定适宜虚拟化)
更大的错误影响面(本地数学机down机会造成虚拟机均不可用,同时可能虚拟机中文件全部毁坏)
施行配置复杂、管理复杂(管理人员运维、排障困难)
一定的限制性(虚拟化技术涉及各类限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)
安全性(虚拟化技术自身的安全隐患)
对比虚拟化前
每台主机拥有一个操作系统
软硬件紧密结合
在同一个主机上运行多个应用程序一般会形成冲突
系统资源借助率低(比如:5%)
硬件成本昂贵而且不够灵活(化学资源有限)
虚拟化后
打破了操作系统和硬件的相互依赖
通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体
强悍的安全和故障隔离
虚拟机时独立于硬件的,它们可以在任何硬件上运行
操作系统方面(虚拟化前)
LAMP构架中(以一台主机实现)
LINUX+Apache+MySQL+PHP
其中Apache与MySQL资源是共享的
假如构架要求服务间的安全性隔离比较高的话,Apache的页面和MySQL数据库的目录一定是不能互相撞面,倘若Apache漏洞曝露下来,功击者就可以通过Apache的进程访问到MySQL的数据目录,因而获取MySQL中的数据,这些就是严重的安全隐患而想解决这些潜在危险,可以通过实现内核级别的隔离(使用虚拟化技术)
软硬件结合
由于硬件和操作系统不兼容或则不支持,致使有些软、硬件功能难以正常使用(也是最难的问题)
使用虚拟化,软硬件之间是会通过虚拟化层驱动进行隔离(调配)的,只要虚拟化层可以辨识软/硬件应用嵌入式linux 培训,就可以将软硬件结合使用
在同一个主机上运行多个应用程序一般会形成冲突
Apache和Nginx(80端口)
只能使用反向代理的方法进行分离,而同时若果在同一台机器使用这些方法,Apache和Nginx中重要的数据文件若果同时被泄漏出去…而虚拟化可以隔离服务
KVM简介
KVM(Kernel-basedVritualMachine)–基于内核的虚拟机
KVM是基于虚拟化扩充的X86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V)
KVM内嵌于内核模块中,模拟处理器和显存以支持虚拟机运行
虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度;
虚拟机的每位虚拟CPU被实现为一个常规的Linux进程。这促使KMV才能使用Linux内核的已有功能
虚拟机的每位虚拟CPU被实现为一个常规的Linux进程。这促使KMV才能使用Linux内核的已有功能
Libvirt:KVM的管理工具,不仅可以管理KVM这类VMM,还可以管理Xen,VirtualBox,甚至OpenStack底层
Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh
构架
KVM虚拟化构架的三种模式:
顾客模式:执行非I/O的顾客代码,虚拟机运行在这个模式
用户模式:代表用户执行I/O指令,QEMU运行在这个模式
内核模式:实现顾客模式的切换,处理由于I/O或则其他指令造成的从顾客模式推出,KVM模块工作在这个模式
工作原理
用户模式的Qemu借助插口libkvm通过ioctl系统调用步入内核模式。KVMDriver为虚
拟机创建虚拟CPU和虚拟显存,之后执行VMLAU·NCH指令步入顾客模式,装载GuestOS并运
行。GuestOS运行过程中假如发生中断或则影子缺页等异常,将暂停GuestOS的运行并保
存当前上下文退出到内核模式来处理这种异常。内核模式处理这种异常时若果不须要I/O
则处理完成后重新步入顾客模式。假如须要I/O则步入到用户模式,由Qemu来处理I/O,
处理完成后步入内核模式linux 网卡虚拟化命令,再步入顾客模式
布署
安装centos7系统
在VMware软件中新建虚拟机,并安装centos7系统
centos7系统开局优化和KVM环境打算
勾选上KVM虚拟化功能,且网卡选择NAT模式
优化
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX=disabled #修改为disabled
vi /etc/fstab #挂载光盘
/dev/sr0 /mnt iso9660 defaults 0 0
mount -a
vi /etc/ssh/sshd_config #优化ssh
UseDNS no #取消注释,并将yes改成no
cd /etc/yum.repos.d/ #配置yum源
mkdir bak
mv C* bak
vim local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
yum clean all
yum makecach
reboot #重启
安装KVM
yum groupinstall -y "GNOME Desktop" #安装GNOME桌面环境,装了不需要装了
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 #图形界面管理虚拟机
reboot
在使用yum安装完桌面后,须要进行一些优化
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target #将系统的默认运行target更改为graphical.targe。重启后系统将进入图形化界面。其实安装centos7时我们已经选择了图形化界面。
检测
cat /proc/cpuinfo | grep vmx #查看CPU是否支持虚拟化
lsmod | grep kvm #查看KVM模块是否安装
systemctl start libvirtd #开启libvirtd服务
systemctl enable libvirtd #开机启动libvirtd服务
设置KVM网路为桥接
主服务器安装完成KVM,首先要设定网路,在libvirt中运行KVM网路有两种方式:
NAT和Bridge,默认是NAT。
用户模式,即NAT方法,这些方法是默认网路,数据包由NAT方法通过主机的插口进行
传送,可以访问内网,而且难以从外部访问虚拟机网路。
桥接模式linux 网卡虚拟化命令,这些模式容许虚拟机像一反华立的主机一样拥有网路,外部的机器可以直接
访问到虚拟机内部,但须要网卡支持,通常有线网卡都支持。
这儿以Bridge(桥接)为例
更改ens33网卡
vi /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=20.0.0.60 #注释掉原本的IP地址
#NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS1=8.8.8.8
#DNS2=114.114.114.114
BRIDGE=br0 #添加
新建桥接网卡
[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=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
systemctl restart network
KVM管理
创建KVM储存和镜像文件夹
mkdir -p /data_kvm/iso
mkdir -p /data_kvm/store #虚拟机存储
cd /data_kvm/iso/ #上传镜像文件
virt-manager #图形界面敲,打开虚拟系统管理器
创建储存池
打开QEMU/KVM–存储–添加(减号)–填写名称–前进–浏览–其他位置–计算机–data_kvm–store–打开–完成,使用相同方式创建镜像储存池,选择的文件夹是/data_kvm/iso
使用相同方式创建储存池,选择/data_kvm/iso文件夹
创建储存卷
开始创建虚拟机
本地安装介质
选择使用ISO映像–浏览选择刚才创建的镜像的储存池中的镜像
配置显存和CPU
管理–选择刚才创建的储存池中的储存卷
点击在安装前自定义配置–选择网路(桥接)–完成
点击引导选项–勾选主机引导时启动虚拟机–开始安装
安装步骤与centos7安装相同。