kvm虚拟化平台部署

  • kvm虚拟化平台部署

    • kvm概念简介

      • kvm自linux2.6版本以后就整合到内核中,因此可以看做是一个原生架构.

      • kvm虚拟化架构

          • 硬件底层提供物理层面的硬件支持

          • linux(host),就相当于这个架构中的宿主机,上面运行了多个虚拟机。

      • kvm组成部分

        • 基于内核支持的kvm模块

          • 根据qemu模拟出的硬件设备模拟出虚拟化环境

        • qemu(快速仿真器)

          • 模拟出硬件设备

      • kvm运行时额三种模式

        • 客户模式

          • 这是操作系统内核运行的地方,拥有最高级别的权限,可以直接访问硬件资源。 在KVM中,内核模式下的KVM模块负责处理虚拟化相关的任务,如创建虚拟机、分配虚拟硬件资源等。

            • 内核模式是操作系统内核运行的地方,拥有最高的权限等级,可以直接访问底层硬件资源。 KVM作为一个Linux内核模块,运行在内核模式下,负责虚拟机的创建、管理和调度。 KVM模块还负责捕获和处理客户模式中的CPU异常和特殊指令,例如特权指令。

              • 执行非io的客户代码,虚拟机运行在这个模式下

        • 用户模式

          • 用户模式程序运行在较低的权限级别下,不能直接访问硬件。 KVM使用一个名为qemu-kvm的用户空间程序来管理虚拟机的配置,并与内核模式交互以执行特定操作,比如启动、停止虚拟机或设置虚拟硬件属性。

            • 用户模式程序运行在较低的权限级别,不能直接访问硬件资源。 KVM使用一个名为qemu-kvm的用户空间程序,它负责配置虚拟机的硬件环境,如网络接口、磁盘设备等,并与内核模式进行交互。 用户模式程序还可以控制虚拟机的生命周期,包括启动、暂停、恢复和关闭等操作。

              • 用户执行io代码,qemu运行在这个模式下

        • 内核模式

          • 客户模式指的是运行在虚拟机内的操作系统或应用程序。 在这个模式下,客户操作系统认为自己是直接运行在物理硬件上,但实际上是由KVM模拟出的虚拟硬件环境。

            • 客户模式指的是运行在虚拟机内部的操作系统和应用程序。 当虚拟机运行时,其操作系统认为自己是在物理硬件上直接运行,但实际上所有的硬件资源都是由KVM模拟提供的。 客户模式的进程运行在虚拟化的环境中,可以访问虚拟化的CPU、内存和其他硬件资源。

              • cpu调度与内存管理

      • kvm工作原理

        • 用户模式的qemu利用ioctl系统调用进入内核模式。kvmdriver为虚拟机创建虚拟cpu和虚拟内存,然后执行vmlaunch指令进入客户模式,装载GuestOS并允许,guest运行过程中如果发生终端或者影子缺页等异常,将暂停GuestOS的运行,并保存上下文退出到内核模式来处理这些异常,内核模式处理这些一场如果不需要io则处理完成后重新进入客户模式,如果需要io则进入用户模式,由qemu来处理io,完成后进入内核模式,在进入客户模式

        • 流程示意图

    • kvm部署需要桌面版的linux

      • 依赖软件包

        • qemu-kvm

          • kvm模块,一般已经自带(核心包)

        • qemu-kvm-tools

          • kvm调试工具

        • qemu-img

          • qemu组件,创建磁盘,启动虚拟机(磁盘管理工具)

        • virt-install

          • 构建虚拟机的命令工具

        • virt-manager

          • 图形化界面的虚拟机管理工具

        • bridge-utils

          • 网络支持工具(虚拟机与外界通信的命令管理工具)

        • libvirt

          • 虚拟机管理工具

            • 核心工具

        • libguestfs-tools

          • 当虚拟机的磁盘格式为qcow2时,可利用该工具对磁盘文件进行操作。

      • 安装完毕后关闭虚拟机设置cpu支持虚拟化

          • 因为是利用虚拟机嵌套,所以内核与内存可以给的大一点。

      • 开机后进行验证

        • 查看cpu信息看是否支持

          • cat /proc/cpuinfo | grep vmx

            • 出现vmx字样表示支持,英特尔是该标识,amd则是vm

        • 查看系统模块

          • lsmod | grep kvm

            • 出现kvm表示有虚拟化模块

      • kvm网络相关设置

        • 类似于VMware虚拟机实现与外界通信时需要vmnet8,直连物理网络需要vmnet0一样 ,kvm虚拟机也需要一个网卡来实现这个功能。

        • 拷贝出桥接模式的网卡

          • cp ifcfg-ens33 ifcfg-br0

            • bridge桥接

        • 因为真实承载数据帧的网卡还是物理网卡,因此还需要真实网卡支持,(变更为桥接模式)

          • vim ifcfg-ens33

          • 添加一行将其改为桥接模式的网卡

            • BRIDGE=br0

        • 修改桥接模式的网卡配置文件br0

          • vim ifc-br0

            • TYPE=Bridge

              • 至关重要的类型修改,桥接模式

            • NAME=br0

              • 名称与设备相匹配

            • DEVICE=br0

              • 名称与设备相匹配

          • 最后重启网络

            • systemctl restart network

      • kvm管理

        • 图形化管理工具

          • virt-manager

            • 图形化工具的初始化界面
              • 标识1:创建存储池,存储池用于存放虚拟机磁盘数据。 标识2:创建卷,为虚拟机分配磁盘空间。
                • 标识1:名称随意,其他保持默认

                  • 选择存放空间,可以自己指定。 确定完后点完成
                    • 最后就成功创建了一个存储池

                • 标识2:格式有个raw格式,效率高,但无法通过libguestfs-tools提供的工具进行关机修改磁盘文件。最大空间不能超过可用空间。 名称尽量简单有代表性,可以使用创建的虚拟机的名字。

                  • 填写完毕后就创建了一个虚拟磁盘
            • 选中qemu/kvm右键,新建就能创建出虚拟机

              • 根据环境选择合适的安装介质,本案例以本地安装介质为例
                • 需要提前拷贝好系统的iso镜像文件到程序有权访问的位置

                • 通过浏览找到镜像文件

                  • 本地浏览找到位置

                  • 双击或打开之后点击前进

                    • 根据需要设置合理的内存,在嵌套的情况下,不能超过上一级虚拟机的最大内存。

                    • 在这里建议使用自己规定的虚拟机存储位置。

                      • 在这里我选择了创建出来的aaa存储池,存储池的路径可以自己指定。最后点击选择

                      • 该处的名字是在命令行使用命令需要敲的名字,因此简单好记有代表性为主。

                      • 点击完成后出现该字样就到了正常装系统的流程,根据需要部署即可。
        • kvm命令行管理

          • 查看命令帮助

            • virsh -h

          • 列出所有虚拟机并显示状态

            • virsh list --all

          • 开启虚拟机

            • virsh start 虚拟机名称

            • 通过配置文件启动

              • virsh create /etc/libvirt/qemu/test01.xml

                • 在该目录下会生成虚拟机对应的配置参数的.xml文件

          • 关闭虚拟机

            • virsh shutdown 虚拟机名称

            • 强制关闭

              • virsh destory 虚拟机名称

          • 挂起虚拟机

            • virsh suspend 虚拟机名称

          • 恢复虚拟机

            • virsh resume 挂起虚拟机的名称

          • 跟随虚拟机开机自启

            • virsh autostart 虚拟机名称

          • 导出虚拟机配置

            • virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml

              • 要导出的虚拟机以及导出后的位置与名称

          • 删除虚拟机

            • virsh undefine 虚拟机名称

              • 这种取消定义的方法进删除配置文件,并不会删除磁盘文件。

          • 添加被取消定义的虚拟机

            • 需要准备好配置文件

              • virsh define 指定配置文件

          • 通过管理工具修改磁盘信息

            • virsh edit 虚拟机名称

              • edit 编辑

        • kvm文件管理

          • 查看当前磁盘格式

            • qemu-img info /data_kvm/store/test01.qcow2

              • .qcow2的优势就是可以关机修改配置信息

          • 如果不是qcow2,需要修改回来的操作

            • 先关闭对应的虚拟机

              • virsh shutdown test01

            • qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img /data_kvm/store/test01.qcow2

            • 最后修改.xml文件中的磁盘类型与磁盘文件名

              • virsh edit test01

                • <driver name='qemu' type='qcow2' cache='none'/>

                • <source file='/data_KVM/store/test01.qcow2'/>

          • 查看虚拟机文件

            • virt-cat

              • 类似于cat命令

          • 编辑虚拟机文件

            • virt-edit

              • 类似于vim命令

          • 查看磁盘信息

            • virt-df

        • kvm虚拟机克隆

          • 需要关机才能做克隆

          • virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2

            • -o 源虚拟机

              • origin 起源

            • -n 克隆出的虚拟机的名称

            • -f 配置文件的位置与名称

        • 虚拟机快照

          • virsh snapshot-create 虚拟机名称

            • 已生成域快照 1503494464

              • 创建成功后会生成一个快照序列号(标识号)

          • virsh snapshot-current 快照序列号

            • 查看快照当前的虚拟机状态

          • virsh snapshot-list 虚拟机名称

            • 列出该虚拟机所有的快照

          • virsh snapshot-revert 虚拟机名称 快照序列号

            • 为该虚拟机恢复到该快照的状态

          • virsh snapshot-delete 快照序列号

            • 删除该快照

