KVM详解

2023-05-16

一、KVM的简介

1.KVM简介

KVM,基于内核的虚拟机(kernel-based virtual machine),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。kvm在2007年2月被罚殴辱Linux2.6.0核心中,可以以加载核心模块的方式被移植到FreeBSD及illumos上。
2006年10月Qumranet公司正式宣布KVM诞生,同年十月,kvm模块的源代码正式接纳进入Linux内核。
2008年9月,Redhat出资收购Qumranet公司,随后在RHEL6中使用KVM代替Xen.

  • 1.KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
  • 2.是x86架构且硬件支持虚拟化技术的Linux全虚拟化解决方案。
  • 3.它包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko。
  • 4.kvm还需要一个经过修改的QEMU软件,作为虚拟机上层控制和界面。
  • 5.kvm能在不改变Linux或Windows镜像的情况下同时运行多个虚拟机(即多个虚拟机使用同一镜像),并为每个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器等),同时kvm还能够使用KSM技术帮助宿主服务器节约内存。

2.关于virtual machine manager的介绍

红帽的virtual machine manager是一个虚拟机管理员,可以让用户管理多个虚拟机。
基于内核的虚拟机libvirt和virtual machine manager。

virtual machine manager可以让用户:

    • 1.创建、编辑、引导或停止虚拟机
    • 2.查看并控制每个虚拟机的控制台
    • 3.查看每个虚拟机的性能以及使用率
    • 4.查看每个正在运行中的虚拟机以及主控制端的即时性能及使用率信息
    • 5.不论是在本机或远程,皆可使用kvm、Xen、QEMU

3.其他虚拟化软件

1.Xen

    • Xen是一个开放源代码虚拟化监视器,有Xenproject开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。
      在旧的(无虚拟硬件)处理器上执行Xen。操作系统必须显示的修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。

2.QEMU

    • QEMU是一套有fabrice bellard所谓写的模拟处理器的自由软件。它与bochs、pearpc近似,但其具有某些后两者不具备的特性如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在
      kqemu已被KVM取代)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:
    • User mode模拟模式,亦即是用户模式。
    • QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。
    • System mode模拟模式,亦即是系统模式。
    • QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟数部不同虚拟电脑。

二、安装及环境的部署

1.安装时系统要求

Host system requirements
 • One core or thread for each virtualized CPU and one for the host. 
 • 2 GB of RAM, plus additional RAM for virtual machines. 
 • 6 GB disk space for the host, plus the required disk space for the virtual machine(s). 
 KVM hypervisor requirements # lscpu
Virtualization: VT-x 
# egrep 'svm|vmx' /proc/cpuinfo 
Intel CPU: VT-x 
AMD CPU: AMD -V 
BIOS Enable Virtualization

2.嵌套虚拟化

先用虚拟机,然后再在虚拟机里使用虚拟化,这就是嵌套虚拟化。

VMware 嵌套虚拟化
产品:Workstation、player、ESXi
支持:ESXi、Hyper-V、KVM、Xen
在这里插入图片描述
如何打开vm的嵌套虚拟化。
在这里插入图片描述

3.安装KVM虚拟化软件

    • 安装kvm虚拟化软件有多种方式:
  • 1.装系统时手动安装
    步骤如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    开启虚拟机,开始安装过程。
    安装时,还需要具备相应的条件:
    • 1.确定机器有VT:
      输入命令:egrep ‘vmx|svm’ /proc/cpuinfo
      如果有flags:里面有vmx或svm就说明支持VT,如果没有,则说明该机器无法支持KVM虚拟化
    • 2.确保BIOS里开启VT:
      输入命令:lsmod | grep kvm
      如下图所示:
      在这里插入图片描述
      3.centOS 7最小化安装
      使用以下命令:
[root@kvm01 ~]#  yum install qemu-kvm qemu-img libvirt -y
[root@kvm01 ~]# yum install virt-install libvirt-python virt-manager python-virtinst libvirt-client
其中:
libvirt  #虚拟机管理
virt  #虚拟机安装克隆
qemu-kvm  #管理虚拟机磁盘

