Kvm 虚拟化介绍(1)

一、虚拟化分类
       1、虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率。

2、虚拟化层次种类:
           (1) 完全虚拟化 --- 最流行的虚拟化方法使用名为 hypervisor(含鹏儿v) 的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。 VMware 和微软的VirtualPC 是代表该方法的两个商用产品,而基于核心的虚拟机 (KVM) 是面向 Linux 系统的开源产品hypervisor 可以捕获 CPU 指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是, hypervisor 给处理器带来开销
          (2)准虚拟化 --- 完全虚拟化是处理器密集型技术,因为它要求 hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户端操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor 协同工作。这种方法就叫准虚拟化 (para-virtualization)Xen 是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在 Xen hypervisor 上运行之前,它必须在核心层面进行某些改变。因此, Xen 适用于 BSD 、 Linux 、 Solaris 及其他开源操作系统,但不适合对像Windows 这些专有的操作系统进行虚拟化处理,因为它们无法改动。准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与hypervisor 协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。准虚拟化与完全虚拟化相比优点明显,以至于微软和 VMware 都在开发这项技术,以完善各自的产品。
          (3)系统虚拟化 --- 就操作系统层的虚拟化而言,没有独立的hypervisor 层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统 ( 不过每个实例有各自的应用程序和用户。
账户 ) 。虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。
          (4)桌面虚拟化 --- 服务器虚拟化主要针对服务器而言,而虚拟化最接近用户的还是要算的上桌面虚拟化了,桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新。终端数据可以集中存储在中心机房里,安全性相对传统桌面应用要高很多。桌面虚拟化可以使得一个人拥有多个桌面环境,也可以把一个桌面环境供多人使用。

3、虚拟化架构分类
         (1)1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。

(2)2型虚拟化
            

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。
 斯托曼的gun运动把软件开源化

2 、KVM ---  全称是基于内核的虚拟机(Kernel-based Virtual Machine)(vm guest ———— 虚拟机)
Host ————宿主机
   是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得 Linux 变成了一个Hypervisor,虚拟机使用 Linux 自身的调度器进行管理。
   KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。
 
3、Linux 上的用户空间、内核空间、虚机:
   

Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。
  KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O (硬盘,网卡,主机)被 KVM 拦截后,交给 QEMU 处理。
 QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过IOCTL /dev/kvm 设备和 KVM 交互。
            
 4、KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。IO 的虚拟化,就交给 Linux 内核和qemu来实现。
       Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。OpenStack 底层也使用 Libvirt。
       Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
             (1)libvirtd是服务程序,接收和处理 API 请求;
             (2)API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;
             (3)virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的。

三、虚拟化VT开启确认

你当前的 CPU 是否支持 VT 技术?当不确定你当前 CPU 是否支持 VT 技术时
1. 可以在 windows 下使用 cpu-z 软件来进行测试
2. 可以在 Linux 下查看 CPU 的相信信息来确定

虚拟化技术与多任务超线程的技术的区别?
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的 CPU 或者是虚拟主机上;而超线程技术只是单 CPU 模拟双 CPU 来平衡程序运行性能,这两个模拟出来的 CPU 是不能分离的,只能协同工作

nmtui图形化配置ip
[[email protected] ~]# systemctl status NetworkManager
NetworkManager运行的nmtui

安装kvm前准备工作
1. 确定处理器有 VT
[[email protected] ~]# egrep ‘(vmx|svm)‘ /proc/cpuinfo 
命令行: grep vmx /proc/cpuinfo (INTEL 芯片 )
             grep svm /proc/cpuinfo (AMD 芯片 )
             cat /proc/cpuinfo | grep -e vmx -e nx -e svm

开启vmx|svm

Cpu:egrep ‘(vmx|svm)‘ /proc/cpuinfo 
内存:free -h
磁盘:lsblk
不知道芯片的生产厂商则输入:egrep ‘(vmx|svm)‘ /proc/cpuinfo
如果 flags: 里有 vmx 或者 svm 就说明支持 VT ;如果没有任何的输出,说明你的 cpu 不支持,将无法成功安装 KVM 虚拟机。

2. 当你硬件本身支持虚拟化,但查询相应参数无果时,请检查 BIOS 设定,确认你的 BIOS 中开启了硬件支持虚拟化的功能!

将如下选项设为Enabled
Intel(R) Virtualization Tech [Enabled]

四、KVM虚拟化安装
1. 安装 KVM 要求(本地源)
(1)64bitCPU( 支持虚拟化 VT-x or AMD-V)
(2)2G 以上空闲内存,确认内存大小
        grep -e MemTotal /proc/meminfo
        free -m
(3)6GB 空闲存储空间
[[email protected] yum.repos.d]# cat bendi.repo 
[bendi]
name = my repo
enabled = 1
gpgcheck = 0
baseurl = file:///mnt
[[email protected] yum.repos.d]# 
检测
[[email protected] yum.repos.d]# yum makecache