复制到xmind即可形成条理性笔记。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科普文:分布式数据一致性协议Paxos

1 什么是Paxos Paxos协议其实说的就是Paxos算法, Paxos算法是基于消息传递且具有高度容错特性的一致性算 法&#xff0c;是目前公认的解决分布式一致性问题最有效的算法之一。 Paxos由 莱斯利兰伯特(Leslie Lamport)于1998年在《The Part-Time Parliament》论文中首次公 开&…

装饰大师——装饰模式(Java实现)

引言 大家好&#xff0c;上期我们介绍了装饰模式在Python中的实现&#xff0c;今天&#xff0c;我们将继续探讨装饰模式&#xff0c;并展示如何在Java中实现它。 装饰模式概述 装饰模式的核心思想是将功能附加到对象上&#xff0c;而不是通过继承来实现&#xff0c;这种模式…

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法

LntonAIServer裸土检测算法代表了一种先进的土地监测技术&#xff0c;它利用人工智能的强劲能力&#xff0c;实现了对裸土区域的自动识别和实时监测。该算法的推出&#xff0c;为环境保护、农业管理以及城市规划等多个领域提供了创新的解决方案&#xff0c;其应用前景广阔&…

如何准备 Java API 文档以供下游对接

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

QT:控件圆角设置、固定窗口大小