4.kvm远程管理
使用Xmanager

windows安装软件X-manager,然后使用xshell软件开启X11转发,然后连接虚拟机,输入virt-manager管理。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、创建kvm虚拟机

    • 1、添加一块80G的硬盘来存储操作系统的安装介质,ISO文件
    • 2、利用fdisk分出一块40G的分区
    • 3、创建LVM逻辑卷 # pvcreate /dev/sdb1 # vgcreate vmvg /dev/sdb1 # lvcreate -n lvvm1 -l 10239 vmvg #将vmvg可以用PE全部分配给lvvm1
    • 4、挂载# mkfs.xfs /dev/vmvg/lvvm1 格式化lvvm1 # echo “/dev/vmvg/lvvm1 /vm/ xfs defaults 0 0” >> /etc/fstab # mount -a
    • 5、创建iso镜像文件存放目录 # mkdir /iso 上传镜像文件

创建kvm虚拟机又多种方式,使用virt-install命令行,使用 virt-manager 工具、使用 qemu-img 和qemu-kvm 命令行方式安装和OpenStack Nova 使用 libvirt API 通过编程方式来创建虚机等。

简单案例
安装centOS7:
1.使用命令行的方式创建虚拟机:

 # virt-install  --name=centos7 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=4 --os-type=linux  --cdrom=/iso/CentOS-7-x86_64-Minimal-1908.iso  --disk path=/var/lib/libvirt/images/centos7u6.img,size=5,format=qcow2 --network bridge=virbr0  --vnc  --vncport=5950  --vnclisten=0.0.0.0  --autostart

在这里插入图片描述
使用自带的工具安装centOS7(安装完毕):
在这里插入图片描述
virt-install参数详解

参数参数说明
–virt-type HV_TYPE要使用的管理程序名称(kvm、qumu、xen等)
–os-type系统类型
–os-variant DISTRO_VARIANT在客户机上安装的操作系统,例如:‘rhel8’、‘Windows XP’等
-n NAME,-name NAME客户及实例名称
–memory MEMORY配置客户机虚拟内存的大小
–vcpus VCPUS配置客户机虚拟CPU(vcpu)的数量
–disk DISK指定存储的各种选项
-cdrom CDROM光驱安装介质
-w NETWORK,–network NETWORK配置客户机网络接口
–graphics GRAPHICS配置客户机显示设置
虚拟化平台选项
-v, --hvm这个客户机是一个全虚拟化客户机
-p, --paravirt这个客户机是一个半虚拟化客户机
–container这个客户机是一个容器客户机
–virt-type HV_TYPE要使用的管理程序名称(kvm、qemu、xen)等
–arch ARCH模拟CPU架构
–machine MACHINE及其类型为仿真类型
其它选项
–noautoconsole不要自动尝试连接到客户端控制台
–autostart主机启动时自动启动域
–noreboot安装完成后不启动客户机

2.使用自带工具virt-manager创建虚拟机

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.使用qumu-img和qemu-kvm命令行方式安装创建虚拟机

