Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >KVM 虚拟化服务实践

KVM 虚拟化服务实践

作者头像
itliusir
发布于 2021-07-30 06:41:26
发布于 2021-07-30 06:41:26
57300
代码可运行
举报
文章被收录于专栏:刘君君刘君君
运行总次数:0
代码可运行

摘要: KVM 虚拟化服务实践

kvm 虚拟化服务

1. 架构

2. 控制层

控制层负责对外提供虚拟机相关 API

例如在接收到创建虚拟机请求后,会封装为相应的任务,会存储在 ETCD 中。

2.1 调度

  • 节点选择
    1. 24 小时平均 cpubusy < 50
    2. 15 分钟平均单核负载 < 80
    3. 节点数超出预设值
    4. 可用内存小于 1GB
    5. 节点内存是否足够其使用(保留内存 + 当前节点任务队列的已需求内存 + 新来的节点内存 > 物理机总内存 + 超卖内存)
    6. 磁盘是否足够使用
  • 调度策略
    1. 按照主机域(zone)调度
    2. 扩容/批量多台机器选择在不同节点
  • 最优节点选择
    1. 选择物理机已存在实例较少的
    2. 较少的区间里去选择cpu空闲的

3. DB

ETCD 负责存储数据。

基于 etcd 实现了任务的状态机,也存储了部分计算后的结果对外提供查询。

4. Agent

订阅了 etcd ,例如在监听到删除虚拟机的任务后,负责执行对虚拟机的指令操作。

4.1 创建虚机

获取flavor配置(4c-4g-80g)

创建对应的disk

创建基础配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tree /data/kvm/instances/
---- uuid(实例id)
 ---- config_drive
   ---- openstack
     ---- latest
       ---- meta_data.json(password/id/name/secret)
       ---- network_data.json
       ---- user_data(init script)
  ---- disk
  ---- disk.config(mkisofs)
  ---- libvirt.xml(kvm instance xml)
---- _base(base os image)

构建 libvirt.xml

调用 kvm 的 go-libvirt 工具库方法 DomainDefineXMLFlags 实现对虚机的创建

4.2 销毁虚机

调用 kvm 的 go-libvirt 工具库方法 DomainDestroy 实现对虚机的销毁

5. OS 管理

每个机房会部署一个程序负责镜像的存储,会分发到不同的节点。

5.1 宿主机 os 管理

宿主机在第一台虚机创建时,会去当前所在机房拉取镜像,拉完缓存在宿主机本地磁盘中,当前宿主机的所有 vm 实例(进程) 只有一个基础镜像。

Qcow2(QEMU Copy On Write) 是格式镜像是 qemu 模拟器支持的一种镜像,和普通的 Raw 格式镜像相比,具有以下优点:

  • 更小的空间占用
  • 支持 Copy On Write.
  • 支持多级快照
  • 支持压缩
  • 支持 AES