实现控件圆角度设置//使用的是setStyleSheet方法 //改变的控件是QTextEdit&#xff0c;如果你想改变其他控件&#xff0c;将QTextEdit进行更换 this->setStyleSheet("QTextEdit{background-color:#FFFFFF;border-top-left-radius:15px;border-top-right-radius:15px;bo…

是否掌握数据结构对于IT职业发展至关重要?

算法跟代码实现有时候是两回事&#xff0c;在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#…

Chat2DB新推Chat2Excel,让数据对话跃然纸上

Excel 智能问答 Chat2Excel 1. 创建新聊天 点击左侧AI对话&#xff0c;进入对话界面。点击加号""按钮以开始一个新的对话。 新建对话选择表格类型, 选择上传excel文档。 双击对话名称可以修改对话名称。现在我们就可以开始针对于Excel进行智能问答了。 2. 智能…

智能小家电的跨境渠道有哪些?入驻百思买还是选择做亚马逊?——WAYLI威利跨境助力商家

在全球化贸易背景下&#xff0c;智能小家电企业面临机遇与挑战。消费者追求高品质生活&#xff0c;智能小家电市场需求旺盛&#xff0c;跨境销售成为拓展市场、提升品牌影响力的关键。选择合适的跨境渠道至关重要。以下是智能小家电跨境销售的主要渠道&#xff0c;并深入分析了…

layui 乱入前端

功能包含 本实例代码为部分傻瓜框架&#xff0c;插入引用layui。因为样式必须保证跟系统一致&#xff0c;所以大部分功能都是自定义的。代码仅供需要用layui框架&#xff0c;但原项目又不是layui搭建的提供解题思路。代码较为通用 自定义分页功能自定义筛选列功能行内编辑下拉、…

【探索Linux】P.43(网络层 —— IP协议)