(1)创建一个空的qcow2格式的镜像文件
#qemu-img create -f qcow2 windows-master.qcow2 8G 
(2)启动一个虚机,将系统安装盘挂到 cdrom,安装操作系统
#qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /iso/"Windows XP SP3 VOL".iso
(3)现在你就拥有了一个带操作系统的镜像文件。你可以以它为模板创建新的镜像文件。使用模板的好
处是,它会被设置为只读所以可以免于破坏。
#qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2
(4)你可以在新的镜像文件上启动虚机了
#qemu-kvm -hda windows-clone.qcow2 -m 512
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KVM详解 的相关文章

  • kvm常见故障及解决

    一 启动虚拟机Connection reset by peer virsh start vmhost1error Failed to start domain vmhost1error Unable to read from monitor
  • 虚拟机隔离和容器隔离机制及区别

    1 虚拟机隔离机制 通过虚拟化技术虚拟出资源完全独立的的主机 支持虚拟化的层是hypervisor hypervisor是一种虚拟化服务器的软件 2 Docker容器的隔离机制 Docker利用Namespace实现系统环境隔离 采用Cgr
  • Zstack 挂载云盘,在Windows下面看不到解决方法

    原因 在使用 Zstack 私有云时 创建 WinServer2019 时 想添加一块数据云盘 但是添加好后 进入系统看不到硬盘 主要是因为添加的云盘驱动是 virtio 格式 所以要安装相关驱动 1 查看挂载的云盘 root zstack
  • QEMU-KVM基本操作

    本文主要介绍KVM虚拟机的一些基本实践操作 对KVM虚拟机的管理操作主要是基于libvirt的命令行工具virsh进行的 一 安装与启动 1 KVM模块检查 1 查看当前Linux系统核心是否包含KVM模块 Linux内核2 6 20及以上
  • Linux上启用kvm嵌套虚拟化功能

    kvm支持嵌套虚拟化 即可以在虚拟机中创建虚拟机 本文主要介绍如何在使用Intel处理器的CentOS7中开启KVM的嵌套虚拟化功能 kvm主要是通过内核模块来实现的 因此我们查看系统是否开启了kvm嵌套虚拟化 只需要 cat sys mo
  • 如何在 Ubuntu 18.04 上安装 Kvm

    KVM 基于内核的虚拟机 是内置于 Linux 内核中的开源虚拟化技术 它允许您运行多个基于 Linux 或 Windows 的隔离来宾虚拟机 每个来宾都有自己的操作系统和专用虚拟硬件 例如 CPU 内存 网络接口和存储 本指南介绍如何在
  • 虚拟化KVM

    什么是虚拟化 在计算机技术中 虚拟化是一种资源管理技术 是将计算机的各种实体资源 CPU 内存 磁盘空间 网络适配器等 予以抽象 转换后呈现出来并可供分割 组合为一个或多个计算机配置环境 并重新分割 重新组合 已达到最大化合理利用物理资源的
  • kvm虚拟化技术

    前言 kvm是一种虚拟化技术 使用 概念 kvm是linux内核的模块 它需要CPU支持 采用硬件辅助虚拟化技术Intel VT AMD V 内存的相关技术如Intel的EPT和AMD的RVI 是底层虚拟化内核模块 检查cpu是否支持虚拟化
  • 虚拟化原理之KVM

    2 1 kvm技术基础 KVM kernel based virtual machine 的名字 基于kernel的虚拟机 已经很准确的说出了kvm的设计思路 也就是依赖linux内核 完全利用linux内核来实现cpu的调度 内存管理的功
  • 29 KVM管理系统资源-调整虚拟CPU绑定关系

    文章目录 29 KVM管理系统资源 调整虚拟CPU绑定关系 29 1 概述 29 2 操作步骤 29 KVM管理系统资源 调整虚拟CPU绑定关系 29 1 概述 把虚拟机的vCPU绑定在物理CPU上 即vCPU只在绑定的物理CPU上调度 在
  • kvm-ovirt-vdsm安装记录

    小技巧 1 fedaro 19自动查找最快yum源 yum install yum fastestmirror 2 libvirt启动sasl添加用户 saslpasswd2 c a libvirt admin 3 查看kvm模块 lsmo
  • 问题:your cpu does not support kvm extensions

    问题 我的BIOS开启了CPU虚拟化 但是虚拟机仍然显示your cpu does not support kvm extensions 解决 1 关闭虚拟机 2 虚拟机上单击右键 设置 3 选择下图选项 4 重启虚拟机 问题解决
  • kvm CPU绑定与查询

    cpu绑定 格式 virsh vcpupin domain name vcpu hostcpu config live 例如 virsh vcpupin 16 3 15 config live 说明 将kvm虚拟机第4个vcpu与宿主机第1
  • kvm之多网卡队列开启设置

    背景 目前基于dpdk数据平面开发套件的应用越来越多 而dpdk对于上层应用运行时 服务的进程数多于1时 要求网卡支持多队列 否则项nginx这种多进程应用程序只能再默认配置下运行 只能启动一个worker 要求 在kvm虚机中将网卡设置支
  • 如何让 perf stat 支持 KVM 中的“分支”、“分支未命中”等硬件事件

    我想通过 分支未命中 硬件事件来评估一个进程的性能 但是当我使用 perf stat 获取 分支未命中 数据时 它总是返回 0 因为我的操作系统位于 KVM 中 因为我拿一台真机来做测试比较麻烦 所以我想知道当我在 KVM 中时 有什么方法
  • 是否可以在 Azure 上运行 KVM

    Azure Fabric 似乎运行在 Hyper V 的定制版本上 是否可以在 Azure 上运行 KVM 虚拟化实例 使用嵌套虚拟化 我有一个基于 Debian 的自定义 VHD 比如说 根据本文档https learn microsof
  • x86 PIC,QEMU 在所有 CPU 上引发中断是否正确?

    我最近不得不解决 x86 PIC 的专有操作系统问题 其中操作系统预期定时器中断仅在 CPU0 上 我启用了 IO APIC 来解决这个问题并进行了 CPU 控制 因此中断仅到达 CPU0 问题解决了 有人告诉我 我们的硬件已经损坏 无法做
  • 当 KVM-QEMU 打开时,Intel-PT 不记录任何数据包

    我尝试在主机上使用 Intel PT 同时在客户机上运行通用软件程序 所以我期望主机中运行的 Intel PT 将记录所有相关数据包 如 PIP FUP TSC 等 以及所有基于 VM 的数据包 如 VMCS 我使用以下命令 perf kv
  • qemu KVM内核模块没有这样的文件或目录

    我目前正在上操作系统课程 我需要使用 qemu 来运行我的教授提供的一个小型操作系统 我正在尝试在 MacBook Air 5 2 上的 virtualbox 上的 ubuntu 12 04 虚拟机中使用 qemu 我知道我遇到的问题可能与
  • qemu kvm:如何获取性能监控中断?

    我在操作系统内核中编写了一些函数 以便在指令计数器溢出时发出性能监控中断 PMI 它在我的机器 Intel core i5 上运行良好 但是当我使用 qemu 在 qemu 上运行它时 qemu system x86 64 enable k

