searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

存储协议族一:总览

2024-05-17 06:58:55
98
0

关于存储相关的协议十分繁杂,对于刚入门存储相关的IT从业者,对于一些名称,如SCSI、NVMe、iSCSI、NFS、CIFS、SMB、RoCE、IB、FC,有些区分不清。早在2016年,EMC的技术大佬Erik Smith就梳理过一张流传很广的协议栈总图,时至今日依然很有参考学习意义。本系列将从这张《Storage Protocols》出发,逐个深入介绍各存储协议栈的情况。

storage protocols

非DAS的存储,从网络的视角来看,无非就是数据封包、物理链路传输、目标端解包校验。因此存储协议栈,用网络的协议分层来看,没毛病。

#纵向来看

首先,纵向从几个主流的存储协议栈来看,从块、对象、文件的顺序来看:

  • FC协议栈:金融行业的IOE架构应该不陌生,Cisco/Brocade的FC交换机,IBM Power系列/HP SuperDome/Oracle SPARC服务器,后端对接EMC的高端、中端存储,加上Oracle RAC作为数据库,性能极其稳定,长期作为高可用的代表。而且,用FC,基本就是用块存储。LUN到了OS层面,自己去靠其他应用建各种文件系统。
  • iSCSI协议栈:FC虽说好用,但FC网络的设备实在太贵,加上Ethernet的发展也相当不错。性能损耗大,就拿带宽来凑,FC有32Gb,我Ethernet就上100Gb,反正我有性价比。因此很多云计算公司的技术人员,不知FC为何物,iSCSI就是大流。
  • FCoE协议栈:FC很好用,也很想用小型机来当服务器,但我机房的底层网络Ethernet偏多,不想建设FC的网络,能不能用?能用!把FC跑在Ethernet传输层之上嘛。不过这种玩法的逐渐无人使用,为何?我直接用iSCSI不就好了,服务器上买几张25Gb的Ethernet HBA卡不就完事了。
  • ScaleIO/VxFlex/PowerFlex协议栈:这是作者的私货,ScaleIO(后面Dell收购后大改名,归为Power系列)是EMC的SDS产品,软件定义的存储产品给了单独的协议栈介绍。
  • NVMe over x系列协议栈:SCSI协议的性能,远远满足不了如今对硬盘的读写速率要求之后,NVMe横空出世,区别主要在于上层的存储协议。这张经典图由于发布较早,对于NVMe的协议栈描述较过时,仅表述了over RDMA的部分。Erik大佬补充了NVMe单独的协议栈图,后续会单独讲。
  • 对象存储协议栈:说了块存储,这里提了下对象存储,当然对象存储相对而言,存储组织形式和块存储完全不一样,协议上来说,倒是简单
  • NFS协议栈:再说文件存储,NFS客户端实际上是通过发送RPC请求去服务端的,底层都是一样的TCP/IP网络协议。Unix/Linux系统上习惯使用NFS,而Windows上的CIFS,实际是SMB协议的版本
  • SMB协议栈:CIFS为其具体实现。还有常见的Samba服务,跨Unix/Linux和Windows直接文件共享的服务,就是基于SMB而来
  • IB类协议栈:专为RMDA设计,Infiniband卡、Infiniband交换机很贵,属于高端架构(不差钱)才敢用的,但其性能的确很优秀。以前EMC的全闪XtremIO多个主控之间,就是通过infiniband来实现内部数据通路,当时性能炸裂。而如今超算、智算场景下,也经常看到IB的身影,但比较贵,大家都想用RoCE来替代,毕竟Ethernet就代表了性价比。
  • iWAP类协议栈:同为RDMA场景中使用。Ethernet是便宜好用,但RDMA不是可以容忍错误的场景,数据的一致性是强要求,那用TCP可靠传输的RDMA实践,就是iWAP。但是这个方式,需要支持iWAP的网卡才行,实际稳定性也不是那么好。
  • RoCE类协议栈:也为RDMA场景中使用。前面的IB性能好,但是贵,转到了性价比高的Ethernet,如何才能保证性能也不错呢?毕竟Ethernet好,可网络容易不稳定,怎么办?上TCP的效果一般,那就上UDP!网络是不如你IB稳定,但我们可以用量来取胜,只要上层协议设计好,UDP的狂暴模式来提升性能,反正Ethernet基础网络设施便宜,上100Gb、200Gb!

#横向来看