当前采用的镜像格式就是 Qcow2,共享一个基础镜像,写时Copy On Write

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux虚拟化技术:Docker与KVM的原理与应用
Docker基于容器技术实现虚拟化。容器是轻量级虚拟化形式,借助操作系统层面的隔离机制,将应用及其依赖项封装在独立运行环境中。与传统虚拟机不同,容器共享宿主机内核,启动迅速且资源消耗低。
鸽芷咕
2025/05/31
1230
KVM详解,学习kvm系列文章
其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:
菲宇
2019/06/12
9.5K1
KVM详解,学习kvm系列文章
KVM 简介
KVM(Kernel-based Virtual Machine) ,基于内核的虚拟机,配合QEMU(处理器虚拟软件),需要CPU支持虚拟化技术(并且在BIOS里打开虚拟化选项),效率可达到物理机的80%以上。此外,它对SMP的支持很好。
为为为什么
2022/08/06
1.7K0
关于 KVM 虚拟化的二三事整理
在 KVM 虚拟化中,大家对 CPU mode 的关注相对较少,多采用默认值。其实,CPU mode 的选取对 VM 的影响却很大,如果考虑不周,可能会导致稳定性差,维护成本高,影响业务等一系列问题。本文从性能,热迁移,稳定性,应用移植四个角度对 CPU mode 进行分析。
高楼Zee
2020/12/29
4.5K0
关于 KVM 虚拟化的二三事整理
KVM虚拟化平台部署及管理
前言 KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发。2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中。本文介绍KVM虚拟化平台部署及管理。 KVM简介 KVM特点 KVM必须在具备Intel VT或AMD-V功能的x86平台上运行。KVM包含一个为处理器提供
小小科
2018/05/04
2.7K0
KVM虚拟化平台部署及管理
Cent os 7之KVM虚拟化基础管理
至此,命令行创建虚拟机就完成了,接下来使用手动更改配置文件的方式,克隆test1,生成新的虚拟机test2(在我博文前面的那个博文链接中有专用于克隆的命令工具的使用方法,这里只是为了来了解虚拟机的配置文件) 二、手动更改配置文件的方式,克隆web01,生成新的虚拟机web02
小手冰凉
2020/07/29
7550
Cent os 7之KVM虚拟化基础管理
centos中KVM虚拟化
1.确认 CPU 已经支持虚拟化,intel 的 CPU 虚拟化技术叫 vmx,AMD 的 CPU 叫 svm
@凌晨
2020/05/28
7650
KVM 虚拟化技术
1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器
惨绿少年
2018/03/30
6.1K0
kvm虚拟化管理平台WebVirtMgr部署-完整记录(2)
继上一篇kvm虚拟化管理平台WebVirtMgr部署-完整记录(1),接下来说说WebVirtMgr的日常配置:添加宿主机,创建虚机,磁盘扩容,快照等 具体操作记录如下: 一、配置宿主机 1、登录We
洗尽了浮华
2018/01/22
2.1K0
kvm虚拟化管理平台WebVirtMgr部署-完整记录(2)
使用kvm制作OpenStack平台Windows镜像
关于virtio: kvm因为使用了硬件虚拟化,所以其cpu方面的运行效率是很高的。不过,kvm在I/O虚拟化方面,传统的方式是利用QEMU纯软件的方式来模拟I/O设备, 这样每次虚机发起I/O请求的时候,KVM内核模块会捕获这次请求,然后处理后将其放入I/O共享页,并通知用户空间中运行的QEMU程序。 QEMU获得I/O操作,交由硬件模拟代码(Emulation)来模拟出本次I/O操作之后,将结果放回I/O共享页,同时通知KVM内核模块读取I/O共享页的操作结果,把结果返回给虚机。 由于这种方式每次I/O操作经过的路径很复杂,其效率很低。所以就提出了virtio这种方案,virtio其实就是一个运行于Hypervisor之上的api接口, 让客户机知道自己运行于虚拟化环境中,进行I/O操作的时候通过virtio与Hypervisor通信,从而是虚机有更好的性能。
用户9949933
2023/02/24
3K0
统信服务器操作系统V20 1060e【KVM 虚拟化】
KVM(Kernel-based Virtual Machine)是一个基于Linux内核的开源虚拟化解决方案,它允许在单个物理服务器上运行多个虚拟机。每个虚拟机都可以运行自己的操作系统和应用程序。KVM利用了Linux内核的虚拟化功能,通过将物理主机的资源(如CPU、内存和网络接口)动态分配给虚拟机,实现了对虚拟机的隔离和资源管理。
Kevin song
2024/04/28
1K0
统信服务器操作系统V20 1060e【KVM 虚拟化】
kvm虚拟化进阶 原
前面学习了kvm虚拟化的一些基础操作,本节整理一下kvm快照、扩容等等相关的内容。
阿dai学长
2019/04/03
1K0
KVM 虚拟机配置笔记
虚拟化是构建云计算基础架构不可或缺的关键技术之一,云计算的云端系统,其实质上就是一个大型的KVM分布式系统,虚拟化通过在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的终端加入云端的分布式系统.比起直接使川物理平台,虚拟化在资源的有效利用,动态调配和高可靠性方而有着巨大的优势.利用虚拟化,企业不必抛弃现有的基础架构即可构建全新的信息基础架构,从而更加充分地利用原有的IT投资,可以说虚拟化是云计算不可缺少的重要组件.
王 瑞
2022/12/28
7930
KVM+Qemu+Libvirt实战
上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚拟机并管理。 kvm是用来虚拟化或者说模拟CPU、内存等硬件的。 QEMU只是用来虚拟化硬盘的 libvirt提供了整个虚拟机的管理,比如说虚拟机的启动,停止,创建,删除等等。 其实KVM+Qemu+Libvirt就是模拟了一个VMWare软件 环境:     宿主机:ubuntu16.04的server版  
用户1195962
2018/01/18
3.6K0
KVM+Qemu+Libvirt实战
KVM虚拟机静态迁移
KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor,KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。
机械视角
2019/10/23
1.2K0
裸金属服务器kvm虚拟化安装win10
和普通的 VPS 相比,裸金属服务器属于物理服务器,我的数据和其他用户数据做到了物理隔离,同时服务器本身是支持二次虚拟化的。
宋天伦
2020/07/16
7.4K0
Linux 性能调优之虚拟化调优
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/02/27
4090
Linux 性能调优之虚拟化调优
KVM 虚拟化
  基于内核的虚拟机 Kernel-based Virtual Machine(KVM)是一种内建于 Linux® 中的开源虚拟化技术。具体而言,KVM 可帮助您将 Linux 转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。
zhonger
2022/10/28
1.2K0
OpenEuler 部署 KVM 虚拟化制作openstack镜像
内核模块导出了一个名为/dev/kvm的设备,该设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间
Kevin song
2023/12/04
1.8K0
OpenEuler 部署 KVM 虚拟化制作openstack镜像
KVM虚拟机安装、管理
KVM全称Kernel-based Virtual Machine,翻译过来是基于内核的虚拟机,实际它是Linux内核的一个模块。该模块将Linux变为一个Hypervisor,由Quramnet开发,支持x86、s390、Powerpc等CPU。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
用户8704835
2021/06/08
1.1K0
相关推荐
Linux虚拟化技术:Docker与KVM的原理与应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档