SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA

2023-11-20

在存储系统中,上层协议可以泛指“指令”,也就是比如“读出从某某开始的多少长度的扇区”,指令包含三大关键信息:

(1)操作码:Opreation Code,或称为OP code;比如write、read等等。

(2)起始地址:从哪里开始读。如果是文件的话,精确到字节,如果是硬盘,精确到LBA(扇区)。

(3)长度:从起始地址往后多长的一段字节或者扇区。

那么,指令如何传递给对端的设备?你可以自己将上述指令的二进制码再编码一下,用手电筒的亮灭传递给对方,对方收到之后闪一下手电筒表示已经收到。此时,手电筒编码、收到后怎么表示收到,这也是一种协议,属于传输层协议。而手电筒就是物理层的接口,最终通过物理层,也就是光在真空中传播来将信息发送到对方。

同理,SCSI指令/协议NVMe指令/协议,是存储系统面向机械盘和固态介质分别开发的两种上层协议。它们可以被over到传输层协议+网络层/链路层/物理层接口上传输到对方,比如SCSI over FC,SCSI over SAS,[(SCSI over TCP) over IP] ethernet (ISCSI),SCSI over RDMA over IB(SRP),SCSI over TCP over IP over IB。以及NVMe over PCIe over标准插槽、NVMe over PCIe over M.2接口、NVMe over PCIe overSFF8639接口等等。NVMe最好是直接over到PCIe上,因为目前来讲,PCIe的物理层+链路层+网络层+传输层还是非常高效的,算是开放式IT设备外部IO总线里速率较高使用最广泛的。当然,如果是为了扩展性考虑,也可以把NVMe over TCP/IP over 以太网,或者NVMe over RDMA over以太网/IB,或者NVMe over FC等等。

底层接口,同样是手电筒,有人用灯丝灯泡的,有人用led的,有人用袖珍的,有人用手提的,有人用头戴的。这就是接口不同,但它们传递的信息编码、物理层都是一样的。比如,PCIe可以用标准插槽,也可以用自定义插槽,但里面的信号针脚数量都是一样的。

各类存储系统使用的协议及接口

存储系统中的硬件物理接口,包括:

(1)SCSI协议及接口

最原始的上层协议及底层接口标准。有人可能蒙了,SCSI不是上层协议的名字吗,为何底层物理接口也叫SCSI?因为SCSI这个标准最早的时候把上层协议一直到底层传输协议、网络层、物理层全给定义了。其定义了:表示层到物理层。 目前已被淘汰。

(2)IDE协议及接口

承载ATA协议,面向消费级,与SCSI接口处于同一个时代。同属并行总线接口,最大接2个设备。物理层速率比同时代SCSI接口低。其定义了:传输层到物理层。目前已被淘汰。

(3)FC协议及接口

用于存储系统时则承载SCSI协议,理论上可以承载任何上层协议。分为FCAL和FC Fabric两种网络层拓扑。磁盘接入的是FCAL拓扑。其定义了:传输层到物理层。

(4)SATA协议及接口

仅用于承载ATA协议。其用于取代IDE接口。属于串行总线,每个通道只能接入一个设备。其定义了:传输层到物理层。

(5)SAS协议及接口

在存储系统中用于取代FCAL接口。其定义了:传输层到物理层。

(6)PCIe协议及接口

承载PCIe传输协议。其可以承载各种上层协议。用于存储系统时,一般直接承载NVMe协议,也可以承载SCSI协议,但后者没有普及。其定义了:传输层到物理层。

(7)emmc协议及接口

(8)ufs协议及接口

上述的SCSI、FC、SAS等各种协议都相应定义了自己的物理层连接器形态但这并不意味着某种连接器只能承载当初定义它的那个协议。比如:SATA连接器可以承载以太网物理层信号等等,有个原则就是,为高速率传输协议定义的连接器,可以承载低速率传输协议,反之则不行。

SCSI

小型计算机系统接口SCSI,Small Computer System Interface)是一种用于计算机及其周边设备之间(硬盘软驱光驱打印机扫描仪等)系统级接口的独立处理器标准。SCSI标准定义命令、通信协议以及实体的电气特性(换成OSI的说法,就是占据物理层、链接层、套接层、应用层),最大部分的应用是在存储设备上(例如硬盘、磁带机);但,其实SCSI可以连接的设备包括有扫描仪、光学设备(像CD、DVD)、打印机……等等

