关于kvm知识做一次简单梳理回顾,首先了解kvm是什么?

kvm的全称是Kernel-based Virtual Machine,从字面意思理解是基于kernel内核的虚拟机,其实是Linux内核模块,此模块在系统中的表现为虚拟字符设备/dev/kvm,使得Linux kernel工作表现为hypervisor一个管理程序,在用户空间可通过系统调用API,与内核中的kvm模块交互,,从而完成虚拟机的创建,启动,停止,删除等各种管理功能,我们通常不能直接利用API做管理,于是工作在用户空间的qume-kvm进程担负了与用户交互的职责,由她来负责与内核模块交互。

值得注意的是,此模块从 Linux 2.6.20 版本作为模块被包含在 Linux 内核中,且需要支持虚拟化扩展的 CPU。
kvm是redhat公司完全开源的虚拟化技术,官网(http://www.linux-kvm.org)中这样描述:

Here is the setup which is used with kvm and qemu. Qemu can run as standalone,
with kqemu module or with kvm module. In normal mode,
only the user code is executed directly and the kernel code is still dynamically translated by QEMU.When KQEMU runs in full virtualization mode,
both guest kernel and user code are executed directly on the host CPU.
When run with kvm module, the CPU extensions (svm or vmx) are used.

意思说这是与kvm和qemu一起使用。 Qemu可以独立运行,使用kqemu模块或kvm模块。 在正常模式下,仅直接执行用户指令,内核指令仍然由QEMU动态翻译。 当KQEMU以完全虚拟化模式运行时,客户端内核和用户代码都将直接在主机CPU上执行。 当使用kvm模块运行时,将使用CPU扩展(svm或vmx)。

接下来看,如何快速简单使用kvm?

查看内核中是否支持官方所要求的cpu虚拟化:

    # grep -E -i "(svm|vmx)" /proc/cpuinfo 只要出现svm或vmx字样即可flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmonpebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdqvmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt

查看模块信息:

    # modinfo kvm 查看是否存在license:        GPLauthor:         Qumranetrhelversion:    7.3srcversion:     F0E855E5535DA469A9D8C37depends:        irqbypassintree:         Yvermagic:       3.10.0-514.el7.x86_64 SMP mod_unload modversions signer:         CentOS Linux kernel signing key

加载模块:

    # modprobe kvm

查看模块:

    # lsmod |grep kvm 可看到如下模块则已经加载成功kvm_intel             170181  0 kvm                   554609  1 kvm_intelirqbypass              13503  1 kvm

查看是否输出为设备接口:

    # ls /dev/kvm 查看是否是将内核模块输出为一个字符设备,彻底沦为hypervisor管理接口

内核模块准备就绪,安装用户空间所需的交互管理组件?

# yum info qemu-kvm
或
# yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils
kvm虚拟机图形化的使用,看下效果?

安装图形化管理组件virt-manager

#yum install libvirt libvirt-daemon-kvm virt-manager 会自动依赖qemu-kvm,第一步启动deamon

查看是否安装libvirt-daemon:

# rpm -ql libvirt-daemon  存在如下输出即为安装成功/etc/libvirt/etc/libvirt/libvirtd.conf/etc/libvirt/virtlockd.conf/etc/libvirt/virtlogd.conf/etc/logrotate.d/libvirtd/etc/sysconfig/libvirtd/etc/sysconfig/virtlockd/etc/sysconfig/virtlogd/usr/lib/sysctl.d/60-libvirtd.conf/usr/lib/systemd/system/libvirtd.service

启动libvirt-daemon进程:

    # systemctl restart libvirtd.service

查看ifconfig信息生成一个桥,nat功能桥:

    # ifconfig 查看是否存在virbr0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:9f:ca:ce  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看iptables规则会生成一些nat规则MASQUERADE地址伪装

    # iptables -vnL 查看关于virbr0的一些自动生成的规则Chain INPUT (policy ACCEPT 1029 packets, 73235 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:530     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:530     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:670     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

如果是您安装的是图形化界面,则执行如下命令即可打开图形化

    # virt-manager
虚拟化技术的几种分类:

1.模拟:Emulation模拟器

    qemu,pearpc,bochs

2.完全虚拟化:full virtualization

    bt/kvm

3.半虚拟化:para-virtualization

    特点:guestos明确知道运行于虚拟环境xen,接近于硬件性能

4.库级别虚拟化

    wine

5.程序级虚拟化

    jvm,pvm,...

类似openstack云虚拟:通俗的可以理解为一组主机运行虚拟化,监控管理一组主机的虚拟机实例的接口:cloudOs无需关心底层的硬件设施

云虚拟化的一些分类:

IaaS,PaaS,SaaS...

简单了解kvm虚拟cpu架构:

------------------------------
|Guest Memory | \            |
--------------|  |Hyper-visor|
|VCPU  |VCPU  |  |Process    |
|Thread|thread| / (thread)   |
----↓------↓---------↓-------|
|     KVM     | Linux Kernel |
----↓------↓---------↓--------
| CPU | | CPU |     |  CPU   |
------- -------     ----------

虚拟cpu的表现形式:虚拟机的每个虚拟cpu核心表现为物理机的一个thread线程,配置虚拟机CPU核心应与物理机相同最佳,如若多出反而性能下降

kvm详细架构:

 ____________________________________     ______________________
|User mode                           |   |Guest mode            |
| _______  __________________________|  /| ____________________ |
||Linux  ||Linux Process(VM launcher)| / ||Virtual Machine     ||
||Process||        ____________   _/——   || __________________ ||
||       ||       |Guest memory|→|_      |||Guest memory      |||
||       ||       |______↓_____|   \——   |||______user mode___|||
||       ||       |   I/O Ops  |     | \ |||       kernel     |||
||       ||       |__↓_____↓___|     |  \|||________↓_________|||
||_______||  ←-------/     ↓         |   ||_________↓__________||———————————↓——————————————↓—————————|   |          ↓           |
| __________↓______________↓________ |   |          ↓           |
||Linux Kernel       ______↓___     ||   |          ↓           |
||                  |KVM Dirver|←--------←----------/           |
||__________________________________||   |                      |
|Kernel mode_________________________|   |______________________|

由图中可看kvm内核模块与用户空间是如何协同工作的,在原有用户空间概念的基础上新增了访客模式,在访客模式内存在独立的用户及内核空间(为节省存储架构图为字符手打,可能显示稍怪异)。

还有一种半虚拟化解决方案?

virtio:redhat主导开源半虚拟化解决框架

virtio-blk(块虚拟) virtio-net(网络) virtio-pci virtio-ballon(容量) virtio-console(控制台半虚拟化)\____________________↓______________/_______________/____________________________/virtio↓transport↓virtio backend drivers

KVM管理工具架构:在用户空间也用于与内核kvm模块交互的工具不仅只有qemu工具,存在一众其他组件,比如图形化的virt-manager。

 ________________________________________________________________________________  _____    _________
|Virtual Machine            ____________________________________________________ ||virsh|  |Qemu     |
|   Manager                |virtinst                                            |||     |  | _  _  _ |
| ____________  __________ | ____________  __________  __________  ____________ |||     |  ||Q||Q||Q||
||virt-manager||virt-viwer|||virt-install||virt-clone||virt-p_w_picpath||virt-convert||||__↓__|_ ||u||u||u|| ———————————
| ——libvirt———  —libvirt—— | ——libvirt———  ——libvirt—  —libvirt——  ——libvirt——— |||libvirt|||e||e||e|||Guest|Guest|—————↓————————————↓——————————————↓————————————↓———————————↓———————————↓——————————————↓———|||u||u||u|| ——↓—— ——↓——
|                              libvirtd                                                   |||k||i||i|||qemu |qemu |—————————————————————————————————↓———————————————————————————————————————————————————————|||v||m||o|| ——↓—————↓——
|                              libvirt                                                    |||m||g| — |   ↓     ↓  |————————————————————————————————————————————————————————————————————————————————————————————↓——↓——↓—————↓—————↓——
|                                                 KVM                                                             |—————————————————————————————————————————————————————————————————————————————————————————————————————————————————

最近遇到kvm相关的问题,便将一些虚拟化相关的结构层次的东西梳理回顾一下,主要是思路上的理解。架构图片为字符在不同的设备可能出现怪异的景象。好记性不如烂笔头,遇到问题不要怕理性对待,多多总结,理清关系,愿普天之下的各位Linuxer工作顺利,永不宕机!

转载于:https://blog.51cto.com/cityx/1978413

kvm虚拟化框架结构层次梳理及图形化的使用相关推荐

  1. dell kvm java 会话报错_生产环境下戴尔 R820 kvm虚拟化部署三(virt-manager图形化安装kvm虚拟机)...

    三.kvm虚拟化部署 #安装kvm软件包 yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qem ...

  2. 图形化深度学习开发平台PaddleStudio(代码开源)

    目录 一.PaddleStudio概述 二.环境准备 2.1 安装PaddlePaddle 2.2 安装依赖库 三.基本使用介绍 3.1 启动 3.2 快速体验 3.2.1 下载示例项目 3.2.2 ...

  3. linux kvm图标需要安装的软件,KVM 图形化安装

    为了再后续查看方便,我还是完整的记录KVM图形化安装. 介于网络环境的原因,我选择NAT. 2,安装kvm前的准备工作 2.1 关闭防火墙  setenforce 0    vi /etc/sysco ...

  4. centos7图形化界面安装KVM虚拟机

    一.检查kvm和libvirt 是否安装 查看内核模块中是否含有kvm lsmod | grep kvm 查看cpu是否支持虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo ...

  5. 运维之道 | CentOS7.6 安装部署KVM虚拟机(GUI图形化安装)

    前言 KVM虚拟技术是完全的虚拟化,VPS之间不共用母机CPU和内存,VPS之间资源使用是独立的,互不影响.由于是完全的虚拟化,KVM虚拟技术的VPS理论上支持安装linux和windows任何版本, ...

  6. 初识KVM虚拟化(KVM是什么,KVM框架,优势和劣势)

    参考网址:http://www.dedoimedo.com/computers/kvm-intro.html 概念: KVM,即Kernel-basedvirtual machine,由redhat开 ...

  7. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  8. 基于MFC框架的学生信息管理系统/学生成绩管理系统(带有图形化界面)

    系统背景: 本系统基于 Visual Studio2013的环境搭建,运用MFC框架对系统进行设计和实现,本系统带有图形化界面,具有常用的用户登录注册功能,对个人信息的增删改查功能,对成绩的增删改查功 ...

  9. linux gpu 虚拟化_Windows 10通过GPU支持获得图形化Linux应用

    linux gpu 虚拟化 Larry Ewing 拉里·尤因 Windows 10's Windows Subsystem for Linux is already extremely powerf ...

最新文章

  1. python 中遍历表时候,当指定的表的长度超过实际长度时候,实际遍历的长度以表实际长度为准,不会发生越界,如下
  2. LeveyPopListView
  3. server2019远程服务器ipv4地址_Windows Server 2019远程桌面服务配置和授权激活
  4. 生物信息学概论_大学专业详解系列83——生物信息学(理学学士)
  5. 蛋白粉有什么作用?搭配这些食物帮助提升免疫力!
  6. Python3 获取当前路径,当前文件名,当前文件名路径、指定import的文件路径、程序路径
  7. mybatis mysql merge_使用Mybatis和druid连接池报错 merge sql error, dbType mysql, sql
  8. linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
  9. 计算机一级题库百度云0,全国计算机等级考试一级题库完整.pdf
  10. 农行研发中心软开2020秋招编程题全记录
  11. Flash Programer 给CC2530下载Hex文件 error解决办法 汇总
  12. 《东周列国志》第二十四回 盟召陵礼款楚大夫 会葵邱义戴周天子
  13. 【报告分享】 2020中国女性梦幻职业白皮书-COSMO数字100 (附下载)
  14. 桌面支持--ESP分区和MSR分区下怎么做系统~~
  15. HTMLCSS 笔记(三)
  16. 帮我起个名字,带淇,两个字的
  17. 多个域名泛域名证书和多域名证书
  18. JAVA NIO文件映射、通道、流读写文件示例
  19. 以太网交换机可以家用吗_工业交换机的作用是什么?工业交换机可以家用吗?...
  20. SQL SERVER 查询第一个数字和最后一个数字的位置

热门文章

  1. 工作小记(三)----说说北京生活的乐趣
  2. 什么是 Delta 文件
  3. ant导入Zookeeper到Eclipse错误path contains invalid character
  4. keepalived 的配置文件
  5. C# 发送Http请求 - WebClient类
  6. 从硬件到软件 统一沟通将引领通讯市场
  7. .net core 2.0 HTTPS request fails using HttpClient 安全错误
  8. MySQL5.7登陆数据库管理控制平台问题 ERROR 1045(28000)
  9. 时序列数据库武斗大会之 TSDB 名录 Part 1
  10. eclipse内存占用配置