2. 安装 KVM 并检测
(1)YUM 安装 KVM
yum install kvm virt-manager libvirt libvirt-python python-virtinst libvirt-client qemu-kvm qemu-img
没有可用软件包 kvm。
软件包 virt-manager-1.4.0-2.el7.noarch 已安装并且是最新版本
软件包 libvirt-2.0.0-10.el7.x86_64 已安装并且是最新版本
软件包 libvirt-python-2.0.0-2.el7.x86_64 已安装并且是最新版本
没有可用软件包 python-virtinst。
软件包 libvirt-client-2.0.0-10.el7.x86_64 已安装并且是最新版本
软件包 10:qemu-kvm-1.5.3-126.el7.x86_64 已安装并且是最新版本
软件包 10:qemu-img-1.5.3-126.el7.x86_64 已安装并且是最新版本
无须任何处理

第二步:启动
[[email protected] yum.repos.d]# systemctl start libvirtd
查看状态
【[email protected] yum.repos.d]# systemctl status libvirtd

开机自启
[[email protected] yum.repos.d]# systemctl enable libvirtd

(2)YUM 安装 KVM( 简单版 )
yum install kvm virt-manager libvirt*

第三步:检查
[[email protected] yum.repos.d]# virsh list --all
Id 名称 状态
----------------------------------------------------
第四步:查看
[[email protected] yum.repos.d]# yum grouplist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
已安装环境分组:
带 GUI 的服务器
可用的环境分组:
最小安装
基础设施服务器
计算节点
文件及打印服务器
基本网页服务器
虚拟化主机
GNOME 桌面
KDE Plasma Workspaces
开发及生成工作站
可用组:
传统 UNIX 兼容性
兼容性程序库
图形管理工具
安全性工具
开发工具
控制台互联网工具
智能卡支持
科学记数法支持
系统管理
系统管理工具
第五步:下载带 GUI 的服务器
[[email protected] yum.repos.d]# yum groupinstall "带 GUI 的服务器" -y

第六步:切换桌面化
[[email protected] yum.repos.d]# startx
1,2,c,c

(4)kvm虚拟化所需组件
介绍

kvm: 核心套件
virt-manager: 图形化 KVM 管理软件
libvirt: 提供虚拟机与宿主相互通信的机制
libvirt-python: 允许使用 libvirt API
python-virtinst:CLI 下创建 KVM 的工具
libvirt-client: 提供 client 访问 kvm 服务器的机制 ,并包含 virsh 命令进行                  
                    管理和控制 VMs
qemu-kvm: 提供用户级 KVM 环境
qemu-img:VMs 磁盘管理

3.启动 KVM
(1)modprobe kvm    加载 kvm 模块
(2)lsmod | grep kvm  查看加载成功
(3)systemctl start libvirtd
(4)systemctl status libvirtd

4. 启动并检测 KVM
virsh list --all
如出现
Id Name State
-------------------------------------------------------
则安装成功

5. 在 GUI 模式下安装虚拟机,启动虚拟系统管理器

五、KVM网络模式设置
1. NAT ( 默认上网 ) :虚拟机利用 host 机器的 ip 进行上网 . 对外显示一个 ip,
virbr0 是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能,默认ip为192.168.122.1

brctl show
2. 自带的Bridge : 将虚拟机桥接到 host 机器的网卡上 ,vm和 host 机器都通过 bridge 上网 . 对外有同网段的不通 ip,此种方式host却不能和vm联通

3. Linux Bridge : 基本原理就是创建一个桥接接口 br0 ,在物理网卡和虚拟网络接口之间传递数据。此种方式host却可以和vm联通

Linux Bridge 是 Linux 上用来做 TCP/IP 二层协议交换的设备,其功能大家可以简单的理解为是一个二层交换机或者 Hub。多个网络设备可以连接到同一个 Linux Bridge,当某个设备收到数据包时,Linux Bridge 会将数据转发给其他设备

(1)添加 br0 网卡的配置文件
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-br0

(2)修改网卡配置文件
Vim ifcfg-eth0
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
Vim ifcfg-br0

TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.254.20
PREFIX=24(NETMASK=255.255.255.0)
GATEWAY=192.168.254.1
DNS=192.168.254.251

(3)重启host:reboot

(4)检查
# ethtool br0
# brctl show
# ifconfig br0

第一步:vim ifcfg-ens33 
TYPE="Ethernet"
DEVICE="ens33"
ONBOOT=yes
NAME=ens33
BRIDGE=br0

第二步:
[[email protected] network-scripts]# cat ifcfg-br0 
第三步:重启
[[email protected] network-scripts]# systemctl restart network
NAME=br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.126.6
NETMASK=255.255.255.0
GATEWAY=192.168.126.2
DNS=172.16.254.110
DNS2=114.114.114.114
TYPE=Bridge

