KVM虚拟化技术学习-基础入门

1.虚拟化技术概述

        虚拟化[Virtualization]技术最早出现在 20 世纪 60 年代的 IBM ⼤型机系统,在70年代的 System 370 系列中逐渐流⾏起来,这些机器通过⼀种叫虚拟机监控器[Virtual Machine Monitor,VMM]的程序 在物理硬件之上⽣成许多可以运⾏独⽴操作系统软件的虚拟机[Virtual Machine]实例。随着近年多核系 统、集群、⽹格甚⾄云计算的⼴泛部署,虚拟化技术在商业应⽤上的优势⽇益体现,不仅降低了 IT 成 本,⽽且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深⼊到⼈们⽇常的⼯作与⽣活中。

        虚拟化是⼀个⼴义的术语,对于不同的⼈来说可能意味着不同的东⻄,这要取决他们所处的环境。 在计算机科学领域中,虚拟化代表着对计算资源的抽象,⽽不仅仅局限于虚拟机的概念。例如对物理内 存的抽象,产⽣了虚拟内存技术,使得应⽤程序认为其⾃身拥有连续可⽤的地址空间[Address Space], ⽽实际上,应⽤程序的代码和数据可能是被分隔成多个碎⽚⻚或段),甚⾄被交换到磁盘、闪存等外部 存储器上,即使物理内存不⾜,应⽤程序也能顺利执⾏

2.虚拟化技术主要分类

  • 平台虚拟化(Platform Virtualization) 针对计算机和操作系统的虚拟化。

  • 资源虚拟化(Resource Virtualization) 针对特定的系统资源的虚拟化,⽐如内存、存储、⽹络资源等。

  • 应⽤程序虚拟化(Application Virtualization) 包括仿真、模拟、解释技术等。

3.KVM虚拟化技术简介

1.KVM架构

 

2.KVM架构解析

从rhel6开始使⽤,红帽公司直接把KVM的模块做成了内核的⼀部分。

xen⽤在rhel6之前的企业版中默认内核不⽀持,需要重新安装带xen功能的内核 KVM 针对运⾏在 x86 硬件上的、驻留在内核中的虚拟化基础结构。

KVM 是第⼀个成为原⽣ Linux 内核 (2.6.20)的⼀部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。 这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® 和 IA64 的通道。另外,KVM 最近还添加了 对对称多处理(SMP)主机(和来宾)的⽀持,并且⽀持企业级特性,⽐如活动迁移(允许来宾操作系 统在物理服务器之间迁移)。

KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为⼀个hypervisor。

KVM 为⽀持 hypervisor 指令的硬件平台提供完整的虚拟化(⽐如 Intel® Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 产品)。

KVM 还⽀持准虚拟化来宾操作系统,包括 Linux 和 Windows®。 这种技术由两个组件实现。第⼀个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以 管理虚拟化硬件,并通过 /proc ⽂件系统公开其功能。

第⼆个组件⽤于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU 作为⽤户空间进程执⾏,并且在来宾操作系统请求⽅⾯与内核协调。 当新的操作系统在 KVM 上启动时(通过⼀个称为 KVM 的实⽤程序),它就成为宿主操作系统的⼀个 进程,因此就可以像其他进程⼀样调度它。但与传统的 Linux 进程不⼀样,来宾操作系统被 hypervisor 标识为处于 "来宾" 模式(独⽴于内核和⽤户模式)。 每个来宾操作系统都是通过 /dev/KVM 设备映射的,它们拥有⾃⼰的虚拟地址空间,该空间映射到主机 内核的物理地址空间。

如前所述,KVM 使⽤底层硬件的虚拟化⽀持来提供完整的(原⽣)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执⾏的 QEMU 进程。 KVM 在 Linux 环境中以主机的⽅式运⾏,不过只要底层硬件虚拟化⽀持,它就能够⽀持⼤量的来宾操 作系统.

4.KVM软件安装

1.初始化配置

systemctl stop firewalld.service
setenforce 0

2.查看CPU是否支持VT技术

[root@localhost ~]# cat /proc/cpuinfo | grep -E 'vmx|svm'

3.查看是否加载了KVM

[root@localhost ~]# lsmod | grep kvm
kvm_amd                64937  0
kvm                   554609  1 kvm_amd
irqbypass              13503  1 kvm

4.清理环境,卸载原有的KVM

yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/

5.安装KVM相关软件包

yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -y

6.启动libvirt并设置开机自启

systemctl start libvirtd
systemctl enable libvirtd

7.创建两个新目录,一个存放系统镜像,一个做虚拟机的存储盘

mkdir -p /kvm/iso
mkdir -p /kvm/images

8.创建物理桥接设备

