SmartX分享:NVMe-oF 介绍、SMTX ZBS 如何选择高性能场景解决方案与如何实现

news2025/5/22 20:03:35

目录

  • 背景
  • 什么是 NVMe-oF
    • ZBS Access
    • iSCSI 与 iSER
    • NMVe-oF 介绍
      • NVMe
      • NVMe-oF
      • NVMe-oF 承载网络(数据平面)
    • ZBS NVMe-oF 实现
      • ZBS 接入策略
      • ZBS 接入点分配策略
      • 性能测试
  • 为什么要支持 RoCE
  • 引用

背景

前几篇文章,我们认识到了 SmartX 公司产品 SMTX ZBS 的一些内容,如iSCSI和NFS的路径、EC与多副本、RDMA等。
其中有提到,ZBS 在存算分离的架构下,提供了2种不同的数据接入协议,iSCSI 和 NMVe-oF 。当然,在接入 Access 之后,元数据管理,ZBS 内部的数据操作没有区别。
那么这篇文章,就介绍一下什么是 NVMe-oF,以及 ZBS 为何要支持 RoCEv2。

什么是 NVMe-oF

简单来说,NVMe-oF 就是在 RDMA 上跑 NVME 流量,提供高性能的工作负载。

ZBS Access

Access 是 ZBS 接收 NFS Client、iSCSI Initiator、NVMF Initiator 的读写请求的组件。它提供统一的标准存储协议接口,负责将不同的存储协议接收并处理成统一的逻辑,交由 ZBS 内部真实存储数据的 Extent 工作。
Access 是内部存储对象(Volume)与外部存储对象(iSCSI LUN / NFS File)的转义的一个工作。

在https://blog.csdn.net/Tassel_YUE/article/details/144427581 这边文章中,详细讲述了基于 iSCSI 的数据接入流程。可以回顾,本文不赘述。
最初的版本,ZBS 仅提供iSCSI和NFS两种接入协议,如今的新版本已经支持 NFS、iSCSI、NVMe-oF、vHost 四种接入协议。

iSCSI 与 iSER

iSCSI 是使用最广泛的最主流的接入方式之一。
但性能层面,iSCSI 的设计原因,导致它的速率不能批能如今极为高超的硬件速率。
iSER 是在 RDMA 之上跑iSCSI,是革新,但基于iSCSI,仍然无法释放性能。
所以 ZBS 选择支持NVMe的 NVMe-oF 作为支持的 RDMA 模式协议。

NMVe-oF 介绍

NVMe

NVMe 是NVM Express 协议规范,定义通过PCIe总线和存储通信。
NVMe 支持65535 个I/O队列,每个队列支持65535条命令(队列深度)。提供了更高的数据吞吐与更低的通信延迟。

NVMe-oF

NVMe-oF 全称是 NVMe over Fabrics。将原本DAS内部的NVMe的效果,放大到了SAN中。

DAS 直接存取网络;SAN 网络附加存储。具体可以自行搜索。

NVMe-oF 定义了使用多种通用的传输层协议来实现 NVMe 远程连接的能力。
在这里插入图片描述

NVMe-oF 承载网络(数据平面)

NVMe-oF 的承载网络,实现方法有:FC、RDMA 和 TCP 。
ZBS 选择支持 RDMA/RoCE v2 和 TCP。提供了很好的客户个性需求适配性。

  • NVMe over FC:基于传统的 FC 网络(主机总线适配器 HBA 和光纤交换机构建的专有通信网络),与 FC-SAN(SCSI)可以同时运行在同一个 FC 网络中,最大化地复用 FC 网络基础环境,发挥 NVMe 新型协议的优势。常用于传统集中存储的升级改造。
  • NVMe over RDMA:通过远程直接内存访问技术,允许客户端程序远程访问存储系统的内存空间进行数据传输。具有数据零拷贝(不涉及网络堆栈执行数据传输)、Kernel Bypass(应用程序可以直接从用户空间执行数据传输,无需内核参与)、减少 CPU 资源消耗(应用程序可以访问远程内存,而无需在远程服务器中消耗任何 CPU Cycle)等特点。
    • InfiniBand - 通过 InfiniBand 网络使用 RDMA,在高性能计算 HPC 领域非常流行,与 FC 相似,需要专有的网络适配器和交换网络支撑。

    • RoCE - 全称 RDMA over Converged Ethernet,即通过以太网实现 RDMA,但需要专门的网卡硬件,目前有两个版本:RoCEv1 不可路由,仅可以在 2 层工作;RoCEv2 使用 UDP/IP,具有 3 层路由能力。
      ZBS 支持的是 RoCEv2。
      在这里插入图片描述

    • iWARP - 构建在 TCP/IP 之上。跟 RoCE 协议继承自 Infiniband 不同,iWARP 本身不是直接从 Infiniband 发展而来的。Infiniband 和 RoCE 协议都是基于 “Infiniband Architecture Specification”,也就是常说的 “IB 规范”。而 iWARP 是自成一派,遵循着一套 IETF 设计的协议标准。虽然遵循着不同的标准,但是 iWARP 的设计思想受到了很多 Infiniband 的影响,并且目前使用同一套编程接口。

  • NVMe over TCP:与前两种实现方式不同,该方案无需任何特殊的硬件要求,基于通用标准以太网环境。成本低是该协议的优势,缺点是需要更多的 CPU 资源参与数据处理,受限于 TCP/IP 协议,在数据传输中相对 RDMA 会引入更多的延迟。
    ZBS 也支持 NVMe-oF over TCP。

