新探索,XSKY构造全用户态SDS

2016年02月 · XSKY

众所周知,DPDK技术使在x86通用硬件环境下实现SDN和NFV成为了可能。网卡设备的PMD用户态驱动,消耗更少的CPU指令周期,减少内核内存拷贝负担,高效率实现TCP/IP协议栈的数据卸载,让通用的Linux和非ASIC硬件也能达到专用设备芯片的效能。更重要的是,SDN和NFV的功能实现不再紧耦合于操作系统内核,能够为计算虚拟化、数据库、中间件等其他通用应用与网络虚拟化结合部署提供更好的环境。

我们经过实践预研,证实了同样的机制能够应用于软件定义存储领域——构造全用户态的Ceph,实现一个“软件定义”的更优雅的架构。达成这个方向需要完成以下的工作:

1. 利用Intel开源SPDK包含的用户态NVMe驱动,为Ceph OSD的新存储引擎BlueStore添加PMD支持。(已完成)

2. 基于DPDK,构造全用户态的Ceph数据分布网络协议栈,提升数据引擎效率。(原型已实现,上半年发布)

3. 重构Ceph的线程模型,避免多余的数据拷贝和上下文切换,进一步减少降低硬件消耗,提高性能。(工作中)

Ceph的网络部分导入DPDK后,具备广泛的适用性,可以把整个ceph生态系统都用户态化。已有用户态客户端和服务器端都是使用同一个网络引擎(负责网络会话维护,分发),因此在用户态网络引擎完成后,客户和服务器两端都可以使用DPDK用户态网络驱动。当然,用户态网络也是基于TCP/IP协议标准的,因此不管是内核网络还是用户态网络都可以混合部署在同一个集群中互联互通,具备相当的兼容性与灵活性。

从整体的视角看,分布式存储本身的副本机制会产生大量的网络round trip与多次必要的硬盘交互,使得“时延”这一指标很难与传统存储解决方案匹敌。通过实现全用户态的SDS,会大幅度降低处理数据的CPU指令周期,优化整体IO路径,节省线程资源,可以期待在通用硬件的条件下存储软件达到不输于专用硬件的水平。

以往Ceph对计算资源的过多使用往往为用户所诟病,在使用DPDK和SPDK,达到“专核专用,0内存拷贝”的目标后,系统的CPU利用率将大幅度降低,并做到单节点支持更多的快速存储单元(如NVMe设备)和利用好更快速的网络基础设施(100Ge),打破各种瓶颈。用户也可以有充分的自由度实现所谓“融合存储”,即把业务应用和SDS部署整合在一起,使其相互感知,提升整体效能与业务体验。

全用户态SDS能够让存储软件和Linux操作系统内核解耦合,真正的让存储软件变成一个“更通用”的软件,适应应用所需要的各种内核需求和发行版环境,解除用户在底层软件上的锁定,能灵活的不断适配内核升级带来的最新硬件特性。在虚拟化场景下,配合 ovs-dpdk 方案,可以使得整个云平台的计算虚拟化,网络(SDN),存储(SDS)都可以运行在用户态,这些质变的都可以驱动整个云平台性能的飞跃。

关于此话题的细节,XSKY的CTO王豪迈在今年Austin的OpenStack峰会上提交了名为《Userspace only for Ceph: Boost performance from network stack to disk》的演讲专题。如果您认为这是SDS的发展方向,希望了解实现细节并与我们深入探讨,请为它投票:https://www.openstack.org/summit/austin-2016/vote-for-speakers/presentation/7347