初识KVM之1——虚拟化介绍及创建KVM虚拟机

一、基础知识

  1. CPU的工作机制
    随着云计算的兴起,虚拟化作为云计算的组成部分也火了一把,但虚拟化并不是什么新技术,早在上世纪70年代虚拟化技术就已经出现。传统的CPU由4个环组成,分为:环0--环3,环0只与内核通信,执行特权指令,而环3工作在用户空间,环1、环2预留,每当用户空间发起特权请求时,会立即激活内核空间,此时用户与内核空间的切换称为软中断,用户空间的所有特权指令都必须通过系统调用的方式来完成
  2. 全虚拟化、半虚拟化和CPU辅助虚拟化
    虚拟化按照实现方式分为:全虚拟化、半虚拟化和CPU辅助的虚拟化,其特点如下:
    2.1 全虚拟化
    物理机的系统(以下简称OS)运行在环0,虚拟机系统(以下简称GuestOS)运行在环1,但它以为自己运行在环0,每当GuestOS要执行特权指令时由于内核拒绝与环0之外的CPU环交互,所以位于环0的OS需要捕获并翻译GuestOS的特权指令提交给内核,全虚拟化的代表产品为vmware workstation
    2.2 半虚拟化
    与全虚拟化GuestOS以为自己运行在环0不同,半虚拟化的GuestOS明确知道自己运行在环1,所以当它要运行特权指令时会将特权指令直接交由OS来进行处理,省掉了OS捕获的过程,但由于需要让GuestOS知道自己运行在环1,就需要修改内核,Windows系统由于是不开源的所以不支持半虚拟化,代表产品为KVM、Zen
    2.3 CPU辅助虚拟化
    Intel和AMD在硬件层面对CPU进行了对虚拟化的支持,相当于OS运行在环-1,GuestOS运行在环0,通过VMM(virtual machine manager)来对虚拟机进行管理,代表产品为vmware esxi

二、KVM、Zen及Docker的实现原理

  1. Docker介绍
    通过上文知道每一个虚拟机都有一个独立的GuestOS,这种方式的优点是保证了系统的隔离性,但每个虚拟机都需要有GuestOS,不仅产生了不必要的性能消耗,又因为所有GuestOS的特权指令都需要经过GuestOS用户空间-->GuestOS内核空间-->OS内核空间的2道转换,降低了效率,Docker就是给予上述基础产生的。
    Docker的实现是将用户空间隔离成一个个的容器,所有容器公用底层的内核空间而不再创建GuestOS,所以这种方式的响应速度不但快还降低了性能开销,缺点就是由于共用内核空间,如果一个容器内的程序损坏了内核则该宿主机上的其他Docker也会受牵连
  2. Zen介绍
    Zen是KVM出现前普遍被采用的一种虚拟化技术,但是由于其实现方式一直不被Linux的作者李纳斯接受,其实现方式实在原有的Linux系统上安装Zen后重启操作系统,安装的Zen相当于另一个内核,重启时以Zen的内核启动,原有的Linux内核成为了一个特权域(dm0),Zen上的每一个虚拟机称为一个domain,所有虚拟机的特权请求需要通过dm0来完成,Linux沦为小弟的实现方式李纳斯本人必然不会接受
  3. KVM介绍
    KVM也有domain的概念,不同于Zen喧兵夺主的方式,采用一种柔和的方式实现,它在Linux系统之上安装qemu后,原有的Linux系统就变成了可以实现虚拟化的系统,dm0则是原来root的用户空间,所有特权指令还是通过dm0来实现

    这种实现方式由于李纳斯本人的推广而兴起,但是qemu本身只能够实现CPU和内存的虚拟化,I/O的虚拟化则由libvirtd来实现,所以KVM本身只是虚拟化的加速器而非虚拟化本身

    三、实验说明

    本次实验系统版本为CentOS7.3,使用桥接的方式创建一台KVM虚拟机,关于桥接模式此处做一些说明:所谓桥接模式就是创建一个设备模拟原先物理网卡的IP地址,而原先物理机的网卡此时当成一个交换机,将其工作于混杂模式(接受所有Mac地址),将交换机与模拟出的网卡相关联