ZBS 不支持 FC 和 IB,原因是依赖专有网络,与产品定位冲突。不支持 iWARP 是相比于 RoCE 来看,RoCE 的发展前途更好。
不过 RoCE 需要无损网络的环境(不能有丢包PSN和NACK重传)。

ZBS NVMe-oF 实现

ZBS 支持 NVME-oF over RoCEv2 和 NVMe-oF over TCP 两种。

NVMe-oF 协议本身与 iSCSI 协议有很多相似的地方:

  • 客户端标识为 initiator
  • 服务端为 Target
  • NVMe-oF 协议中使用与 iSCSI IQN 近似的 NQN 来作为协议通讯双方的标识。

同时,NVMe-oF 定义了 Subsystem(子系统,相当于 SCSI 体系下的 Target)和 Namespace(命名空间,类似于 SCSI 体系下的 LUN)专有标准。

相比于 iSCSI 通过 initiator + Target 的数据链路控制,NVMe-oF 可以支持 initiator + Namespace 这样更小的链路控制粒度。NVMe-oF 在路径策略选择上(协议原生支持 Multipath)是通过 ANA(Asymmetric Namespace Access)机制指定 Target 链路优先级,再由客户端结合优先级与自身的链路状态探测结果选择 I/O 具体路径。

ANA 状态包括:Optimized 最优 / Non-Optimized 次优 / Inaccessible 不可达 / Persistent Loss 失去连接 / Change 状态变更

ZBS 会将所有的可用链路设置为 OP(最优链路)和 Non-OP(次优链路)两种状态,其他状态为发生异常或变化时由 Driver 自动标记。对于每个 initiator + Namespace 的组合,仅返回 1 个最优接入点2 个次优接入点。在最优接入点可用时,客户端将仅通过最优接入点访问数据,在异常时选择 2 个次优接入点中的一个进行访问(出于简化安全性处理的考虑,部署时会要求客户端配置为 AB 模式,即使 2 个次优接入点是等价的,也不会进入 AA 模式,同时从两个接入点中下发 I/O)。这样既可保持各个接入点的负载基本均衡,同时又尽可能发挥多个接入点的处理能力。

在这里插入图片描述

ZBS 接入策略

  • 继承策略,同一客户端访问同一 Subsystem 中的所有 Namespace 使用同一接入点。
  • 均衡策略,保证同一 Namespace Group 中的 Namespace 尽量使用不同接入点。

ZBS 接入点分配策略

  • 客户端视角,允许利用多个存储接入点的处理能力。
  • 客户端视角,保证不同客户端的公平性,避免占用所有存储接入点的处理能力。
  • 存储接入点视角,保持各个接入点的负载基本均衡,同时又尽可能发挥多个接入点的处理能力。

性能测试

见引用部分 的 第二篇引用内容

为什么要支持 RoCE

我们都知道,FC SAN 的核心是 FC 交换机。但FC 交换机实际上一家独大,其他厂商大部分均 OEM 该厂商的设备。而针对如今的信创转型需求,对于高性能存储网络传输方案的解决方案就受制约很多。

NVMe-oF over RoCE 的方案,既是基于通用以太网建立的(仅需要网卡是特殊的)、性能又不逊色于 IB。

具体的内容可以参考 引用的 第三篇文章

引用

SmartX 分布式存储产品组合介绍

基于 SmartX 分布式存储的 iSCSI 与两种 NVMe-oF 技术与性能对比

SAN 交换机“卡脖子”?以 RoCE+软件定义存储同时实现信创转型与架构升级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化-1. 折线图

目录 1. 折线图适用场景分析 1. 1 时间序列数据展示 1.2 趋势分析 1.3 多变量比较 1.4 数据异常检测 1.5 简洁易读的数据可视化 1.6 特定领域的应用 2. 折线图局限性 3. 折线图代码实现 3.1 Python 源代码 3.2 折线图效果(网页显示) 1. 折线图…

python网络框架——Django、Tornado、Flask和Twisted

Django、Tornado和flask是全栈网络框架,而Twisted更专注于网络底层的高性能封装,不提供HTML模版引擎等界面功能,因此不能称为全栈框架。 1、Django 发布于2003年,是当前python世界里最负盛名且最成熟的网络框架。相较于其他web框…

