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

目录

  • 背景
  • 什么是 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.mzph.cn/news/890213.shtml

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

相关文章

单片机flash rom ram 理解

您说得对,传统意义上的 ROM(Read-Only Memory, 只读存储器) 是一种非易失性存储器,掉电后不会丢失数据。但在很多单片机(例如STM8)中,所谓的 EEPROM 或 Flash 也常被称作“ROM”来存…

全面解析 Golang Gin 框架

1. 引言 在现代 Web 开发中,随着需求日益增加,开发者需要选择合适的工具来高效地构建应用程序。对于 Go 语言(Golang)开发者来说,Gin 是一个备受青睐的 Web 框架。它轻量、性能高、易于使用,并且具备丰富的…

【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)

强化学习(Reinforcement Learning, RL)是一种基于试错的方法,旨在通过智能体与环境的交互,学习能够最大化累积奖励的策略。以下是强化学习的详细介绍。 强化学习的核心概念 智能体(Agent) 执行动作并与环境…

MyBatis-Plus中isNull与SQL语法详解:处理空值的正确姿势

目录 前言1. 探讨2. 基本知识3. 总结 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全&#x…

Spring Boot 项目创建

创建一个新项目: 打开 Spring Initializr 网址:https://start.spring.io/ ,然后创建一个新项目: springboot3.3.5_jdk17: Project(Maven)编程语言(Java 17)Spring Boo…

基于蓝牙通信的手机遥控智能灯(论文+源码)

1.系统设计 灯具作为人们日常生活的照明工具为人们生活提供光亮,本次基于蓝牙通信的手机遥控智能灯设计功能如下: (1)用户可以通过蓝牙通信模块的作用下,在手机端遥控切换智能灯不同的工作模式; &#x…

【VUE】13、安装nrm管理多个npm源

nrm(npm registry manager)是一个 npm 源管理器,它允许用户快速地在不同的 npm 源之间进行切换,以提高包管理的速度和效率。以下是对 nrm 使用的详细介绍: 1、安装nrm 在使用 nrm 之前,需要先确保已经安装…

ASR-LLM-TTS 实时语音对话助手:语音识别、大模型对话、声音生成

参考:https://blog.csdn.net/weixin_42357472/article/details/137020794 asr:funasr-SenseVoiceSmall 离线 llm:deepseek 在线api tts:edge-tts 在线api import pyaudio import wave import threading import numpy as np import time from queue import Queue import web…

为什么光耦固态继电器(SSR)值得关注?

光耦固态继电器(SSR)作为现代电子控制系统中不可或缺的关键组件,正逐步取代传统机械继电器。通过利用光耦合技术,SSR不仅能够提供更高的可靠性,还能适应更加复杂和严苛的应用环境。在本文中,我们将深入探讨…

AI @国际象棋世界冠军赛: 从棋盘到科研创新之路

点击屏末 | 阅读原文 | 在小红书和 Google 谷歌回顾 WCC

矩阵运算的复杂度分析(Complexity Analysis of Matrix Operations):中英双语

矩阵运算的复杂度分析 矩阵运算在科学计算、机器学习、图像处理等领域中起着至关重要的作用。了解各种常见矩阵运算的复杂度,对于优化算法、提高计算效率具有重要意义。在这篇博客中,我们将详细探讨矩阵加法、标量乘法、矩阵转置、矩阵-向量乘法等基本矩…

leetcode二叉搜索树部分笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 二叉搜索树 1. 二叉搜索树的最小绝对差2. 二叉搜索树中第 K 小的元素3. 验证二叉搜索树 1. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中…

如何创建属于自己的大语言模型:从零开始的指南

如何创建属于自己的大语言模型:从零开始的指南 为什么要创建自己的大语言模型? 随着人工智能的快速发展,大语言模型(LLM)在各种场景中表现出了卓越的能力,例如文本生成、对话交互和内容总结等。虽然市场上…

计算机工作流程

分析下面的计算机工作流程: 1.取数a至ACC:PC程序寄存器自增1,变成0(可以理解为PC初始从-1开始自增);接着PC把当前指令的地址给到MAR(地址寄存器);MAR拿到当前地址后&…

ffmpeg翻页转场动效的安装及使用

文章目录 前言一、背景二、选型分析2.1 ffmpeg自带的xfade滤镜2.2 ffmpeg使用GL Transition库2.3 xfade-easing项目 三、安装3.1、安装依赖([参考](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS#InstallingdependencieswithHomebrew))3.2、获取…

Elasticsearch8.17.0在mac上的安装

1、下载并安装 下载8.17版本es(目前最新版本):Download Elasticsearch | Elastic 也可以通过历史版本列表页下载:Past Releases of Elastic Stack Software | Elastic 当然也可以指定具体版本号进行下载:Elasticsearch 8.17.0 | Elastic …

2025.01.15python商业数据分析top3

import pandas as pd# 文件路径为python文件位置下的相对路径 dwx pd.read_excel("电蚊香套装市场近三年交易额.xlsx", ) fmfz pd.read_excel("防霉防蛀片市场近三年交易额.xlsx") msmc pd.read_excel("灭鼠杀虫剂市场近三年交易额.xlsx") mz…

解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题

配置一下apache里面的配置文件:httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示: 浏览器中中文乱码问题:

golang异常

panic如果不处理会导致应用进程挂掉 defer recover可以处理这种情况 一个recover只处理自己协程 产生panic的情况 空指针 数组越界 空map中添加键值对 错误,error接口,不严重 error.wrapof解决嵌套问题或者error.unwrap erroe.is方法,判断是…

redis库基础知识

redis库 Redis 是一个开源的内存数据库,提供了丰富的方法和命令来操作和管理数据库中的数据。下面是 Redis 库中一些常用的方法的介绍: set(key, value): 设置指定键的值get(key): 获取指定键的值delete(key): 删除指定的键和对应的值exists(key): 判断…