【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《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
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环境搭建成功。
推荐阅读
欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料
如开发者在使用飞腾产品有任何问题可通过在线工单联系我们
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。