Flash语音芯片相比OTP语音芯片的优势

Flash语音芯片和OTP语音芯片是两种常见的语音解决方案,在各自的应用领域中发挥着重要作用。本文‌将介绍Flash语音芯片相比OTP(One-Time Programmable)语音芯片的显著优势‌。 1‌.可重复擦写‌:Flash语音芯片的最大特点是支持多次编程和擦除&#xff0c…

门店全域推广,线下商家营销布局的增量新高地

门店是商业中最古老的经营业态之一。很早就有行商坐贾的说法,坐贾指的就是门店商家,与经常做商品流通的「行商」相对应。 现在的门店经营,早已不是坐等客来,依靠自然流量吸引顾客上门,大部分的门店经营与推广都已经开…

NX系列-使用 `nmcli` 命令创建 Wi-Fi 热点并设置固定 IP 地址

使用 nmcli 命令创建 Wi-Fi 热点并设置固定 IP 地址 一、前言 在一些场景下,我们需要将计算机或嵌入式设备(例如 NVIDIA Orin NX)转换为 Wi-Fi 热点,以便其他设备(如手机、笔记本等)能够连接并使用该设备…

[react] <NavLink>自带激活属性

NavLink v6.28.0 | React Router 点谁谁就带上类名 当然类名也是可以自定义 <NavLinkto{item.link}className{({ isActive }) > (isActive ? 测试 : )}>{item.title}</NavLink> 有什么用?他会监听你的路由,刷新的话也会带上激活效果

【LC】100. 相同的树

题目描述&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&…

代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II

93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…

Hive是什么,Hive介绍

官方网站&#xff1a;Apache Hive Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和查询存储在HDSF上的大规模数据‌。Hive通过将结构化的数据文件映射为数据库表&#xff0c;并提供类SQL的查询功能&#xff0c;使得用户可以使用SQL语句来执行复杂的​MapReduce任…

AI智能决策赋能服装零售 实现精准商品计划与供需平衡

在服装这个典型的散对散供需模型中&#xff0c;库存问题一直是零售商面临的重大挑战。如何精准预测市场需求&#xff0c;实现供需平衡&#xff0c;成为摆在零售商面前的一道难题。然而&#xff0c;随着智能决策系统的应用&#xff0c;这一切正在悄然改变。 在这个信息爆炸的时代…

RadiAnt DICOM - 基本主题 :从 PACS 服务器打开研究

正版序列号获取&#xff1a;https://r-g.io/42ZopE RadiAnt DICOM Viewer PACS 客户端功能允许您从 PACS 主机&#xff08;图片存档和通信系统&#xff09;搜索和下载研究。 在开始之前&#xff0c;您需要确保您的 PACS 服务器和 RadiAnt 已正确配置。有关配置说明&#xff0c…

VR虚拟展馆如何平衡用户隐私保护与数据收集?

在虚拟现实&#xff08;VR&#xff09;虚拟展馆的设计和运营中&#xff0c;用户隐私保护与数据收集之间的平衡是一个至关重要的议题。 接下来&#xff0c;由专业从事VR虚拟展馆制作的圆桌3D云展厅平台为大家介绍一些策略&#xff0c;可以帮助VR虚拟展馆在收集有用数据的同时&a…

46.全排列 python

全排列 题目题目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a; 题解解决方案&#xff1a;回溯算法思路&#xff1a;Python 实现&#xff1a;复杂度分析&#xff1a; 提交结果 题目 题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回…

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 官方安装教程&#xff1a;https://developer.android.google.cn/studio/install?hlzh-cn 点击Next&#xff0c;默认会同时安装Android Studio和Android虚拟机&#…

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…

密钥.id文件连接SSH

不用设置密码&#xff0c;直接连接

run postinstall error, please remove node_modules before retry!

下载 node_modules 报错&#xff1a;run postinstall error, please remove node_modules before retry! 原因&#xff1a;node 版本出现错误&#xff0c;我的项目之前是在 12 下运行的。解决方法&#xff1a; 先卸载node_modules清除缓存将node版本切换到12重新下载即可

【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?

要在 Windows 上编译 etcd 及 etcdctl 工具&#xff0c;并使用 bat 脚本启动 etcd 集群&#xff0c;首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤&#xff1a; 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…

双指针---和为s的两个数字

这里写自定义目录标题 题目链接问题分析代码解决执行用时 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 问题分析 暴⼒解法&#xff0c;会超时 &#xff08;两层…

处理 Audio PCM 数据24位偏移问题

在音频处理过程中&#xff0c;我们有时会遇到特殊的问题&#xff0c;例如某些WAV文件的PCM数据发生了位移&#xff0c;导致声音播放异常。最近&#xff0c;我遇到了一个具体的问题&#xff0c;48000&#xff0c;32bit&#xff0c;8ch的PCM数据每32位&#xff08;4字节&#xff…