四、操作步骤

  1. 安装图形界面和字体
    [[email protected] ~]# yum install dejavu-sans-fonts.noarch
    [[email protected] ~]# yum groupinstall "X Window System"
  2. 确认CPU是否支持虚拟化
    [[email protected] ~]# grep vmx /proc/cpuinfo
  3. 安装并启动服务
    [[email protected] ~]# yum install libvirt virt-manager virt-viewer qemu-kvm
    [[email protected] ~]# systemctl start libvirtd.service
  4. 创建桥接模式(要先关闭NetworkManager)
    [[email protected] ~]# systemctl stop NetworkManager
    [[email protected] ~]# systemctl disable NetworkManager
    [[email protected] ~]# virsh iface-bridge ens32 br0 --no-stp

    [[email protected] network-scripts]# cat ifcfg-br0
    DEVICE="br0"
    ONBOOT="yes"
    TYPE="Bridge"
    BOOTPROTO="none"
    IPADDR="172.16.10.10"
    NETMASK="255.255.255.0"
    GATEWAY="172.16.10.1"
    STP="off"

    [[email protected] network-scripts]# cat ifcfg-ens32

    DEVICE=ens32
    ONBOOT=yes
    BRIDGE="br0"
  5. 启动图形界面创建虚拟机
    [[email protected] ~]# virt-manager
    如果虚拟机鼠标键盘无法使用需要将Display改为VNC并添加一个Input设备,至此,操作完成

原文地址:http://blog.51cto.com/arkling/2127934

时间: 2024-11-08 14:46:26

初识KVM之1——虚拟化介绍及创建KVM虚拟机的相关文章

VMware开启虚拟化实现CentOS创建KVM

参考: http://blog.csdn.net/liulove_micky/article/details/48343013 原文地址:https://www.cnblogs.com/EasonJim/p/8124481.html

Kvm 虚拟化介绍(1)

一.虚拟化分类       1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率. 2.虚拟化层次种类:           (1) 完全虚拟化 --- 最流行的虚拟化方法使用名为 hypervisor(含鹏儿v) 的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层. VMware 和微软的VirtualPC 是代表该方法的两个

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 虚拟化概述及 virt-manager 安装虚拟机

一.KVM定义 基于内核的虚拟机(英语:Kernel-based Virtual Machine,简称KVM),是一种用于Linux内核中的虚拟化基础设施. KVM眼下支持Intel VT及AMD-V的原生虚拟技术. 1)是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方式. 2)它包括一个为处理器提供底层虚拟化 可载入的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko). 3)KVM还须要一个经过改动的QEMU软件(qemu-

CentOS 5.6下创建KVM虚拟机

首先要保证你的CPU支持虚拟化.执行以下命令查看CPU的flag信息,里面包含svm的flag就说明支持虚拟化: [[email protected] ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxe

1 虚拟化介绍

虚拟化的模型 为什么要使用虚拟化? 1)使硬件资源利用率最大化 2)云计算领域 虚拟化分类 1)软件级别,所有硬件通过模拟器模拟出来,如qemu 2)硬件级别,通过VMM(Virtual Machine Monitor,虚拟机监视器)管理和分配硬件资源,操作系统运行在vm上,如xen,vmware,kvm,virtualbox 3)操作系统级别,虚拟机操作系统和宿主机操作系统共享,可以模拟上千台虚拟机,如openvz 半虚拟化(para-virtualization) 在半虚拟化中,宿主机和客户

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

虚拟化介绍

虚拟化介绍 虚拟化分类: 硬件级别: 通过VMM分配和管理硬件,操作系统运行在.如VM上,vmware.virtualbox.xen.kvm 软件级别: 通过模拟器模拟硬件.如qemu 操作系统级别: 虚拟机操作系统和宿主操作系统共享,可以模拟上千个虚拟机.如openvz 半虚拟化和全虚拟化: 半虚拟化 宿主机和客户机都要更改操作系统内核,客户机知道宿主机的存在,两者需要相互合作.(xen支持半虚拟化) 全虚拟化 宿主机和客户机提供了完整的虚拟资源,客户机不知道宿主机的存在,也不需要做任何的更改

centos6安装创建kvm虚拟机

注:此方法为纯命令行安装kvm和虚拟机,没有任何图形化. (1)cpu支持虚拟化 (2)64位 (3)内存2G以上 CRT远程宿主机,先连接好宿主机网络 (1)安装软件   yum install -y kvm virt-*  libvirt  bridge-utils qemu-img /etc/init.d  libvirtd start (2)设置桥接网络 [[email protected] network-scripts]# vim ifcfg-eth0DEVICE=eth0NM_CO