然后,我们再横向看这张《Storage Protocols》,从下往上看:

  • 物理层:如今存储底层的传输,基本就是Ethernet以太网、FC光纤、Infiniband。以太网基础设施最普遍,性价比最高,服务器配几张25Gb以太网卡,连上路由器,就能建设存储集群了;FC光纤会在SAN网中使用较多,私有内部机房,有光纤交换机,服务器配有单独的FC HBA卡的,才能用;IB类的,只会在对性能有极高的少量场景使用,毕竟太贵。
    • 另外,说一下SR-IOV,这个是网络侧的东西,无论是公有云还是私有云,很多时候,我们不是直接使用物理机,而是虚拟机,这个网卡虚拟化的方案,是为了保证直通虚拟的网卡到虚机里面去。因此虚机里对一个云盘的I/O会走到这个协议
    • 再说一下NPIV,上面SR-IOV是指Ethernet那套,NPIV主要是指FC环境下,如何把挂的LUN映射到对应的虚机里面去。
  • 链路层:FC来说,就是对应的FC1层;Ethernet来说,DCB(data center bridge)对于RoCE和FCoE来说必备;而IB来说,IB使用的场景不会跨大距离,很多时候就几个rack间,或者单个rack内,直接省掉链路层的控制。
  • 网络层:简单!要么是Ethernet的IP协议,要么是FC2层协议,要么就是IB继续省掉一层打包
  • 传输层:更简单!只有Ethernet才管这个,UDP和TCP而已。
  • 会话层:这里分不同场景,协议栈有明显区分。FC和FCoE到这里都是用的SCSI-FCP;以太网块存储的标准iSCSI来了;NVMe of fabric来了;NFS的RPC远程调用协议也是这层;SMB的Session服务也来了。
  • 表示层:这层对于块存储,就两个,曾经的王者SCSI协议,已经如今的新贵NVMe协议。软件定义存储那一套不常见。NFS会有数据表示的XDR协议,SMB就和应用层一起说了
  • 应用层:最后,一个存储以什么形式呈现出来:就到了,我们看到的是/dev下的block,还是以对象存储建bucket使用,还是以NFS/CIFS挂载到OS上使用了

从以上的协议栈可以看出,不同的分层协议类型,很多时候可以横向替代,重新组合,适用不用的传输场景。本篇仅做整体概况的介绍,而更深入的协议内容将会在系列的后续篇章中详细介绍。

0条评论
0 / 1000
刘****雷
3文章数
0粉丝数
刘****雷
3 文章 | 0 粉丝
刘****雷
3文章数
0粉丝数
刘****雷
3 文章 | 0 粉丝
原创

存储协议族一:总览

2024-05-17 06:58:55
98
0

关于存储相关的协议十分繁杂,对于刚入门存储相关的IT从业者,对于一些名称,如SCSI、NVMe、iSCSI、NFS、CIFS、SMB、RoCE、IB、FC,有些区分不清。早在2016年,EMC的技术大佬Erik Smith就梳理过一张流传很广的协议栈总图,时至今日依然很有参考学习意义。本系列将从这张《Storage Protocols》出发,逐个深入介绍各存储协议栈的情况。

storage protocols

非DAS的存储,从网络的视角来看,无非就是数据封包、物理链路传输、目标端解包校验。因此存储协议栈,用网络的协议分层来看,没毛病。

#纵向来看