随机推荐

  • postgresql从库搭建

    1 复制类型 PostgreSQL支持物理复制 xff08 流复制 xff09 及逻辑复制2种 通过流复制技术 xff0c 可以从实例级复制出一个与主库一模一样的实例级的从库 流复制同步方式有同步 异步两种 另一种复制方式为逻辑复制 xff
  • NotePad 快捷键

    转载于 https www cnblogs com pxzbky p 11567346 html
  • 网络通信原理和过程

    当时查http协议的时候了解的一些网络底层的知识 xff0c 感觉挺有意思的 xff0c 就把多位博主的资料整料梳理出来整理到一堆 xff0c 就当是一篇科普文吧 一 网络的五层模型 如何分层有不同的模型 xff0c 有的模型分七层 xff
  • Springboot读取本地图片并显示

    在application xml中配置url访问路径和本地图片路径 xff1a 配置 url中访问路径 xff0c 这里为 xff1a localhost 8080 image 配置 本地图片保存的路径 xff0c image会根据D up
  • vue路由跳转到指定页面

    1 this router push name 39 Home 39 2 this router push path 39 view 39 3 this router replace name 39 Home 39 4 this route
  • Post方式提交,通过上下文HttpContext,Request[""]获取

    问题场景如下 xff1a 在项目的一般处理程序中 xff0c 所有方法都是通过 context Request 34 参数名 34 ToString 来获取参数的值 如果我直接将参数追加到URL后面 xff0c 直接Post xff0c 后
  • maven项目添加mysql的链接驱动

    Maven项目中添加JDBC驱动 在pom xml配置文件中添加 lt dependency gt lt groupId gt mysql lt groupId gt lt artifactId gt mysql connector jav
  • 2.5年, 从0到阿里

    从来没有想到自己的求职之路会这么顺利 第一次投阿里就拿到了offer 以前一直都是做好被刷的准备的 3月31号晚上收到了来自阿里的正式offer 签下录取意向书 粗略算了一下 从2012年9月份正式入学进入计算机系到2015年3月签下阿里o
  • 我的2013—弃金融IT,从SAP业务

    我的2013 xff0c 是动荡的一年 xff1b 这一年 xff0c 我跳巢了 xff1b 这一年 xff0c 我换行业了 xff1b 这一年 xff0c 我离开了生活5年的长春 xff0c 来到成都 xff1b 这一年 xff0c 我放
  • [转载]LazyWriter(惰性写入器) 进程的作用

    Q What Does the LazyWriter Process Do The LazyWriter process is a periodic process that checks the status of BPool buffe
  • Python——爬取百度百科关键词1000个相关网页

    Python简单爬虫 爬取百度百科关键词1000个相关网页 标题和简介 网站爬虫由浅入深 xff1a 慢慢来 分析 xff1a 链接的URL分析 xff1a 数据格式 xff1a 爬虫基本架构模型 xff1a 本爬虫架构 xff1a 源代码
  • python2:TypeError: must be string without null bytes, not str

    Stack Overflow QuestionsDeveloper JobsTagsUsers Log In Sign Up Join Stack Overflow to learn share knowledge and build yo
  • 读书笔记之二—大泥球和顶级的设计

    大泥球 世界上最常用的软件体系结构 xff0c 一个经久不衰的传奇 大泥球是一件很神奇的事情 xff0c 阅读文章里列举了大泥球出现的一系列原因 xff0c 但是我们貌似很少在其他的领域看到这么不专业的专业行为 xff0c 从这个角度看看
  • 类的命名规则

    类定义的命名规则 xff0c 是命名空间 xff08 应用程序名称 xff09 指向应用程序的app文件夹 xff0c 而类名除了命名空间和类名中最后部分之外 xff0c 其他的都是文件夹的名称 类名的最后部分加上 js就是类的文件名 xf
  • 远程桌面 Rdp文件的生成

    最近由于项目需要 xff0c 需要做一个rdp文件上成 xff0c 然后可以直接连远程桌面的功能 xff0c 在度娘和谷叔搜索一番 xff0c 所得甚少 闲话少说 xff0c 来点干货 xff1a 看看系统给提供的是啥样的 我们要关心得是
  • 防恶意解析,禁止用IP访问网站的Apache设置 修改 httpd.conf 实现

    一般来说 xff0c 网站可以用域名和IP来访问 你的网站可以通过IP直接访问 xff0c 本来这没什么问题 xff0c 但是会有些隐患 xff1a 由于搜索引擎也会收录你的IP地址的页面 xff0c 所以同一个页面搜索引擎会重复收录 xf
  • linux怎么改程序图标,如何在Ubuntu Unity上修改应用程序图标

    这篇文章将教大家在Ubuntu Unity上修改应用程序图标 xff0c 这个教程适合于Ubuntu 14 04 Ubuntu 13 10 Ubuntu 12 04 等使用Unity作为默认桌面环境的发行版 在Unity桌面环境 xff0c
  • 服务器显示不明用户远程过,服务器显示不明用户远程过

    服务器显示不明用户远程过 内容精选 换一换 Windows操作系统云服务器蓝屏 xff0c 如图1所示 使用了来源不明的第三方软件 CPU占用过高导致 因为误操作或者病毒引起的系统文件 注册表损坏 操作系统在蓝屏的情况下 xff0c 会显示
  • nginx反向代理局域网访问外网

    配置内网hosts vim etc hosts 添加 host1 能连外网的服务器ip central maven org 2 在host1 服务器上nginx配置 server listen 80 server name central
  • KVM详解

    一 KVM的简介 1 KVM简介 KVM xff0c 基于内核的虚拟机 xff08 kernel based virtual machine xff09 xff0c 是一种用于Linux内核中的虚拟化基础设施 xff0c 可以将Linux内