软件架构
开源SPDK整体架构如图1所示。
SPDK整体上从上到下分为应用协议层、存储服务层、块存储设备层、驱动层。
- 应用协议层有网络存储NVMe-oF、iSCSI Target以及虚拟化vhost、vfio-user等协议。
- 存储服务层有分区、OCF缓存、blobfs文件系统等服务。
- 块存储设备层抽象了通用的块存储设备bdev,用来支持后端不同的存储方式,例如NVMe,NVMe-oF,Ceph RBD等,并支持自定义的存储设备。
- 驱动层是SPDK实现的用户态驱动。
开源SPDK的组件较多,本手册主要介绍加解密、压缩和CRC特性。加解密、压缩都位于存储服务层。
- 加解密模块位于块存储设备层,利用OpenSSL中的加密算法对用户的数据进行加密,保护用户的数据安全。提供的算法包括: 对称加密(AES,SM4),非对称加密(RSA)。用户还可以对这些算法设置KAE加速引擎,从而达到提升加解密性能或降低CPU消耗的效果。
- 压缩是使用压缩算法对用户的数据进行压缩,能够节省存储空间,如果需要经过网络传输的话也能减少网络传输的数据量。压缩使用的是DPDK库中的压缩驱动,如果需要进行KAE卸载,需要设置为zlib驱动,具体使用方式参考使用SPDK压缩特性。
- CRC特性,是一种用于检测数据传输或存储中错误的常见算法。它通过对数据块执行特定的数学运算来生成一个短的校验值(CRC值),用于对比数据完整性。在SPDK中主要用于:数据协议(用于NVMe-oF通信协议,以确保信息的正确传递),数据存储(用于检测磁盘中的静默错误)等。
父主题: 特性描述