作者:廖恒
众所周知,支持存储及网络I/O服务的接口协议有许多种。比如,以太网及Infiniband接口都支持采用iSCSI协议来实现存储业务,它们也因而成为了服务器应用中高带宽TCP/IP网络业务的缺省选择。iSCSI也已成为连接服务器节点与外部块存储设备的成熟选择。因此,作为I/O扇出架构的候选,我们需要对这些传统的协议及接口进行研究。
图2 PCIe与其他总线协议对比
为了更全面的考量,依据Chelsio(一家最先进的iSCSI加速NIC供应商)于2013年四月公布的数据,利用ChelsioT5 NIC (http://www.chelsio.com/wp-content/uploads/2011/05/T5_iSCSI_Brief_Multiple_Initiators-040313.pdf),我们将比较采用PCIe来连接单个高性能NVMe SSD和服务器级CPU,以及采用以太网来作连接的开销作对比。由于PCIe是服务器CPU及NVMe SSD上的原生接口,将SSD与CPU相连只需要一个无源PCIex4 Gen3 线缆即可;而用以太网连接则需要在CPU节点上加入需要一个iSCSI加速40GENIC以iSCSI启动模式运行,而且在目标iSCSI桥上还需要另一个40GENIC来提供以太网I/F,同时,还需要一个目标CPU来运行iSCSI目标堆栈以及在连接到SSD的以太网与NVMe端口之间适配I/O与数据流量。
图3 对比单个NVMe SSD与采用40G NIC iSCSI连接的各项指标
上图中展示了Chelsio报告中描述的测试系统,提供了2013年4月发布的带有全面加速能力的用于40G以太网NIC的T5ASIC的性能指标。该报告显示,ChelsioT5 ASIC (以及基于T5的网络转接卡)可以提供约40Gbps的顺序访问的吞吐量,与单个PMC NVMe SSD的吞吐量能力相当,然而,NVMe设备的IOPS能力(大约780KIOPS)远远超出了Chelsio在试验测量中提供的IOPS数据(64KB的块大小实现约66K的顺序读IOPS)。即便将iSCSI的性能缺点忽略不计,此图中的注释也标注出了采用以太网之上iSCSI来处理存储数据所需的成本及功耗(系统成本>$6000,系统功耗>1000W)。相比之下,若采用原生PCIe接口,则SSD连接无需额外成本,而主机及目标设备上PCIe接口也只需要2W功耗。
量化分析得出的结论非常有说服力,基本上排除了在CPU与SSD之间的I/O矩阵上采用以太网的任何可能。而针对除原生PCIe及原生SAS/SATA接口的其他接口协议作出的分析都会得出类似成本/功耗上的劣势。因此,我们的结论是下一代I/O架构必须是基于PCIe、SAS/SATA,或是某种融合型的能提供PCIe、SATA支持(如果应用需要SASHDD/SSD支持的话也许还包括SAS)的原生接口的架构。
此外,在过去十余年间,SASI/O矩阵已经承继了许多对于实现高可靠性/可用性/易于管理的系统至关重要的概念/能力,并对此进行了持续的演进。服务器/存储阵列/数据中心的系统架构自然而然会期望,在未来的I/O架构中,这些能力都会继续存在,主要包括:
· 热插拔/动态拓扑支持——系统允许主机、存储及矩阵设备动态地彼此相连或者断开连接(动态拓扑改变),与此同时,还能维持硬件部件、主机物理机、操作系统、虚拟机、客户操作系统以及应用级和所有可用系统资源的正常运作。
· 故障隔离——局部出错、动作失当、硬件/固件及软件层面的故障能够得到控制及隔离,从而缩小其影响范围,确保系统层级的稳健。
· 设备功耗管理—— 监控各项活动并控制及管理系统部件的能耗状态,在软件控制下实现节能。
· 机箱管理(SES及/或BMC)——监控物理操作状态及物理包装边沿(可能是机箱、机架、板、托盘、滑板或驱动器槽等等)、控制风扇、电源并提供指示以辅助人工干预(比如,使用闪烁的LED来帮助修理工找到需要替换的故障单元)。
· 矩阵可扩展性——利用可扩展的物理拓扑如Clos或胖树来扩展系统域的大小(如主机节点、目标节点及交换节点的数目),从而实现所需的连接与性能要求(如跨段带宽)。
· 矩阵发现及虚拟化——可跨越分布的交换机历数物理网络中的设备数目,管理地址空间、转发信息基地,提供访问控制功能,以及在软件定义的策略控制下呈现与全局矩阵相连的资源的虚拟化视图及访问。
· 支持传统遗留及新型的存储与网络服务——可支持传统遗留的数据平面和控制业务如SCSI服务等,以便主机访问SASHDD/磁盘驱动/CD-ROM目标,提供访问SATA HDD和SSD设备的种种方式,支持用于机箱管理的SCSI机箱服务(SES),支持用于SSD访问的NVMe和SCSIe以及用于网络连接的Socket/TCP/IP服务和相关的控制平面服务如DHCP/ARP等。
· 支持云资源调配——可以让系统控制平面整合到云平台(即云OS如OpenStack,VMWare vSphere,Amazon AWS平台等)的调配层,包括网络控制器、存储资源控制器等等。
· 多主机共存与设备共享——此系统需要支持多台主机设备、多台目标设备(SSD/HDD)以及设备共享功能。设备共享可以在几个层次实现:
o 任何时刻,任意目标设备可以动态地、唯一地与任意给定主机在软件控制下进行捆绑,但是,该捆绑关系可以在软件控制下动态变更。
o 一台目标设备可以同时由多台主机共享,但该目标设备被分成了物理分区、逻辑单元(LUN)、命名空间等,任意时刻都只能与唯一一台主机动态捆绑。
o 目标捆绑可以在逻辑对象层进行(例如,任意给定时间,一个文件与唯一一台物理主机或虚拟主机进行动态捆绑。)
o 共享资源(在设备、逻辑单元、对象层)只能由唯一一个给定主机进行写操作,但与此同时,多台次级主机可以对之进行读取。
o 共享资源(在设备、逻辑单元、对象层)可以同时由多台主机进行读写,但该矩阵系统并不能防止多台主机造成数据损坏。在多台主机之间进行协调、确保共享系统中的一致性、相容性以及数据完整的功能属于分布式应用软件的范畴,超出了I/O平台架构的讨论范围。
研究显示,理想中的下一代I/O架构必须基于PCIe、SAS/SATA或是某种兼容并蓄的融合型架构。与此同时,新的I/O架构承担着继往开来的使命,使之责无旁贷将沿袭以往多年研发的SASI/O架构的种种性能与优点,从而确保下一代存储系统的兼容、可靠及管理的便利。