一、KVM简介

  KVM的全称是kernel base virtual machine(基于内核的虚拟机)是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM已成为学术界的主流VMM之一。KVM的虚拟化需要硬件支持(如Inter VT技术或者AMD V技术),是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。IBM文档:https://www.ibm.com/developerworks/cn/linux/l-using-kvm/

  kvm架构

  提示:kvm是Linux内核中的一个模块,而对于用户要操作Linux内核中的模块所提供的功能,必须在用户空间装上一个用户空间软件,通过系统调用的方式去操作;QEMU就是kvm在用户空间的管理功能,有点类似iptalbes是netfilter的管理工具;上面架构图上kvm的主要作用是提供 CPU 和内存的虚级化,以及客户机的 I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理;QEMU通过修改过的被KVM虚机使用的QEMU代码,运行在用户空间,提供硬件I/O虚拟化,通过IOCTL/dev/kvm设备和KVM交互,但是,KVM本身不执行任何硬件模拟,需要用户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟I/O,并将它的视频显示映射回宿主的显示屏。

  二、KVM宿主机环境准备

  在使用KVM时,宿主机必须在硬件上支持虚拟化功能,如Inter VT技术或者AMD V技术;

  检查宿主机是否支持虚拟化功能

[root@node1 ~]# grep -E "vmx|svm" /proc/cpuinfo
[root@node1 ~]#

  提示:如上在宿主机上执行grep -E "vmx|svm" /proc/cpuinfo,如果没有过滤到任何有关vmx或者svm相关字符,那么说明该主机不支持虚拟化功能;

  在vmware workstation宿主机上开启虚拟化功能

  提示:运行的虚拟机,必须要先关机,然后找到对应的虚拟机右键-->设置-->处理器-->把虚拟化inter VT-x/EPT或AMD-V/RVI(V)这一项打勾,然后点击确定开启虚拟机即可;

  验证:现在开启了虚拟化inter VT-x/EPT或AMD-V/RVI(V),看看宿主机上是否能够过滤到vmx或svm的字符?

  提示:如果硬件是inter 处理器过滤出来的是vmx,如果是AMD的过滤出来是svm;两者只要有一种即可;

  检查内核是否装载kvm模块

  提示:如果使用lsmod 没有过滤到kvm字样,说明宿主机没有装载该模块,装载方法modpro kvm即可;到此宿主机上的环境就检查完毕;接下来安装kvm用户空间管理工具;

  安装kvm在用户空间的管理工具

[root@node1 ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/x86_64/primary_db | 6.9 MB 00:00:01
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package libvirt.x86_64 0:4.5.0-33.el7_8.1 will be installed
--> Processing Dependency: libvirt-libs = 4.5.0-33.el7_8.1 for package: libvirt-4.5.0-33.el7_8.1.x86_64
--> Processing Dependency: libvirt-daemon-driver-storage = 4.5.0-33.el7_8.1 for package: libvirt-4.5.0-33.el7_8.1.x86_64
--> Processing Dependency: libvirt-daemon-driver-secret = 4.5.0-33.el7_8.1 for package: libvirt-4.5.0-33.el7_8.1.x86_64
……省略部分内容……
libxml2 x86_64 2.9.1-6.el7.4 base 668 k
pciutils-libs x86_64 3.5.1-3.el7 base 46 k
policycoreutils x86_64 2.5-34.el7 base 917 k
python-gobject-base x86_64 3.22.0-1.el7_4.1 base 294 k
selinux-policy-targeted noarch 3.13.1-266.el7_8.1 updates 7.0 M Transaction Summary
==========================================================================================================
Install 5 Packages (+213 Dependent packages)
Upgrade 1 Package (+ 16 Dependent packages) Total download size: 95 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/235): at-spi2-core-2.28.0-1.el7.x86_64.rpm | 158 kB 00:00:00
(2/235): at-spi2-atk-2.26.2-1.el7.x86_64.rpm | 81 kB 00:00:00
(3/235): autogen-libopts-5.18-5.el7.x86_64.rpm | 66 kB 00:00:00
(4/235): boost-iostreams-1.53.0-28.el7.x86_64.rpm | 61 kB 00:00:00
(5/235): adwaita-cursor-theme-3.28.0-1.el7.noarch.rpm | 641 kB 00:00:00
(6/235): augeas-libs-1.4.0-9.el7_8.1.x86_64.rpm | 357 kB 00:00:00
……省略部分内容……
xkeyboard-config.noarch 0:2.24-1.el7
xml-common.noarch 0:0.6.3-39.el7
xorg-x11-server-utils.x86_64 0:7.7-20.el7
xorg-x11-xauth.x86_64 1:1.0.9-1.el7
xorg-x11-xinit.x86_64 0:1.3.4-2.el7
yajl.x86_64 0:2.0.4-4.el7 Updated:
selinux-policy.noarch 0:3.13.1-266.el7_8.1 Dependency Updated:
cyrus-sasl-lib.x86_64 0:2.1.26-23.el7 device-mapper.x86_64 7:1.02.164-7.el7_8.2
device-mapper-libs.x86_64 7:1.02.164-7.el7_8.2 freetype.x86_64 0:2.8-14.el7
glib2.x86_64 0:2.56.1-5.el7 libdrm.x86_64 0:2.4.97-2.el7
libselinux.x86_64 0:2.5-15.el7 libselinux-python.x86_64 0:2.5-15.el7
libselinux-utils.x86_64 0:2.5-15.el7 libsemanage.x86_64 0:2.5-14.el7
libsepol.x86_64 0:2.5-10.el7 libxml2.x86_64 0:2.9.1-6.el7.4
pciutils-libs.x86_64 0:3.5.1-3.el7 policycoreutils.x86_64 0:2.5-34.el7
python-gobject-base.x86_64 0:3.22.0-1.el7_4.1 selinux-policy-targeted.noarch 0:3.13.1-266.el7_8.1 Complete!
[root@node1 ~]#

  启动libvirtd

