1.虚拟化
美国环境保护EPA报告中曾经统计过一组统计数据:EPA研究服务器和数据中心得能源效率时发现,实际上服务器只有5%的时间在工作,其他时间一直处于休眠状态
虚拟化技术:
为了解决服务器工作效率过低的问题而产生的技术
通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可以运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的效率
1.一个操作系统上运行多个操作系统
2.通过软件形式模拟硬件的功能
1.1虚拟化技术的发展
1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询从而将一个CPU伪装成多个CPU
1972年,IBM正式将system370机的分时系统命名为虚拟机
1990年,IBM退出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割)
Xen 2003年问世,是一个外部的hypervisor程序(虚拟机管理程序),能够控制虚拟机给多个客户机分配资源
KVM 2007年问世,现已内置在kernel内核中
Xen支持的虚拟化技术:全虚拟化,半虚拟化
KVM支持的虚拟化技术:全虚拟化
1.2虚拟化类型
- 全虚拟化:
将物理硬件资源全部通过软件的方式抽象化,最后进行调用。使用方法:使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。 - 半虚拟化:
需要修改操作系统 - 直通:
直接使用物理硬件资源(需要支持,还不完善)
1.3虚拟化优劣势
优势
- 集中化管理(远程管理、维护)
- 提高硬件利用率(物力资源利用率低-例如峰值,虚拟化解决了“空闲”容量)
- 动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)
- 高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)
劣势
- 前提高额费用(初期的硬件支持)
- 降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化)
- 更大的错误影响面(本地物理机宕机会导致虚拟机不可用,同时可能虚拟机中文件全部损坏)
- 实施配置复杂、管理复杂(管理人员运维、排障困难)
- 一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序以及供应商结合使用)
- 安全性(虚拟化技术自身的安全隐患)
1.4虚拟化前后对比
虚拟化前:
- 每台主机拥有一个操作系统
- 软硬件紧密结合
- 在同一个主机上运行多个应用程序通常会产生冲突
- 系统资源利用率低
- 硬件成本高昂并且不够灵活
虚拟化后:
- 打破了操作系统和硬件的相互依赖
- 通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体
- 强大的安全和故障隔离
- 虚拟机是独立于硬件的,它们可以在任何硬件上运行
2.KVM
- KVM(Kernel-based Vritual Machine)–基于内核的虚拟机
- KVM是基于虚拟化扩展的X86硬件的开源Linux原生的全虚拟化方案
- KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行
- 虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度
- 虚拟机的每个虚拟CPU被实现为一个常规的Linux进程,这使得KVM能够使用Linux内核的已有功能
- KVM本身不执行任何模拟,需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开启硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间并且由QEMU模拟I/O(ioctl)进行调度资源和维护管理
- Libvirt:KVM的管理工具,除了可以管理KVM这类VMM,还可以管理xen,virtualbox,甚至openstack底层
- Libvirt包含3个组件:后台daemon程序libvirt、API库、命令行工具virsh
2.1 KVM架构及原理
内核层: 底层的内核中集成了kvm模块,用于提取硬件资源并转化成虚拟资源
用户层(虚拟化层): QEMU利用libvirt工具,调用并管理虚拟资源,QEMU充当接口传输,将虚拟资源供给虚拟机,libvirt减轻QEMU工作负担
客户层: 虚拟机,使用被分配的虚拟资源模拟成一个主机
2.2KVM优点
效率:
提高了硬件服务器工作效率,充分利用硬件资源
便捷:
一台宿主机上可以同时运行多个服务,不同操作系统环境隔离,不会出现服务与服务之间冲突的问题
安全:
从硬件层面上隔离了各个虚拟机,当虚拟机请求访问硬件资源时,kvm会拦截请求,并交给QEMU做确认
2.3部署KVM虚拟化
KVM的宿主机硬件资源需足够,且需要开启虚拟化功能
环境优化,设置DNS反向解析
vi /etc/ssh/sshd_config
UseDNS no #取消DNS反向解析让客户端连接服务器更快
安装KVM基本组件
# 安装 GNOME 桌面环境 如果装了图形界面可以不需要装
yum groupinstall -y "GNOME Desktop"
# KVM 模块
yum -y install qemu-kvm
# 安装KVM 调试工具,可不安装
yum -y install qemu-kvm-tools
# 构建虚拟机的命令行工具
yum -y install virt-install
# qemu 组件,创建磁盘、启动虚拟机等
yum -y install qemu-img
# 网络支持工具
yum -y install bridge-utils
# 虚拟机管理工具
yum -y install libvirt
# 图形界面管理虚拟机
yum -y install virt-manager
检测CPU是否支持虚拟化
cat /proc/cpuinfo | grep vmx
查看KVM模块是否已安装成功
lsmod | grep kvm
设置开机启动界面为图形化界面
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
设置网络
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=aac61931-47a6-40e5-9511-68adf20e97c5
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 #设置为网桥模式,关联br0网卡
TYPE=Bridge
BOOTPROTO=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.58.50
NETMASK=255.255.255.0
GATEWAY=192.168.58.2
DNS1=8.8.8.8
创建KVM存储和镜像数据的目录、上传centos7镜像
mkdir -p /data_kvm/iso
mkdir -p /data/_kvm/store
mv CentOS-7-x86_64-DVD-1806.iso /data_kvm/iso/
使用图形化管理工具创建虚拟机
virt-manager
此时点击开始安装,和正常安装linux系统一样安装虚拟机系统即可