首先,纵向从几个主流的存储协议栈来看,从块、对象、文件的顺序来看:

  • FC协议栈:金融行业的IOE架构应该不陌生,Cisco/Brocade的FC交换机,IBM Power系列/HP SuperDome/Oracle SPARC服务器,后端对接EMC的高端、中端存储,加上Oracle RAC作为数据库,性能极其稳定,长期作为高可用的代表。而且,用FC,基本就是用块存储。LUN到了OS层面,自己去靠其他应用建各种文件系统。
  • iSCSI协议栈:FC虽说好用,但FC网络的设备实在太贵,加上Ethernet的发展也相当不错。性能损耗大,就拿带宽来凑,FC有32Gb,我Ethernet就上100Gb,反正我有性价比。因此很多云计算公司的技术人员,不知FC为何物,iSCSI就是大流。
  • FCoE协议栈:FC很好用,也很想用小型机来当服务器,但我机房的底层网络Ethernet偏多,不想建设FC的网络,能不能用?能用!把FC跑在Ethernet传输层之上嘛。不过这种玩法的逐渐无人使用,为何?我直接用iSCSI不就好了,服务器上买几张25Gb的Ethernet HBA卡不就完事了。
  • ScaleIO/VxFlex/PowerFlex协议栈:这是作者的私货,ScaleIO(后面Dell收购后大改名,归为Power系列)是EMC的SDS产品,软件定义的存储产品给了单独的协议栈介绍。
  • NVMe over x系列协议栈:SCSI协议的性能,远远满足不了如今对硬盘的读写速率要求之后,NVMe横空出世,区别主要在于上层的存储协议。这张经典图由于发布较早,对于NVMe的协议栈描述较过时,仅表述了over RDMA的部分。Erik大佬补充了NVMe单独的协议栈图,后续会单独讲。
  • 对象存储协议栈:说了块存储,这里提了下对象存储,当然对象存储相对而言,存储组织形式和块存储完全不一样,协议上来说,倒是简单
  • NFS协议栈:再说文件存储,NFS客户端实际上是通过发送RPC请求去服务端的,底层都是一样的TCP/IP网络协议。Unix/Linux系统上习惯使用NFS,而Windows上的CIFS,实际是SMB协议的版本
  • SMB协议栈:CIFS为其具体实现。还有常见的Samba服务,跨Unix/Linux和Windows直接文件共享的服务,就是基于SMB而来
  • IB类协议栈:专为RMDA设计,Infiniband卡、Infiniband交换机很贵,属于高端架构(不差钱)才敢用的,但其性能的确很优秀。以前EMC的全闪XtremIO多个主控之间,就是通过infiniband来实现内部数据通路,当时性能炸裂。而如今超算、智算场景下,也经常看到IB的身影,但比较贵,大家都想用RoCE来替代,毕竟Ethernet就代表了性价比。
  • iWAP类协议栈:同为RDMA场景中使用。Ethernet是便宜好用,但RDMA不是可以容忍错误的场景,数据的一致性是强要求,那用TCP可靠传输的RDMA实践,就是iWAP。但是这个方式,需要支持iWAP的网卡才行,实际稳定性也不是那么好。
  • RoCE类协议栈:也为RDMA场景中使用。前面的IB性能好,但是贵,转到了性价比高的Ethernet,如何才能保证性能也不错呢?毕竟Ethernet好,可网络容易不稳定,怎么办?上TCP的效果一般,那就上UDP!网络是不如你IB稳定,但我们可以用量来取胜,只要上层协议设计好,UDP的狂暴模式来提升性能,反正Ethernet基础网络设施便宜,上100Gb、200Gb!

#横向来看

然后,我们再横向看这张《Storage Protocols》,从下往上看:

  • 物理层:如今存储底层的传输,基本就是Ethernet以太网、FC光纤、Infiniband。以太网基础设施最普遍,性价比最高,服务器配几张25Gb以太网卡,连上路由器,就能建设存储集群了;FC光纤会在SAN网中使用较多,私有内部机房,有光纤交换机,服务器配有单独的FC HBA卡的,才能用;IB类的,只会在对性能有极高的少量场景使用,毕竟太贵。
    • 另外,说一下SR-IOV,这个是网络侧的东西,无论是公有云还是私有云,很多时候,我们不是直接使用物理机,而是虚拟机,这个网卡虚拟化的方案,是为了保证直通虚拟的网卡到虚机里面去。因此虚机里对一个云盘的I/O会走到这个协议
    • 再说一下NPIV,上面SR-IOV是指Ethernet那套,NPIV主要是指FC环境下,如何把挂的LUN映射到对应的虚机里面去。
  • 链路层:FC来说,就是对应的FC1层;Ethernet来说,DCB(data center bridge)对于RoCE和FCoE来说必备;而IB来说,IB使用的场景不会跨大距离,很多时候就几个rack间,或者单个rack内,直接省掉链路层的控制。
  • 网络层:简单!要么是Ethernet的IP协议,要么是FC2层协议,要么就是IB继续省掉一层打包
  • 传输层:更简单!只有Ethernet才管这个,UDP和TCP而已。
  • 会话层:这里分不同场景,协议栈有明显区分。FC和FCoE到这里都是用的SCSI-FCP;以太网块存储的标准iSCSI来了;NVMe of fabric来了;NFS的RPC远程调用协议也是这层;SMB的Session服务也来了。
  • 表示层:这层对于块存储,就两个,曾经的王者SCSI协议,已经如今的新贵NVMe协议。软件定义存储那一套不常见。NFS会有数据表示的XDR协议,SMB就和应用层一起说了
  • 应用层:最后,一个存储以什么形式呈现出来:就到了,我们看到的是/dev下的block,还是以对象存储建bucket使用,还是以NFS/CIFS挂载到OS上使用了

从以上的协议栈可以看出,不同的分层协议类型,很多时候可以横向替代,重新组合,适用不用的传输场景。本篇仅做整体概况的介绍,而更深入的协议内容将会在系列的后续篇章中详细介绍。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1