[root@node1 ~]# 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 state UP qlen 1000
link/ether 00:0c:29:9a:db:d6 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.41/24 brd 192.168.0.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe9a:dbd6/64 scope link
valid_lft forever preferred_lft forever
[root@node1 ~]# systemctl start libvirtd.service
[root@node1 ~]# 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 state UP qlen 1000
link/ether 00:0c:29:9a:db:d6 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.41/24 brd 192.168.0.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe9a:dbd6/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:45:06:15 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:45:06:15 brd ff:ff:ff:ff:ff:ff
[root@node1 ~]#

  提示:libvitrd是C/S架构,它是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术;启动libvirtd后,它会在宿主机上创建virbr0-nic和virbr0两张网卡,其中virbr0是一个NAT网桥,virbr0-nic就桥接到virbr0上,默认virbr0的地址是192.168.122.1/24,如下所示;

  三、基于virtual manager管理工具创建虚拟机

  开启vrit-manager

  提示:要想使用virt-manager,必须要使用支持X11协议的转发的远程工具,windows上可以使用专业版本的xshell和mobaxterm软件;Linux上需要安装桌面即可;如果是mac 需要安装XQuartz;如上连接宿主机,然后执行virt-manager命令,就可以打开virtual manager图形管理工具;

  上传镜像到宿主机

  创建虚拟机

  提示:这个根据自己需求来定义虚拟机的内存和cpu;

  提示:这步是选择磁盘,如果没有提前在宿主机上创建好磁盘,可以直接在这里选择创建,如果创建的有磁盘,则这里选择即可;

  提示:这一步是确定我们虚拟机的确认单和网络的选择,如果有多个网络,可以选择其中一种即可,然后点击finsh;

  提示:到这一步就是安装操作系统了,安装完毕后,重启我们就完成了虚拟机的创建;后续步骤这里就不过多阐述了;安装windows的步骤和上面一模一样;

  提示:安装好系统以后,我们就可以在这个界面上进行管理虚拟机,这里需要注意一点,如果宿主机没有打开核心转发功能,虚拟机是不能够正常上网的;到此基于virt-manager安装虚拟机就完成了;