SCSI是一套完整的数据传输协议,其主要功能是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI技术可谓是最重要的脊梁。

SCSI协议位于操作系统和外部资源之间,它具有一系列的功能组件,操作系统对外部设备(如磁盘、磁带、光盘、打印机等)的I/O操作均可以通过SCSI协议来实现,一般情况下,SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。

例如,应用程序一般将数据作为文件来访问。尽管数据最终都将在磁盘上以数据块的方式存放,但是文件的检索需要一系列功能将未加工的块数据装配成应用程序能够操作的连续文件。这个过程的第一步由应用程序通过操作系统所连接的文件系统承担。文件系统以目录、文件夹和文件的方式来创建人们可读的数据抽象。当一个用户的应用程序打开一个文件时,会引发一系列的进程。它们使用底层SCSI命令,控制数据块从存储系统到内存的安全传输。因此在文件系统层次中,数据传输在文件描述和块I/O之间进行

正像文件系统描述了对用户应用程序数据的抽象一样,物理存储设备被描述成文件系统的抽象。例如,在Windows中的E盘或者Linux中的/dev/sda可以是一个单独的磁盘、一个大磁盘的一部分或者多磁盘的条带阵列。文件系统依赖于卷管理功能,它将各种存储设备看作可以并发的、很容易访问的资源。设备的虚拟化将物理存储转换成逻辑存储,并且承担了在磁盘上放置数据块所需的复杂任务。文件/数据块转换和映射功能可以像一个单独的卷管理应用程序那样复杂,也可以像适配卡设备驱动程序接口那么简单明了。例如,Windows NT提供了Windows磁盘管理程序,为物理磁盘分配逻辑驱动器名。适配卡的设备驱动程序负责将它的资源作为一个物理SCSI实体,出现在Windows磁盘管理程序中。Windows磁盘管理程序可以为这些资源分配逻辑名,文件系统按顺序使用这些逻辑名为目录和文件确定位置。

如下图所示,逻辑抽象的层次从实际的物理SCSI设备一直到同主机系统的连接。在操作系统层次,一般的访问方法允许对SCSI设备进行统一的处理,而不考虑它们在系统中的物理连接。在保存文件时,文件系统并不关心逻辑驱动器是一个SCSI单元、一个Fibre Channel阵列还是千兆以太网的某个IP存储设备。在各种情况下,逻辑实体和物理存储的映射完成主机系统和合适的目标SCSI命令的发送,它在二者之间用来传输数据块

SCSI协议虽然是目前最为流行的数据传输协议,但是也存在着很多的缺点,如:SCSi总线上设备数限制为15,不适用于多服务器多存储设备的网络结构;SCSI总线的长度限制在25米,不适用于构造各种网络拓扑结构等。

NVMe协议

nvme协议全称为Non-VolatitControllerInterface高级主机控制接口,既是一种接口也是一种协议

iSCSI

iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

  • 把原来只用于本机的SCSI协议透过TCP/IP网络发送,使连接距离可作无限的地域延伸

  • 连接的服务器数量无限(原来的SCSI-3的上限是15)

  • 由于是服务器架构,因此也可以实现在线扩容以至动态部署

iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。

iSCSI使用 TCP/IP 协议(一般使用TCP端口860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换SCSI命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)

iSER

iSER 代表“用于 RDMA 的 iSCSI 扩展”(iSCSI Extensions for RDMA)。它是 iSCSI 数据传输模型的扩展,iSCSI 是 TCP/IP 的存储网络标准。iSER在利用 iSCSI 组件的同时使用RDMA 协议套件

RDMA可以和成熟的iSCS协议配合,优化iSCSI的消息和数据传输,但同时保持iSCSI良好的管理型和可路由特性

ISER 的链接协议是什么?

ISER是iSCSI的RDMA传输,链接协议可以是以太网或InfiniBand,支持任何速度(10、40、56、100Gb/s)。

iSER支持三种传输层,InfiniBand,RoCE和iWARP

ISER 的优势是什么?

iSER使用RDMA协议套件,为块存储传输提供更高的带宽(0拷贝)。为此,它消除了处理TCP/IP协议栈的CPU开销,同时保留了与iSCSI协议的兼容性。