第四步:查看
[[email protected] network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:0c:29:5c:6c:9e brd ff:ff:ff:ff:ff:ff
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 52:54:00:05:d2:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:05:d2:91 brd ff:ff:ff:ff:ff:ff
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 1000
link/ether fe:54:00:26:f7:95 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe26:f795/64 scope link 
valid_lft forever preferred_lft forever
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:5c:6c:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.126.6/24 brd 192.168.126.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::3023:fdff:feee:f0aa/64 scope link 
valid_lft forever preferred_lft forever
[[email protected] network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c295c6c9e no ens33
virbr0 8000.52540005d291 yes virbr0-nic
vnet0

原文地址:https://www.cnblogs.com/it-peng/p/11388148.html

时间: 2024-10-07 05:30:09

Kvm 虚拟化介绍(1)的相关文章

KVM虚拟化介绍

cpu虚拟: 宿主机:按时间切割 虚拟机:用软件虚拟cpu,主要模拟环0(接口,运行在真正cpu上程序)硬件技术:缓存通过tagged tlb区分虚拟机和宿主机 虚拟化:cpu模拟环0,保持环3 (模拟环0并不高效) 完全虚拟化: 宿主机运行于环-1 虚拟机运行于环0 半(准)虚拟化 (para-virt):cpu不用环-1 环0部分虚拟化(区分宿主机跟虚拟机) 环3全部能用硬件虚拟化cpu 支持(AMD-V/inter-VT):通过环 -1 实现,宿主机的内核运行在环-1,虚拟机的内核运行在环

KVM虚拟化之安装KVM虚拟机(一)

KVM虚拟化 1.KVM虚拟化介绍与应用场景 什么是KVM虚拟化? KVM,内核级虚拟化技术 Kernel-based Virtual Machine .KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术).是基于硬件的完全虚拟化.虚拟化就是通过模拟计算机硬件(cpu,内存,硬盘,网卡)来实现在一台物理服务器上运行同时多个不同的操作系统,使每个操作系统之间都是互相隔离的,并且应用程序都可以在相互独立的空间内运行而互不影响,可以实现资源的动态分配.灵活调度.跨域共享,提高资源利用

CentOS 7部署KVM虚拟化环境之一架构介绍

----本文修改整理自网络,非本人原创. 虚拟化介绍 虚拟化(Virtualization)是一种资源管理技术,将计算机的各种试题资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来.打破实体结构间的不可切割的障碍,使的用户可以比原本的组态更好的方式来应用这些资源.这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制.一般所指的虚拟化资源包括计算能力和资料存储. 虚拟化技术中大多数人接触的最早且最多的应该就是虚拟机(Virtual Machine),它是通过软件模拟的具有完

KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍

接上篇博文继续 一.使用virt-manager创建和管理虚拟机 1.使用VNC Viewer连接进入虚拟化平台主机 2.打开终端输入virt-manager命令启动virt-manager虚拟机管理界面 #virt-manager 3.通过virt-manager安装CentOS 6.6的虚拟机 点击如图所示图标新建虚拟机: 选择PXE引导,我的网络内存在一个系统自动化部署服务器: 选择操作系统类型和版本: 设置内存和CPU个数: 设置硬盘大小,这里采用动态扩展磁盘空间方式: 忽略这个错误,由

[转] KVM虚拟化技术生态环境介绍

KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/qemu-kvm的关系 qemu vs. qemu-kvm: 从qemu 1.3开始,kvm userspace code就维护在qemu mainline中(git clone https://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git, ref) qe

云计算 kvm 虚拟化 简单介绍

云计算是什么 一种网络资源的使用模式具有弹性计算,按需付费,快速扩展的特点 云计算的分类 私有云 在自建机房,内部使用.(安全.机密) 公有云 使用云提供商提供的服务.(方便.快捷.免维护) 混合云 上述两者都用 云的解决方案 IAAS(基础设施即服务) 网络.存储.虚拟化资源都不需要关心,只负责操作系统以上的东西 使用案例 openstack PAAS(平台即服务) 网络.存储.虚拟化.系统.中间件云厂商提供,用户只是维护自己的代码程序以及数据 使用案例 docker SAAS(软件即服务)

kvm虚拟化技术应用实战

本文根据上课笔记整理,大家都知道云计算的基础就是虚拟化,而开源的虚拟化基本以kvm技术为主导,因此kvm技术已成为运维工程师必备的技术,也是云时代必不可少的技术 在介绍kvm之前 我们先来了解一下vnc这个软件,后面安装kvm需要vnc来支持 1.vnc的安装及使用 # yum -y install tigervnc-server 首次启动 # vncserver :1 会提示输入两次密码 然后编辑/root/.vnc/xstartup,将最后一行twm替换为gnome-session或者sta

KVM虚拟化技术

KVM虚拟化技术 Qemu-kvm kvm Qemu-kvm创建和管理虚拟机 1.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S

2、kvm虚拟化管理平台WebVirtMgr部署

场景:当KVM宿主机越来越多,需要对宿主机的状态进行调控.这里我采用WebVirtMgr作为kvm虚拟化的web管理工具,图形化的WEB,让人能更方便的查看kvm 宿主机的情况和操作 介绍:官网 https://www.webvirtmgr.net/ : WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个KVM管理平台,提供对宿主机和虚机的统一管理,它有别于kvm自带的图形管理工具(virtual machine manager),让kvm管理变得更为可视化 WebVirtMgr特