阅读导航 引言一、IP协议基本概念二、IP协议头格式三、网段划分1. 网络号和主机号2. 引入子网掩码&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;默认子网掩码&#xff08;3&#xff09;子网掩码的作用&#xff08;4&#xff09;子网掩码与IP地址的结合&#xff…

国内NAT服务器docker方式搭建rustdesk服务

前言 如果遇到10054,就不要设置id服务器!!! 由于遇到大带宽,但是又贵,所以就NAT的啦,但是只有ipv4共享和一个ipv6,带宽50MB(活动免费会升130MB~) https://bigchick.xyz/aff.php?aff322 月付-5 循环 &#xff1a;CM-CQ-Monthly-5 年付-60循环&#xff1a;CM-CQ-Annually-60官方…

Prometheus安装部署

文章目录 1.Prometheus(普罗米修斯)安装部署1.1部署环境准备1.2部署prometheus1.3主机数据展示 2.Grafana安装部署2.1部署Grafana2.2配置Grafana数据源2.2配置Grafana仪表板 3.AlertManager安装部署3.1部署alertmanager3.2告警邮件发送配置3.3测试邮件告警效果3.4自定义邮件告警…

昇思25天学习打卡营第9天|RNN实现情感分类

第十天的不小心把第九天的覆盖了。现在重新补上。 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。输入一句话&#xff0c;然后去语义理解这句话是褒义贬义还是中性的。不同的情感语境下理解的大基调是不同的。 RRN情感分类也是一个分类模型&#xff0c;是…

多态、接口、类练习题

代码&#xff1a; public static void main(String[] args) {Person2 personnew Person2("唐僧",new Horse());person.passRiver();person.onRoad();} 接口&#xff1a; interface Vehicles{public void work(); } lass Horse implements Vehicles{Overridepubli…

外星人入侵_计分

外星人入侵_计分 1添加Play按钮1.1创建Button类1.2在屏幕上绘制按钮1.3开始游戏1.4 重置游戏1.5 将Play按钮切换到非活动状态1.6隐藏光标 2提高等级2.1修改速度设置2.2重置速度 3计分3.1显示得分3.2创建记分牌3.3在外星人被消灭时更新得分3.4将消灭的每个外星人的点数都计入得分…

TortoiseSVN迁移到本地git

TortoiseSVN迁移到本地git 文章目录 TortoiseSVN迁移到本地git0 背景1 环境准备2 SVN库迁移到VisualSVN2.1 导出dump2.2 将dump文件灌入VisualSVN2.3 获取SVN仓最新URL 3 迁移到Git库中4 迁移分支到Git库 0 背景 之前在前东家工作都是采用git进行项目管理&#xff0c;高效便捷…

Redis实战篇(黑马点评)笔记总结

一、配置前后端项目的初始环境 前端&#xff1a; 对前端项目在cmd中进行start nginx.exe&#xff0c;端口号为8080 后端&#xff1a; 配置mysql数据库的url 和 redis 的url 和 导入数据库数据 二、登录校验 基于Session的实现登录&#xff08;不推荐&#xff09; &#xf…

Ruby、Python、Java 开发者必备:Codigger之软件项目体检

在编程的广阔天地里&#xff0c;Ruby、Python 和 Java 开发者们各自凭借着独特的语言特性&#xff0c;构建着精彩纷呈的应用世界。然而&#xff0c;无论使用哪种语言&#xff0c;确保项目的高质量始终是至关重要的目标。而 Codigger 项目体检则成为了实现这一目标的得力助手&am…

React——配置环境、ES6语法补充、Components

文章目录 架构设计前置知识DOM树 配置环境安装 create-react-app安装两个插件创建安装 nodejs仍然无法创建 下次需要创建新项目就使用这三行命令安装 bootstrap使用 bootstrap 包画图追求写 jsx短路原则绑定函数快捷键修改变量名箭头函数简写删除无用的文件写组件调用组件使用 …

人工智能与机器学习原理精解【11】

文章目录 广义线性模型基础理论泊松分布的基本公式一、基本公式二、泊松分布的特点三、泊松分布的应用场景四、泊松分布与二项分布的关系五、总结 泊松回归例子1例子背景模型设定数据收集模型拟合结果解释预测应用场景 泊松回归例子2背景数据准备模型设定模型拟合结果解释预测 …