1.关闭networkManager服务
chkconfig NetworkManager off
service NetworkManager stop
2.桥接设备关联网卡
virsh iface-bridge eno3 br0
3.查看是否成功
[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c29a62525       yes             ens33
virbr0          8000.5254005793d8       yes             virbr0-nic

5.图像化安装CentOS7

1.进入图像化

 

2.创建虚拟机

 

3.选择安装类型

 

  • local install media:本地镜像文件安装

  • network install :网络方式安装

  • network boot:网络PEX安装

  • import existing disk image:打开原有的虚拟机磁盘文件

4.选择镜像

 

5.创建存储池

1.iso镜像文件位置

 

2.image虚拟机存放位置

 

6.点击选择卷

 

7.找到/kvm/iso下的文件

 

8.选择刚刚创建的存储卷

 

 

9.开始安装

 

 

安装系统即可。。。。

10.安装成功

 

6.命令行模式安装

1.虚拟机的组成

1.配置文件

[root@localhost ~]# ls /etc/libvirt/qemu/
centos7.0.xml  networks

2.存储虚拟机的介质

[root@localhost ~]# ls /kvm/images/
disk.qcow2

2.根据配置文件创建虚拟机

1.复制配置文件

[root@localhost ~]# cp  /etc/libvirt/qemu/centos7.0.xml  /etc/libvirt/qemu/centos7.0-2.xml

2.复制磁盘镜像文件

[root@localhost ~]# cp /kvm/images/disk.qcow2 /kvm/images/disk-2.qcow2

3.修改配置文件必要的内容

[root@localhost ~]# vi /etc/libvirt/qemu/centos7.0-2.xml
#修改一下内容
<name>centos7.0-2</name>    #虚拟机名字
  <uuid>cac95646-ab50-4c0a-9770-e97f0723e19f</uuid> #UUID 修改一位即可
  <memory unit='KiB'>1048576</memory>   #内存
  <currentMemory unit='KiB'>1048576</currentMemory> #实际内存
  <vcpu placement='static'>1</vcpu> #CPU核数
  <mac address='52:54:00:98:d9:79'/> #MAC地址 修改后三位其中一个即可

4.创建虚拟机

[root@localhost ~]# virsh define /etc/libvirt/qemu/centos7.0-2.xml
[root@localhost ~]# systemctl restart libvirtd

3.查看

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/24321.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round 764 (Div. 3)

比赛链接 Codeforces Round 764 A. Plus One on the SubsetB. Make APC. Division by Two and PermutationD. Palindromes ColoringE. Masha-forgetful A. Plus One on the Subset Example input 3 6 3 4 2 4 1 2 3 1000 1002 998 2 12 11output 3 4 1题意&#xff1a; 你可…

计算机网络考试多选题汇总Ⅱ

https://cadyin.blog.csdn.nethttps://blog.csdn.net/qq_38639612?spm1010.2135.3001.5421 计算机网络考试多选题汇总 1、在Windows中&#xff0c;任务管理器的作用是() A&#xff0e;终止未响应的应用程序 B&#xff0e;终止进程的运行 C&#xff0e;查看系统当前的信息 …

车载网络测试 - CANCANFD - 基础篇_01

目录 问题思考&#xff1a; 一、为什么需要总线? 二、什么是CAN总线? 三、为什么是CAN总线? 四、曾经的车用总线 1、SAEJ1850(Class2) 2、SAEJ1708 3、K-Line 4、BEAN 5、 byteflight, K-Bus 6、D2B 五、当前的车用总线 1、CAN 2、LIN 3、FlexRay 4、MOST 六…

python-sqlite3使用指南

python下sqlite3使用指南 文章目录 python下sqlite3使用指南开发环境sqlite3常用APICRUD实例参考 开发环境 vscode ​ 开发语言&#xff1a; python vscode SQLite插件使用方法&#xff1a; 之后在这里就可以发现可视化数据&#xff1a; sqlite3常用API Python 2.5.x 以上…

E往无前 | 腾讯云大数据 ElasticSearch 高级功能:Cross Cluster Replication实战

前言 Elasticsearch在platinum版本中&#xff0c;推出了Cross Cluster Replication特性&#xff08;以下简称CCR&#xff09;&#xff0c;也即跨集群远程复制。 该特性可以解决两类问题&#xff1a; 1&#xff0c;数据迁移&#xff1b; 2&#xff0c;异地备份。 本文以实战为主…

微服务和领域驱动

一、微服务 1.1 什么是微服务 微服务就是一些协同工作的小而自治的服务。 关键词&#xff1a; 小而自治 -- 小 “小”这个概念&#xff0c;一方面体现在微服务的内聚性上。 内聚性也可以称之为单一职责原则&#xff1a;“把因相同原因而变化的东西聚合到一起&#xff0c;…

企业电子招投标采购系统源码之登录页面-java spring cloud

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

202312读书笔记|《赶时间的人》——灰暗的从前会成为照亮未来的光,艰难的生活里,诗歌是那陡峭的另一面

202312读书笔记|《赶时间的人》——灰暗的从前会成为照亮未来的光&#xff0c;艰难的生活里&#xff0c;诗歌是那陡峭的另一面 《赶时间的人》 作者王计兵&#xff0c;一个外卖员的诗&#xff0c;饱含对生活的热情&#xff0c;向上的力量&#xff0c;仿若身在炼狱&#xff0c;心…

【计算机网络】3、IO 多路复用:select、poll、epoll、reactor | 阻塞非阻塞、同步异步

文章目录 一、select()1.1 用法1.1 实战 二、poll()2.1 用法2.2 实战 三、阻塞、非阻塞3.1 非阻塞 IO3.1.1 read()3.1.2 write()3.1.3 accept()3.1.4 connect()3.1.5 非阻塞IO select() 多路复用实战 四、epoll()4.1 epoll_create()4.2 epoll_ctl()4.3 epoll_wait()4.4 实战4.…

Dubbo源码篇07---SPI神秘的面纱---原理篇---下

Dubbo源码篇07---SPI神秘的面纱---原理篇---下 引言根据name获取扩展实例对象获取默认扩展实例对象按条件批量获取扩展实例对象实例演示 小结 引言 上篇文章&#xff1a; Dubbo源码篇06—SPI神秘的面纱—原理篇—上 我们追踪了getAdaptiveExtension获取自适应扩展点的整个流程…

(常见)数据模型

文章目录 数据模型概述一、数据模型概要1.模型、建模与抽象2.数据模型3.两类数据模型 二、数据库模型的组成要素1.数据结构2.数据操作3.数据的完整性约束 三、概念模型1.概要2.基本概念3.概念模型的表示方法 常用数据模型一、层次模型1.简介2.数据结构3.数据操纵与完整性约束4.…

【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例

UART 简介 我们在使用 PS 的时候&#xff0c;通常会添加 UART 控制器&#xff0c;用于打印信息和调试代码。除此之外&#xff0c;PS 在和外 部设备通信时&#xff0c;也会经常使用串口进行通信。 UART 控制器 UART 控制器是一个全双工异步收发控制器&#xff0c;ZYNQ 内部包…

教你一步步使用实现TensorFlow 进行对象检测

在本文中,我们将学习如何使用 TensorFlow Hub 预训练模型执行对象检测。TensorFlow Hub 是一个库和平台,旨在共享、发现和重用预训练的机器学习模型。TensorFlow Hub 的主要目标是简化重用现有模型的过程,从而促进协作、减少冗余工作并加速机器学习的研发。用户可以搜索社区…

Linux内核源码分析-进程调度(五)-组调度

出现的背景 总结来说是希望不同分组的任务在高负载下能分配可控比例的CPU资源。为什么会有这个需求呢&#xff0c;假设多用户计算机系统每个用户的所有任务划分到一个分组中&#xff0c;A用户90个任务&#xff0c;而B用户只有10个任务&#xff08;这100个任务假设都是优先级一…

Python 下载的 11 种姿势,一种比一种高级

今天我们一起学习如何使用不同的Python模块从web下载文件。此外&#xff0c;你将下载常规文件、web页面、Amazon S3和其他资源。 通过本文的学习&#xff0c;你将学到如何克服可能遇到的各种挑战&#xff0c;例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策…

C# WPF窗体设计器显示以及App.xaml文件打不开(VS 2022)

问题描述&#xff1a; 在项目中遇到了App.xaml设计器打不开以及窗体设计器不显示&#xff0c;只有代码&#xff0c;如图所示&#xff1a; 可以明显的看见左下角的设计器不见&#xff0c;但是用户控件又有设计器 解决方法&#xff1a; (一、App.xaml不能正常打开) ①清理项…

定薪17K*15,阿里测开岗上岸面经分享....

先简单介绍一下我自己吧&#xff0c;等会大家以为我是什么学历狂人&#xff0c;技术大牛&#xff0c;我毕业于广东一个普通本科院校&#xff0c;绝对不是什么双一流大学&#xff0c;大家不要有距离感&#xff0c;这也是我为什么来分享的原因&#xff0c;因为我觉得我这段经验还…

硬件软件【部署】

开发板和主机 1.功能不同&#xff1a;帮助开发者进行嵌入式系统的开发和调试&#xff0c;具有较强的硬件拓展能力&#xff0c;可以连接各种传感器/执行器等外设。主机为满足一般的计算需求而设计&#xff0c;具备更强的计算和图形处理能力。 2.架构不同&#xff1a;开发板通常…

【接口测试】JMeter测试WebSocket接口

目录 一、WebSocket简介 二、JMeter测试WebSocket接口 三、WebSocket和Socket的区别 最近老被问到WebSocket&#xff0c;突然想到以前大学时上Java课的时候&#xff0c;老师教我们socket连接&#xff0c;一个同学电脑做客户端&#xff0c;一个同学电脑做服务端&#xff0c;…

LAMP平台搭建

文章目录 LAMP概述安装apache安装mysql安装php LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站…