网络存储方式有哪些_什么是分布式存储

2025-01-0411:20:05营销方案1

封图:CSDN下载自视觉

在数字化时代,数据的式增长给存储系统带来了前所未有的挑战。面对海量数据的存储需求,分布式存储以其天然的架构优势在应对这一挑战中扮演着重要角色。在这波数据洪流中,分布式存储的性能也面临着全新的考验。

分布式存储,本质上是一种网络存储,其性能在很大程度上受网络的影响。由于各存储节点通过网络互联构建为集群,向外部提供更加可靠的高性能服务,因此其工作原理决定了在高性能场景下,传统TCP网络很容易形成网络瓶颈。尤其是在分布式存储中最为人诟病的IO延时方面,网络部分的开销不容忽视。

为了突破这一瓶颈,绕过CPU实现高性能传输的RDMA网络成为了分布式存储的不错选择。RDMA(Remote Direct Memory Access)可以简单理解为网卡完全绕过CPU实现两个服务器之间的内存数据交换。作为一种硬件实现的网络传输技术,它能够大幅提升网络传输效率,特别适合于分布式存储、分布式数据库等网络IO密集的业务。

最初,RDMA主要在IB(Infiniband)上实现,但因其新的硬件技术栈成本较高,主要应用于HPC(高性能计算)等少数场景。随着技术的发展,RDMA现在能够在以太网上实现。当前,RDMA在以太网上的传输协议是RoCEv2,该协议相比传统的TCP协议更为快速、占用CPU资源更少。

要发挥RDMA真正的性能,需要为其搭建一套不丢包的无损网络环境。解决网络拥塞的关键在于支持ECN等特性的交换机。既然RDMA是一个硬件技术方案,而且在分布式存储中又能快速地解决网络高延时等问题,为何在实际应用中并不能直接万无一失地解决问题呢?我们来简单聊聊RDMA技术实践过程中可能遇到的问题。

RDMA的使用需要应用程序的代码配合,即需要进行RDMA编程。RDMA操作的语义更贴近硬件实现的语义形态,与传统的Socket编程有很大的差别。RDMA编程是异步的,而传统的Socket编程是同步的,这导致开发者需要进行较大的改造或编写全新的RDMA原生应用程序。

在通信模块中对接完RDMA后,我们需要进行性能测试以验证其效果。以分布式存储中的RPC框架为例,我们实现了一个基于C++的RPC框架,支持传统TCP和RDMA两种传输方式。通过对比测试我们发现,RDMA的方式在低深度场景下能获得更好的性能。然而在实际业务测试中,RDMA的表现并没有预期那么优异,主要原因是线程切换、数据复制等操作以及IO路径上其他模块引入了额外的开销。

为了更好地发挥RDMA的性能优势,我们针对分布式存储系统进行了RDMA适配和优化。我们设计并验证了面向RDMA的高性能分布式存储框架和实现方案,并在深信服企业级分布式存储EDS中进行了应用。EDS针对RDMA网络和NVMe SSD设计了低延迟高并发的存储架构,并对IO栈上各模块进行了相应的优化设计。

在SRPC通信模块的设计中,我们采用了单双边结合的传输方式来适应各种大小的请求。这种方式不仅灵活,而且实现了应用Buffer到RDMA协议Buffer之间的数据零拷贝,进一步降低了开销和延迟。SRPC还设置了两种模式进行请求的检测和处理,根据负载自动在性能模式和经济模式之间切换,以达到更好的性能和资源利用。

  • 版权说明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。