【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《FT-2000_64_KVM虚拟化系统解决方案--KVM虚拟化》

1 介绍

  本文主要介绍基于硬件虚拟化的全虚拟化解决方案(KVM)以及基于FT-2000+/64服务器搭建KVM虚拟化环境。

2 KVM简介

  KVM,即基于硬件虚拟化的全虚拟化解决方案。在kvm架构中,虚拟机的实现为常规的Linux进程,每一个vcpu对应一个宿主机的线程。详见参考地址:https://baike.baidu.com/item/KVM/522955?fr=aladdin

image.png

  KVM虚拟机主要有以下几个特性,包括内存管理、存储、设备驱动程序、可伸缩性、动态迁移等,详见参考地址:https://blog.csdn.net/weixin_67901533/article/details/124163922

2.1 KVM模块

  目前,KVM支持多种处理器平台,它支持最常见的的Intel/AMD的X86和X86_64平台,也支持PowerPC、ARM等平台。详见地址:
https://www.cnblogs.com/youcoding/p/15330714.html

  KVM仅支持硬件辅助的虚拟化,所以打开并初始化系统硬件以支持虚拟机的运行,是KVM模块的职责所在。KVM模块会创建一个/dev/kvm设备,并等待来自用户空间的命令。这个设备就是与用户空间QEMU进行交互的设备。

  除了CPU虚拟化外,内存虚拟化也是由KVM模块进行管理,但是,外设的模拟一般不由KVM负责。而是由用户空间的QEMU负责。

2.2 QEMU用户态设备模拟

  QEMU原本就是一个开源的虚拟机软件项目,而不是KVM虚拟化软件的一部分。与KVM不同,QEMU最初实现的虚拟机是一个纯软件模拟实现,通过二进制翻译来实现虚拟化客户机中的CPU指令模拟,所以性能比较低。但是,其优点是跨平台。详见参考地址:
https://www.cnblogs.com/youcoding/p/15330714.html

  QEMU通过与KVM的密切结合,从而极大地提高了虚拟机的性能。总之,QEMU既是一个功能完整的虚拟机监控器,也在QEMU/KVM的软件栈中承担设备模拟的工作。

2.3 KVM上层管理工具

  下面是当下kvm/qemu最流行的几个管理工具,主要包括libvirt、virsh、virt-manger、OpenStack,各管理工具的特点可以见如下参考地址:

https://www.cnblogs.com/youcoding/p/15330714.html

3 搭建KVM环境

3.1 硬件环境

  飞腾FT-2000+/64机器两台用来搭建KVM环境(后面作为迁移时使用),硬件配置:

  主频:2.2 GHz

  内存条: 8*16GB DDR4(三星 2Rx8 PC3-1280P-11-11-11)

  操作系统:CentOS7- arm64

  内核:linux-4.19.1编译

  文件系统:ext4

  硬盘:1T 希捷7200转机械硬盘(至少分为两个分区)

  网卡: intel 82745L pcie网卡

  飞腾FT-1500A/16机器一台用来编译内核和后面作为动态迁移时的nfs服务器用,硬件配置:

  主频:1.5 GHz

  内存条: 2*4GB DDR3

  操作系统:麒麟操作系统4.0.2

  文件系统:ext4

  硬盘:1T 希捷7200转机械硬盘(至少分为两个分区)

  网卡: intel 82745L pcie网卡

3.2 虚拟化相关内核配置

  内核移植、系统移植请参考《飞腾FT-2000+/64系统开发指南》文档。

[\*] Virtualization ---\>

[\*]  Kernel-based Virtual Machine (KVM) support

      <M>  Host kernel accelerator for virtio net

      <M>  vhost virtio-vsock driver

      [*]  Cross-endian support for vhost

      kvm模块、新的vhost支持以及virtio支持,都选上。

Device Driver----->

      [*] Virtualization drivers ----

      [*] Virtio drivers --->

<*>  PCI driver for virtio devices

      [*]   Support for legacy virtio draft 0.9.X and older devices

      <*>  Virtio balloon driver

      <M>  Virtio input driver

      <*>  Platform bus driver for memory mapped virtio devices

      [*]   Memory mapped virtio devices parameter parsing

      虚拟化驱动,virtio驱动支持,都选上。

SCSI device support------>

[*] SCSI low-level drivers --->

<M>  virtio-scsi support

virtio-scsi设备驱动选上。

[*] Block devices ---\>

      <M>  Virtio block driver

      [*]   SCSI passthrough request for the Virtio block driver

      virtio-block设备驱动选上。

 network driver support--------\>

      [*]  Network core driver support

      <*>   Universal TUN/TAP device driver support

      <M>   Virtio network driver

      TAP设备和virtio网卡驱动选上。

 Character devices --->

      <*> Virtio console

      virtio 串口选上。

 Graphics support --->

      <M> Virtio GPU driver

      virtio-gpu支持选上。

 [*] IOMMU Hardware Support --->

      Generic IOMMU Pagetable Support --->

                    [*] ARMv7/v8 Short Descriptor Format

             [*]  IOMMU passthrough by default

      [*]  ARM Ltd. System MMU (SMMU) Support

      [*]  ARM Ltd. System MMU Version 3 (SMMUv3) Support

      选上对IOMMU的支持。

3.3 KVM虚拟化环境搭建结果验证

  使用dmesg相关命令,验证KVM环境搭建成功。

image.png


推荐阅读

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们



版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。


飞腾开发者
6 声望3 粉丝

飞腾开发者技术小助手,定期分享飞腾技术文档,助力开发者打怪升级。更多材料获取:[链接]