SPDK on Windows (Experimental)

作者:Nick Connolly
文章来源:DPDK与SPDK开源社区

重磅消息:Windows和SPDK实现“世纪同框”了!在Windows系统上运行SPDK或将成为现实。

概况

在典型的数据中心中,大部分服务器将运行Microsoft Windows。这对扩展SPDK部署来说,蕴藏着巨大的开发潜力。由于SPDK使用的是POSIX API,基于SPDK的应用程序尚且无法在Windows上运行。为了解决这一问题,在SPDK的主要分支中引入一个简单的POSIX仿真层,以便在Windows上使用,从而实现与MinGW的交叉编译。

这会增加什么价值呢?下面列举了一些潜在用例:

  • 通过本地NVMe-oF启动器提供对存储的访问。Windows没有内置的驱动程序,也没有任何纯软件解决方案。
  • 提供对NVMe存储的快速访问,避免内核瓶颈。
  • 构建iSCSI和NVMF存储目标。
  • 集成到运行Windows Containers的环境中。

这是如何实现的呢?

提高可移植性

SPDK旨在能移植到不同的平台上,但是通过关注Linux和FreeBSD,一些小的假设已嵌入了代码中。例如:

  • 在Windows上,long 是32位,而在Linux和FreeBSD上是64位。需要改变一些分配和转换,printf 必须使用 PRI64x 来打印 64 位值。
  • 如果相邻定义的基本类型不同,位域的处理方式也会不同。
  • POSIX mutex在使用前必须初始化。

只需作出极少的更改,这证明了SPDK代码的质量很高。

Windows平台开发套件

MayaData已启动了一个名为Windows 平台开发套件(WPDK)的新项目,提供在Windows上运行SPDK所需的POSIX功能。WPDK实现了一组头文件和一个专门满足SPDK需求的轻量级库。

该项目的范围仅限于SPDK支持。与Cygwin不同的是,它并非旨在成为通用的POSIX仿真库。它的功能尽可能地与现有的Windows语义相匹配,并尽量减少仿真。其目的是成为一个具有产品质量的软件层,能像本地代码一样运行,可以进行独立测试。

包含了构建SPDK所需的支持程序包(如libcunit),以简化WPDK的使用。

生成文件更改

SPDK makefiles 作出了一些战略性改变,扩展为:

1)用与DPDK类似的方式将WPDK合并到内部版本中(’—with-wpdk =

‘)
2)按照Windows的要求,生成以’.exe’结尾的可执行文件。
3)处理MinGW的特定属性,例如强制执行’-mstack-protector-guard = global’,防止出现堆栈保护错误。

现状

目前,该项目处于初期试验阶段:

  • 除需要libcurses的spdk_top外,所有SPDK源代码都可以编译。
  • 所有SPDK单元测试均通过。
  • iSCSI目标可以为存储服务。
  • NVMe over TCP目标可以为存储服务。
  • SPDK堆栈可以连接到物理NVMe磁盘并发出I / O。
  • WPDK的大部分功能都有单元测试。

未来发展方向

其目的是追求项目的产品质量,充分融入到SPDK CI和测试环境中。

入门指南

通过以下链接获取入门指南:
https://github.com/wpdk/wpdk/blob/master/doc/build-spdk.md

特别鸣谢

感谢SPDK社区的支持和鼓励,让这个“疯狂的想法”能在短期内变成现实中的一次尝试。

Windows平台开发工具包由Data Agility公司MayaData开发并提供。

部分代码基于DPDK社区所做的工作,以添加对Windows的支持。

原文作者:Nick Connolly


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/25332.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于21-09-11
0