谁才是ARM平台存储系统的忠实践行者?

2024-04-28 08:58

本文主要是介绍谁才是ARM平台存储系统的忠实践行者?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1

用着ARM,想着x86?

当生态被把持住之后,想撼动真是难上加难,几十年了,没有任何一家非x86平台能在企业级和桌面市场撼动Intel的地位。幸好在移动终端领域ARM彻底站稳了脚跟,没有给x86一点机会。其实这还是得益于ARM平台的低功耗特性,想做一款移动设备时,大家第一时间想到的不可能是x86,虽然Intel和AMD后来都有各自低功耗产品,但是IT领域先入为主,生态壁垒的玩法,屡试不爽。

 

说到ARM在企业级服务器存储产品中的应用,大家不由得想到前几年某互联网公司率先发布了ARM平台的服务器,该服务器平台据说用于冷存储业务场景,这也是理所当然的,因为那时候的ARM性能还比较孱弱,不像现在,有些ARM处理器平台性能已经不亚于x86,当然,功耗也是成正比上升。然而ARM平台服务器并没有从此势如破竹,而是继续在泥坑里挣扎前行。更有外界猜测,做这个平台无非就是想获取更高的x86平台议价权。

 

这不由得让我想起了国产化服务器和存储系统,飞腾申威平台到底会用在哪些场景?一些特殊领域自然不用说,但是更广泛的通用企业市场,会不会用这些平台,或者说真的用起来,都还有待观察。

 

面对ARM等非主流平台,大家好像都还在观赏,而且还时不时称赞两句,但是恐怕心里想的还是x86。

 2

缅怀先烈

在存储系统方面,业界也没停止思考,ARM到底怎么被用在存储系统里才更好。由于存储系统是个自封闭的平台,它只需要在软件上对外提供标准访问协议就可以了,而且商用存储系统一般不允许用户安装其它软件,所以,相比开放的服务器平台,存储系统更应该成为ARM的温床。

然而在传统双控存储系统平台上,至今没有看到ARM进入,其原因则是存储系统其实还是需要较强算力的,因为存储系统不仅是一个存数据的地方,更是对数据进行管理、优化、分析、保护的地方,其内置的诸如重复数据删除、数据压缩、数据分层、冗余校验、AI模型的训练和推理识别等,对算力的需求并不低。而如果采用高功耗的多核众核ARM,则失去了节省成本的意义,因为ARM平台开发涉及到整体的兼容性测试、驱动移植、业务移植,以及各种潜在尚未发现的坑儿,这些风险和投入可能会抵消原有的低成本。

为此,ARM可能要另辟蹊径。这方面有些先烈方案需要提一下。早在五六年前,某硬盘厂商和系统厂商合作开发了一款IP硬盘存储系统。该硬盘采用SATA的连接器,但是承载的确是以太网+IP,相当于这块硬盘本身就是一台小系统,对外不再支持SAS/SATA协议,不提供LBA块访问方式,转为提供对象key/value存储接口,而且还不是标准的,需要上层应用采用该厂商提供的访问库重新改写接口并编译。

结果可想而知,这套系统推广不开。原因并不是因为用了ARM,也并不是因为换了以太网+IP接口,而是因为它要求用户改写应用接口,这就注定无法在传统商业软件生态架构中推广,即便是数据中心用户,除非这套系统能够显著降低成本,否则改写应用也是不太有可能的事情,顶多陪着你做个PoC,要说线上部署,不太可能。另外,正因为该系统让应用直接访问到每个硬盘小系统,所以每块硬盘都需要接入以太网,虽然该系统内置交换机,出万兆汇聚接口,但是仍然无法杜绝大量的IP地址暴露到网络上,这会对网关造成很大压力,另外管理上很松散,每个节点单独管理,带来了巨大开销。

 3

ARM+EBOD,挺好的方案

说道这里似乎无解了,双控不适合用ARM,做成分布式的小鞭炮又暴露了太多节点增加了管理复杂度。不过仔细想来其实还有一种方案,那就是在这一堆小鞭炮前端增加一个总控角色,让这个角色来屏蔽这些节点的可见性,然后对外呈现标准的、不需要改应用的标准访问接口。如下图所示。

