前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KVM 虚拟化服务实践

KVM 虚拟化服务实践

作者头像
itliusir
发布2021-07-30 14:41:26
5140
发布2021-07-30 14:41:26
举报
文章被收录于专栏:刘君君刘君君

摘要: KVM 虚拟化服务实践

kvm 虚拟化服务

1. 架构

kvm-architecture
kvm-architecture

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
复制
# 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

libvirt-cpu
libvirt-cpu
libvirt-devices
libvirt-devices

调用 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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kvm 虚拟化服务
    • 1. 架构
      • 2. 控制层
        • 2.1 调度
      • 3. DB
        • 4. Agent
          • 4.1 创建虚机
          • 4.2 销毁虚机
        • 5. OS 管理
          • 5.1 宿主机 os 管理
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档