虚拟化技术之kvm基础的更多相关文章

  1. 虚拟化技术之KVM

    虚拟化技术之KVM 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是虚拟化 其实虚拟化技术已经不是一个新技术了,上个世纪六十年代IBM公司已经在使用,只不过后来(上个世纪八 ...

  2. 虚拟化技术之kvm虚拟机创建工具qemu-kvm

    在前边的博客中我们介绍了如何创建kvm虚拟机,以及一些常用的工具的介绍和使用,今天我们来了解下kvm原始工具qemu-kvm:为什么说qemu-kvm是一个原始的工具呢,如果你用kvm虚拟机,心细的你 ...

  3. 虚拟化技术之kvm管理工具virsh常用基础命令(一)

    在上一篇博客中,我们了解了KVM基础架构和部署以及图形管理工具virt-manager安装虚拟机的过程,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13499 ...

  4. VPS的虚拟化技术—-XEN,KVM,OPENVZ

    市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系 ...

  5. 虚拟化技术实现 — KVM 的 CPU 虚拟化

    目录 文章目录 目录 前文列表 x86 体系结构的虚拟化 硬件辅助的 CPU 虚拟化 由 VMX 切换支撑的 CPU 虚拟化技术 KVM 的 CPU 虚拟化实现 vCPU 的调度方式 客户机 CPU ...

  6. 虚拟化技术之kvm虚拟机创建工具virt-install

    在前边的博客中,我们创建KVM虚拟机用到了virt-manager,这个工具是一个图形化工具,创建虚拟机很方便:除此我们还是用virsh define/create +虚拟机配置文件来创建虚拟机,这种 ...

  7. 虚拟化技术之kvm管理工具virsh常用基础命令(二)

    上一篇博客我们主要聊了下virsh 管理kvm虚拟机的命令相关用法和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13508231.html:今天我们来继 ...

  8. 虚拟化技术之kvm磁盘管理工具qemu-img

    在前边的博客中,我们大致了解了virsh这个工具对kvm虚拟机的一些操作,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/virsh/:今天我们来了解下kvm ...

  9. 虚拟化技术之kvm镜像模板制作工具virt-sysprep

    virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...

随机推荐

  1. 【mysql】- 事务隔离级别和MVCC篇

    概念 术语 脏写( Dirty Write ): 如果一个事务修改了另一个未提交事务修改过的数据,那就意味着发了脏写 脏读( Dirty Read ) : 如果一个事务读到了另一个未提交事务修改过的数 ...

  2. Java 并发实践 — ConcurrentHashMap 与 CAS

    转载 http://www.importnew.com/26035.html 最近在做接口限流时涉及到了一个有意思问题,牵扯出了关于concurrentHashMap的一些用法,以及CAS的一些概念. ...

  3. 性能测试 -- docker安装influxdb

    一.前提 1.项目已经部署好 2.docker已经安装好 二.docker安装influxdb 1.下载influxdb镜像:docker pull tutum/influxdb    1)超时报错: ...

  4. 2020 年百度之星&#183;程序设计大赛 - 初赛三

    2020 年百度之星·程序设计大赛 - 初赛三解题思路及代码(Discount.Game.Permutation) 1.Discount Problem Description学皇来到了一个餐馆吃饭. ...

  5. springboot项目部署到tomcat步骤以及常见问题

    ------------恢复内容开始------------ 本文分为两个部分,一,是打包的步骤,二,是我项目中所遇到的问题以及解决方法 一. 打包为war包步骤 1.修改打包方式为war 在pom. ...

  6. Tomcat内部结构、工作原理、工作模式和运行模式

    TOMCAT的内部结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层容器中.Tomcat的 ...

  7. C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解

    在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面一段代码输出什么: 输出<null ...

  8. Springboot拦截器使用及其底层源码剖析

    博主最近看了一下公司刚刚开发的微服务,准备入手从基本的过滤器以及拦截器开始剖析,以及在帮同学们分析一下上次的jetty过滤器源码与本次Springboot中tomcat中过滤器的区别.正题开始,拦截器 ...

  9. Qt自定义控件之仪表盘3--雷达扫描图

    1.设计思想 雷达扫描图,在影视作品中见到较多,比如飞机雷达.舰艇雷达,有一个扫描线转圈代表雷达一周旋转或一个批次的收发,发现目标就在表盘上标记位置.和汽车仪表盘类似,汽车仪表盘有底盘背景图.同圆.刻 ...

  10. 国浩:Cassandra在360的最新进展

    大家好,我是来自奇虎360的国浩.今天我给大家带来的是Cassandra在360的最新进展. 我会从四个方面来介绍Cassandra在360的应用情况:Cassandra在360的使用历史再结合两个案 ...