博客

ZStack 云 5.0.0 版本支持下一代高性能全闪存分布式存储。本文从技术实现的角度探讨了 ZStack 云 Vhost 主存储集成架构。

返回列表

揭秘 ZStack 云 Vhost 主存储架构:实现每磁盘百万 IOPS 和 100 微秒延迟的完美和谐

ZStack Cloud 5.0.0 版本支持下一代高性能全闪存分布式存储。本文从技术实现的角度探讨了 ZStack Cloud Vhost 主存储集成架构。
引言
随着人工智能的兴起,企业对数据存储系统的需求已经超越了基本的容量和稳定性,更加注重性能、高并发处理能力和灵活的可扩展性。这一点在金融、医疗和制造业等面临前所未有的数据存储压力的行业中尤为明显。
以稳定性著称的金融行业,对其应用系统的性能也有严格的要求。例如,交易、风险控制和资产管理等典型业务场景,在处理大规模并发和实时数据分析时,面临存储性能方面的新挑战,尤其是在带宽和延迟方面,如当前互联网业务操作中所见。
在医疗行业,超过80%的医疗存储数据来自快速增长的医疗影像数据,年增长率为30-40%。医疗机构还被要求至少保留30年的住院电子病历和至少15年的门诊电子病历。此外,不同的临床部门对数据存储有自己的特定时间要求,这提高了对现有存储架构的高标准。
工业4.0对现代制造业产生了巨大影响,特别是在MES(制造执行系统)等实时业务场景中。整个生产线严重依赖存储性能,任何超出可接受范围的延迟都可能导致生产事故,直接影响企业发展。
传统的存储解决方案,如SAN,在处理复杂和高频率数据时,往往会遇到性能瓶颈、高延迟和扩展困难,这阻碍了用户业务的发展。为了突破这一困境,基于vhost-user协议的高性能全闪存分布式存储系统应运而生。该系统以其创新的设计理念和先进的技术特性,为金融、医疗和制造业等行业提供了高性能、可扩展且成本效益高的解决方案。
技术原理
主流的virtio解决方案是专为虚拟化环境设计的设备模型,为虚拟I/O设备提供标准接口和实现。virtio驱动程序旨在最小化宿主后端操作(vmexit)以提高I/O效率。尽管与纯虚拟化解决方案相比,virtio已经得到了显著优化,但在QEMU IO线程中的I/O处理仍然效率低下。以具有文件后端的virtio-blk为例,其I/O路径涉及:
这条路径涉及两次宿主用户空间和内核空间之间的上下文切换,增加了延迟。
virtio解决方案
vhost技术将virtio设备的后端数据处理移出QEMU进程,避免了QEMU内部的状态切换和系统调用。它直接调用宿主上的设备驱动程序(例如块设备读写或网络发送/接收)来执行实际的I/O操作,大大提高了后端性能。
作为高性能存储的核心技术之一,vhost-user协议实现了用户空间应用程序与虚拟机之间的直接数据传输,显著减少了内核与用户空间之间的上下文切换,有效降低了CPU中断处理开销,提高了整体性能。与传统的virtio相比,vhost-user简化了I/O路径:
vhost-user解决方案
作为vhost的用户空间实现,vhost-user通过Unix套接字与QEMU进程通信以获取virtqueue配置信息和内存布局。然后它使用mmap在QEMU和来宾之间实现共享内存通信。这种机制允许宿主上的用户空间应用程序(如存储网关)直接访问virtio设备的virtqueue,而无需通过其他队列,从而显著提高了I/O性能。
技术特性
然而,仅依赖vhost-user协议还不足以实现单盘百万级IOPS和亚百微秒延迟。为此,ZStack Cloud实现了几项关键技术:
无锁架构
通过使用ID分片将I/O任务分配到不同的处理通道,实现了资源分片,并构建了无锁架构,有效降低了I/O延迟。ZStack Cloud采用了完全用户空间的无锁数据通道,结合RTC I/O处理模型。这实现了端到端无上下文切换,无锁零中断,全用户空间网络I/O处理,以及核心绑定和异步轮询策略。这种设计将软件栈延迟最小化到20-40μs,与典型的400μs传统分布式I/O栈相比有了显著改进。它充分发挥了新一代硬件和网络技术的能力。
全栈内存零拷贝
ZStack Cloud通过使用零拷贝技术优化数据传输,避免了用户空间和内核空间之间的多次数据拷贝。数据直接从发送者的缓冲区传输到接收者的缓冲区,无需CPU干预,大大减少了数据处理时间和系统资源消耗。在大页共享内存和RDMA网络的支持下,从虚拟机I/O内存到存储网关和OSD实现了零拷贝,同时集中管理大页内存以确保内存分配考虑同一NUMA节点内的NUMA访问性能。
降低GuestOS后端通知开销
在存储网关中,vhost后端使用轮询机制,避免了虚拟机每次发生I/O操作时触发后端存储,从而提高了系统性能。
多核并发
ZStack Cloud利用现代多核CPU

联系我们