而如果换一种思维去看这个系统,如果把带着ARM SoC单板管理的HDD、后端私有的汇聚以太网交换机、供电散热等支撑模块一起坐到一个单独的箱子里的话,那么这个箱子看上去就是一个JBOD,只不过里面的互联网络不再使用SAS Expander(用于SAS/SATA盘)或者PCIe Switch(用于NVMe盘),而是用以太网。业界给这个JBOD起名EBOD

这里可能会产生一个疑问,为何不直接老老实实用SAS JBOD呢?这就得请出目前市场上唯一一家忠实践行ARM存储方案的厂商——瑞驰(vClusters)来给大家上上课了。


 4

BlueData,瑞驰的ARM冷存储

先来看一段视频。

瑞驰这款冷存储系统由网关节点和存储阶段组成。其中网关节点可以是x86平台或者Ampere平台(性能较高的一款ARM架构处理器)。存储节点可以在2U高度、整机280瓦峰值功耗的条件下容纳24块3.5寸SATA硬盘。其中每两块硬盘接入一块ARM SoC控制板,形成一个刀片(Cell),每个节点最多接入12个Cell。存储节点被称为NxCells。

在2019年12月3/4号由DOIT举办的中国数据峰会现场,冬瓜哥与瑞驰副总裁郭昊先生进行了交流。郭昊表示,利用ARM对节点进行分布式管理,有很多好处,比如,可以在ARM板上实现对硬盘的精确功耗控制和状态监测,以及在数据的冗余校验计算过程中实现分布式计算来卸载机头的负载,另外最关键的一点是,网关和ARM节点之间的协议并非SCSI/ATA协议,而是对象存储协议,这样将太过底层的访问协议封装到ARM和HDD之间,更有利于扩展性。经过这样的设计,在前置网关上可以更聚焦上层业务的开发,比如冷热分层,备份归档管理等。

为一款冷存储及归档系统,需要保持低功耗,而随时又能调取数据,对于磁带和光盘库这些归档存储来讲,迅速调取数据是不可能了,都有相当的延迟。而BlueData系统中,停转之后的硬盘的唤醒延迟基本都在毫秒级。

纠删码,以及硬盘、节点、机柜感知,基本上已经成为现代分布式存储系统的基本功了。这些技术也在瑞驰BlueData系统中加以实现。

瑞驰的这种冷数据存储方案具备大容量及数据统一归档的优势,日常归档状态下进行休眠,可根据用户使用需求自动唤醒并进行数据调阅,大大提高冷数据调阅效率,并且从设备投入、电力投入等方面减少大量成本,为用户带来高性价比的冷数据存储方案。有大容量、简易运维、智能管理、低成本的特点。

BlueData先后实施过一些大型案例,还是积累了相当的经验的。瑞驰不仅在ARM平台发力,在国产的飞腾和龙芯平台也都有相应的产品。此外,瑞驰还在人脸识别、安卓云等方面开发了一系列产品,并与大型数据中心用户保持着深度合作。

说实话,能真真切切践行ARM存储平台设计开发的厂商,瑞驰算是走在了前列,做出了真东西,还是非常值得肯定的。

END

 

扫码入当当/京东直购《大话计算机》



   

展阅读展

扩展阅读

连书都得看国外写的才能做好芯片?这儿有人不服!

《大话计算机》同款T恤,我要了!!

《大话计算机》动图一则展示

《大话计算机》序言① by廖恒

《大话计算机》序言② by 包云岗老师

《大话计算机》序言③ by 何万青

《大话计算机》序言④ by 雷迎春

《大话计算机》序言⑤ by 汪利文

《大话计算机》序言⑥ by 张勇

《大话计算机》序言⑦ by @去流浪

  

博主简介:冬瓜哥,《大话计算机》与《大话存储 终极版》、《大话存储 后传》图书作者。多项专利发明人。

现任某半导体公司高级资深架构师。

大话计算机   大话存储

长按扫码可关注

这篇关于谁才是ARM平台存储系统的忠实践行者?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942831

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J