此外,它具有最低的延迟和最低的CPU利用率。此外,它还享有iSCSI协议的稳定性和优势,如安全性、高可用性等。

由于IB很难一统数据中心网络,而iWARP需要TCP/IP堆栈支持,效率比较差,因此,未来一统数据中心网络的存储协议,最有可能的就是iSER over RoCE

特别是新的闪存时代,可能会使得iSER更加热门,而iSER目前最大的鼓吹者就是Mellanox,在今年的美国闪存峰会上,他们有一个演讲,讲了iSER要火的一些理由。

首先,闪存的速度越来越快,使得网络协议的时延也成为瓶颈。Intel推广NVMe over Fabric解决这个问题,但Mellanox主推iSER。

因为iSER现在已经支持100G,是目前最快的存储协议之一。

关键是iSER除了支持InfiniBand,还支持RoCE。FCoE淡出后,iSER成为以太网一统数据中心的新希望。

iSER如果利用DCB网络,完全无需TCP/IP堆栈,传输的效率比iWARP要高,但比SRP更好管理,因为它利用了iSCSI成熟的管理技术。

还有,iSER支持所有SCSI/iSCSI的应用,因此,应用都无需改动。只是OS需要驱动,目前Linux和VMware ESXi,Oracle Solaris已经支持,Windows和FreeBSD也会很快支持。存储如Zadara已经支持,网络也有相应的接口卡和数据中心交换机支持。

部署 iSER 有哪些要求?

1、够使用SCSI和iSCSI层的应用程序

2、能够通过RDMA的网络

--支持RDMA的适配器卡(InfiniBand的以太网)。

--以太网交换机(带流量控制或PFC)。

--InfiniBand交换机

3、支持iSER的目标

NVMe-oF

NVMe over Fabrics (NVMe-oF)

NVMe SSD 通过直接连接到计算机或服务器中利用外围组件互连高速 (PCIe) 高速总线。从本质上讲,NVMe 降低了 CPU 开销并简化了降低延迟的操作,增加了每秒输入/输出操作 (IOPS) 和吞吐量

NVMe-oF支持在主机与固态存储设备或系统之间通过网络进行数据传输。NVMe-oF继承了NVMe的所有优点,包括轻量级和高效的命令集、多核感知和协议并行性。NVMe-oF是真正的网络无关的,因为它支持所有常见的fabrics,包括光纤通道、InfiniBand和以太网。

NVMe-oF over RDMA

InfiniBand,RoCE和iWARP

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA 的相关文章

  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 选择fasta文件中氨基酸超过300个且“C”出现至少4次的序列

    我有一个包含蛋白质序列的 fasta 文件 我想选择超过 300 个氨基酸且半胱氨酸 C 氨基酸出现超过 4 次的序列 我使用此命令来选择具有超过 300 个 aa 的序列 cat 72hDOWN fasta fasta bioawk c
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe

随机推荐

  • sql 字段求和_VBA+SQL-常用函数

    SQL语句中的一些简单计算函数 如max函数 SELECT MAX 列字段 AS 别名1 FROM 工作表名 如AVG函数 SELECT AVG 列字段 AS 别名1 FROM 工作表名 使用实例说明 源数据 查询内容 对英语成绩最高分 对
  • 【Java基础】day13

    day13 一 Spring Bean 生命周期是怎样的 详细过程分为以下几个步骤 初始化 Bean 容器通过获取 BeanDefinition 中的信息进行实例化 这一步仅仅是简单的实例化 并没有进行依赖注入 实例化的对象被包装在 Bea
  • 脚手架搭建react项目遇到的问题?

    一 配置proxy代理 配置代理其实很简单 但是理解其中我还不是太懂 贴一下代码看一下配置吧 说一下我遇见的问题 因为以前用webpack配置需要在config里配置devServer 网查脚手架搭建的项目不用这么麻烦 直接package
  • 【100%通过率 】【华为OD机试c++/python】日志限流【2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 某软件系统会在运行过程中持续产生日志 系统每天运行N单位时间 运行期间每单位时间产生的日志条数保行在数组 records中 records i
  • 小程序中的callback使用,及面临的风险

    1 前言 在项目开发中 初步逻辑是 获取用户的openid 2 使用openid去查询用户数据表中是否有这个用户 3 如果没有这个openid的用户 非key字段 新建一条用户数据 但在实际的操作者 发现数据库会存在如下图的情况 数据库中o
  • 「Python 面试」第五次更新

    1 说一下 char varchar text 的区别 这里先介绍一下数据库的概念 数据库是一种数据结构 内含多种算法 帮助我们将数据以最优化的方式存储在计算机中 也可以帮助我们快速找到存储的数据 数据最终存储在计算机中都是以 二进制 的方
  • error: invalid operands to binary % (have ‘double‘ and ‘int‘)取模mod %

    此处出现错误 因为 不可以用于浮点型 double float类型 只能用于整型 int类型 可以强制类型转换 将浮点型强制转换为整型 解决此问题 double b int floor x 10 10 double c int floor
  • 系统架构设计师-计算机网络

    目录 一 计算机网络技术概述 1 网络概述 2 网络有关指标 3 网络分类 4 5G技术 二 组网技术 1 交换技术 2 基本交换原理 三 TCP IP协议簇 1 DHCP 2 DNS 四 网络规划与设计 一 计算机网络技术概述 1 网络概
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • iis服务器网站加速,iis6配置gzip给网页减肥加快网页加载速度的方法

    gzip是一款网页压缩组件 开启了之后可以大大压缩网站文件 达到加快浏览速度的目的 尤其国外vps或者较大的网页 效果极为明显 linux vps或服务器 我们在配置环境的时候一般面板都集成安装了 会自动开启 但是还是有很多朋友喜欢用win
  • git 建立分支仓库

    Git 命令版本 查看本地分支及追踪 找一个文件夹目录 clone 仓库 Git branch vv 查看所有分支 Git branch a 查看本地分支 git branch 查看远程分支 git branch r 创建本地分支dev g
  • 对Unity3D 静态批处理和动态批处理的理解

    Draw Call就是CPU调用图像编程接口 像OpenGL或者 DirectX 简单来说 Draw Call就是由CPU发起的一个命令 添加到一个命令缓冲区 当GPU完成了上一次的渲染任务之后 会从命令缓冲区的命令队列中再取出一个并执行
  • hive有没有python api_python 访问hive

    pip install impyla 0 14 1pip install pure sasl 0 5 1pip install thriftpy 0 3 9pip install thrift sasl 0 2 1pip install t
  • 君正周生雷:MIPS架构授权促成本降至ARM 1/2

    转自 http laoyaoba com forums viewthread php tid 1525231 君正周生雷 MIPS架构授权促成本降至ARM 1 2 12月24日消息 腾讯科技日前走访了国内CPU企业君正集成电路有限公司 君正
  • vue3+uni——watch监听props中的数据(组件参数接收与传递defineProps、defineEmits)

    案例说明 A页面引用的子组件B A页面
  • 利用Git Diff比较Excel-推荐一款小工具

    PowerShell DiffExcel is an open source and text based tool to compare excel it supports Git diff 前言 ExcelBDD把Excel存储到Git
  • Spring Boot+thymeleaf 静态资源上下文的问题

    我在使用Spring Boot thymyleaf过程中修改server context path上下文属性后 页面的静态资源需要上下问来定位 那下面的js为例子 因为静态资源的访问地址是 localhost 8080 scripts ap
  • 看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

    2020年已经过去 无论我们过得顺遂平安 还是过得无比艰难 我们应该都会记住这一年 回顾2020年 在这个不同寻常的疫情之年 科技成为人类抗击疫情的关键 而人工智能技术投入抗疫战争之中 可以说是人类有史以来的第一次 而与此同时 AI技术已经
  • [Note ]B站翼王10TB和100TB FreeNas硬件笔记以及配置

    BV18W411f7u9 DIY一台高性能的MINI ITX文件服务器 还要能使用万兆网络 BV1qE411672a 年轻人的第一台自己组装的100TB 容量的文件服务器 准备自己在家里搭Nas 家里人的手机存储也经常不够 自己也对硬件特别
  • SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA

    在存储系统中 上层协议可以泛指 指令 也就是比如 读出从某某开始的多少长度的扇区 指令包含三大关键信息 1 操作码 Opreation Code 或称为OP code 比如write read等等 2 起始地址 从哪里开始读 如果是文件的话