弹性块存储(EBS)场景下的VirtIO实现
虚拟化是IaaS云计算技术的根基,虚拟机对EBS存储有刚需 现有的I/O虚拟化方案有以下三种
- 全虚拟化模拟I/O设备:完全由QEMU纯软件模拟的设备,性能较差;
- 半虚拟化模拟I/O设备:使用VirtIO框架实现设备模拟,绕过KVM内核模块,提高性能;
- PCI设备透传:性能最优,几乎无性能损耗
对比虚拟化和PCI设备透传,VirtIO是当前业界大云厂商更为通用的方案。常规情况下,计算节点的软件架构如下图所示:Openstack-Cinder为虚拟机提供弹性块存储服务(EBS),同时可对接开源分布式存储系统Ceph,将其作为EBS的存储后端。
常规计算节点
以上架构中,VirtIO前后端和Ceph的RBD Driver都跑在宿主机上,消耗通用算力资源。于是业界开始在VirtIO方案中引入DPU,卸载VirtIO后端
DPU卸载示意
DPU加速时代的标准框架—vDPA
全卸载和vDPA方案对比
Virtio卸载目前有两种实现方案:全卸载和vDPA。
其中,全卸载方案是将VirtIO后端全量硬化实现,vDPA方案则是解耦了数据路径与控制路径,仅硬化实现数据路径后端。
我们重点看下vDPA(Virtio Data Path Acceleration),vDPA是一种基于Virtio卸载的虚拟I/O路径加速方案,它由Redhat提出,在2020年被并入Linux内核主线。
vDBA方案主要解耦了VirtIO前后端间的数据路径与控制路径,将数据路径的后端(上图的“数据后端”)卸载到物理网卡中,将控制路径的后端(上图中的“控制后端”)保留在内核或DPDK中。
vDBA方案集成了VFIO方案的高性能以及VirtIO的灵活性和广泛兼容性,具备以下优势:
- 不额外占用宿主机计算资源的前提下,实现虚拟I/O路径零损耗
- 控制面可由厂商定义,大大简化了网卡控制面的适配工作;
- 数据面遵循VirtIO标准,具备普适性,能屏蔽底层硬件;
- 支持虚机热迁移
相比于全卸载方案,vDPA方案可以认为是未来的方向,它不仅能给虚拟机用,还能给容器以及裸金属服务器用,是各个云厂商的理想状态。
基于vDBA方案卸载VirtIO数据后端到DPU网卡
当我们引入DPU后,可将VirtIO后端卸载到DPU卡上,如下图所示:
转载链接:
https://zhuanlan.zhihu.com/p/591776330