什么是超融合?超融合基础架构的本质是什么?

news2024/11/8 3:01:52

近年来各个行业对超融合(Hyperconverged Infrastructure, 简称 HCI)的关注度越来越高,但各家厂商的超融合架构实现方法各有不同。我们在这里不评判对错,也不去探究这些是不是真正的超融合,而是重新追本溯源,思考为什么超融合现在被关注,什么样的 IT 架构更 “合适” 于当今的商业。

什么是超融合?

首先,关于什么是超融合,我们可以参考维基百科中的如下定义
超融合基础架构(hyper-converged infrastructure)是一个软件定义的 IT 基础架构,它可虚拟化常见“硬件定义”系统的所有元素。HCI 包含的最小集合是:虚拟化计算(hypervisor),虚拟存储(SDS)和虚拟网络。HCI 通常运行在标准商用服务器之上。

SmartX 选择超融合架构的原因,是传统存储解决不了现在企业数据中心的问题。据麦肯锡研究显示,全球的 IT 数据每年在以 40% 的速度增加中。数据正在逐步影响商业,企业通过数据的分析来做决策与管理。完成快速的分析决策和管理,就需要借助强大的数据中心。下图为传统 SAN 存储:

但是,光靠越来越快、核数越来越多的 CPU 是不够的,瓶颈在于传统存储的硬盘太慢了,CPU 大部分计算能力都空闲或者说在等待存储数据传输过来。传统存储容量和性能不具备和计算能力匹配的可扩展性,不能满足企业进行数据访问的需求。

 

这个问题并不是现在才有。Google 很早遇到这个问题。那么 Google 是如何做的呢?

作为一个给全世界互联网网民提供数据检索的企业,Google 考虑过 EMC、IBM,还有当年的 SUN 存储产品,但是都解决不了它的问题。无论是容量还是性能,这些公司的产品都无法满足 Google 的规模需求。于是 Google 只能自己建立一个适合自己的数据搜索的存储结构了。

Google 优秀的计算机科学家们,打破了传统的存储思维,利用服务器的本地硬盘和软件构建了一个容量和性能不断可扩展的分布式文件系统,并在其上构建了其搜索和分析的计算引擎。

不用把数据从存储端取出来,然后通过网络传输到计算端,而是将计算直接分发到存储上运行将 “计算” 作为传输单元进行传输,这样大量的存储数据都是本地访问,不需要再跨网络上传输了,自然访问很快。于是乎,自然而然地,“计算” 和 “存储” 运行(“融合”)在了一个服务器上,这里也看到超融合架构的一个优势就是,本地访问数据,不必跨网络。

 

现代企业的数据量越来越大,应用越来越多,他们开始面临当年 Google 遇到的问题,CIO 要考虑怎么更高效的构建自己的计算和存储的基础架构,来满足应用的数据访问需求。

虚拟化为更容易的管理应用而生,它解决了 CPU、内存资源闲置的问题。但随着虚拟化的大规模应用,虚拟机越来越多,虚拟机在传统存储上运行却越来越慢了。“慢” 造成 “体验差”,“体验差” 成为了限制虚拟化应用的最大的瓶颈。这里面的最重要原因自然是,存储的 I/O 性能不够,大量的虚拟机和容器同时运行,I/O 的混合,使得随机读写急剧增加,传统存储的结构无法承受大量的随机 I/O

 

超融合恰恰是为了解决这个问题,才被带到了虚拟化和容器领域。同时,业内也存在不同的解决 I/O 问题的方法,我们先尝试分析下其他的解决方法。

  1. 解决方法一:在存储设备采用 SSD 做 Cache,加速 I/O。这在一定的规模下可能有效,但是存储设备的 SSD Cache 通常比例较小,不足 5% 的容量比的情况下,自然满足不了用户的热数据的缓存需求。另外,仍然无法随需扩展,所有的数据仍然要从集中的存储控制器流出,这个集中的 “收费站” 势必堵塞 “高速公路”。
  2. 解决方法二:使用服务器侧 SSD 做 Cache,加速 I/O。这种类似的解决方案,通常缺乏高可靠性软件的支撑,服务器端的 Cache 如果用做写 Cache,存在单点失效的问题,需要在多个服务器的 Cache 设备上,做副本来提供可靠性,可以说这是一个阉割版的超融合架构,将 Cache 放到服务器端,仍然使用传统存储,当 Cache 满,需要被写回传统存储的时候,仍然被传统存储的 “控制器” 限制整体性能。

我们看到,上面的两种方案都是受限于传统存储的结构。超融合存储则不一样,通过完全去掉传统存储,利用分布式文件系统来提供 “不可限量” 的性能和容量,在这个基础上,再通过 Cache 进行加速,甚至全部使用闪存(全闪存产品)来构建都是自然而然,不被限制了。

因此,超融合架构不是为了让单台服务器的存储飞快,而是为了让每增加一台服务器,存储的性能就有线性的提升,这样的存储结构才不限制企业业务的运行,并保证业务的可靠性。

 

正因为这种扩展性很好的共享存储,使得整个 Google 的业务得以顺畅地运转。SmartX 在做的就是这样的更好的、更稳定的基础服务。

另外,超融合近几年得以快速发展的原因,这要归功于硬件设备。CPU 核数越来越多,服务器的内存容量越来越大,SSD 设备和网络互联网设备越来越快,这意味着:

  1. 服务器的资源除了运行业务以外,仍然可以预留出来足够的 CPU,内存资源来运行存储软件。将存储软件和业务运行到一块,既减少了设备量,减少了电力使用,本地读取也提高了 I/O 的存取效率。这在几年前是做不到的,因为 CPU 和内存太有限了。
  2. 网络互联越来越快,无论是万兆,40Gb 以太网,还是 Infiniband(无限宽带技术),使得我们的软件能够将独立的存储设备进行互连,通过分布式文件系统形成共享的存储池,供上层应用使用。
  3. 如果说 SSD 等硬件厂商让单个存储设备跑的更快,我们的软件的意义在于,让超大量的这些存储设备,一起工作,提供无止境的整体性能和容量。

上面我们阐述了传统存储对现代企业大量数据和随机 I/O 处理的表现乏力、超融合架构因何满足企业需求以及超融合架构得以快速发展的原因。

 

下面将进一步解释在超融合架构中,层次存储为什么是提升数据的 I/O 性能的最好选择。

首先,让我们追溯到现代计算机体系结构中,解决系统性能瓶颈的关键策略:Cache。

现代计算机体系结构是基于冯·诺依曼体系结构构建的,冯 · 诺依曼体系结构将程序指令当做数据对待,程序和数据存储在相同的存储介质(内存)中,CPU 通过系统总线从内存中加载程序指令和相应的数据,进行程序的执行。

冯 · 诺依曼体系结构解决了计算机的可编程性问题,但是带来了一个缺点,因为程序指令和数据都需要从内存中载入,尽管 CPU 的速度很快,却被系统总线和内存速度的限制,不能快速的执行。为解决这个问题,Cache 的理念被提出,通过在 CPU 和内存之间加入更快速的访问介质(CPU Cache),将 CPU 经常访问的指令和数据,放置到 CPU Cache 中,系统的整体执行速度大幅度提升。

I/O 性能瓶颈问题转移到了存储

如果内存的访问速度相对 CPU 太慢,那么磁盘的 I/O 访问速度相对 CPU 来说就是 “不能忍” 了。下表是不同存储介质的访问延时,在虚拟化环境下或云环境下,由于 I/O 基本都是随机 I/O,每次访问都需要近 10ms 的寻道延时,使得 CPU 基本处于 “等待数据” 的状态,这使得核心业务系统运转效率和核心应用的用户体验都变得很差,直观的感受就是业务系统和桌面应用 “很卡”。

 

 

基于 SSD 构建平衡系统

和前人解决内存访问延时问题的思路类似,现在的主流方法是使用内存和 SSD 作为 Cache 来解决 I/O 性能瓶颈。存储系统能够分析出数据块的冷热程度,将经常访问的数据块缓存到内存和 SSD 中,从而加速访问。

不论是全闪存存储,还是混合介质存储,从某种意义上讲都是层次存储,只不过混合阵列多了一层磁盘介质。

学过计算机体系结构的人都听说过著名的 Amdahl 定律,这里我们要介绍一个 Amdahl 提出的 “不那么著名” 的经验法则:

在一个平衡的并行计算环境中,每 1GHz 的计算能力需要 1Gbps 的 I/O 速度与之匹配。

假设一台服务器有 2 颗 E5-4669 v3 的 CPU,每颗 CPU 有 18 个核,36 个超线程,主频是 2.1GHz,那么我们可以计算一下,这样的一台服务器需要 151Gbps (即~19GBps)的带宽。

在大规模的云计算(虚拟机算)环境中,极端情况下,大量的 I/O 并发使得存储收到的 I/O 都变成随机 I/O,在这么一个并发环境中,假设我们的访问大部分都是 8KB 的读写,根据上面的计算,我们需要为一台服务器配备近 250 万的 IOPS 读取速度。

在不考虑系统总线的情况下,如果我们用 SAS/SATA 硬盘来提供这个 IOPS,即使每个 SAS/SATA 盘可以提供近 250 的 IOPS(实际数值更小),仅为构建一台平衡的服务器计算存储环境,就需要大概 1 万个 SAS/SATA 硬盘。

在稍大规模的虚拟化环境,想要搭出一个平衡的系统,用传统的 SAS/SATA 硬盘几乎不可能完成任务。但是如果采用能够提 10 万 “写 IOPS” 的 SSD 设备,25 块 SSD 就够了。

 

层次存储的优势

“层次存储” 是相对 “全闪存” 而言,是指将容量大但是速度较慢的 HDD 和速度快的 SSD 同时构建在系统中,通过数据的访问特性,将经常访问的热数据放置在 SSD 中,而冷数据放置在 HDD 中。

首先,为构建一个平衡的虚拟化环境,需要大量的 SSD 设备来提供足够的 IOPS。但是 SSD 也不是完美的。目前的 SSD 擦写次数有限、价格高。层次存储将热数据放置在 SSD 层中,而大量的冷数据仍然放置在 SATA 硬盘上,热数据周期性的同步到 HDD 硬盘,既为用户热数据提供了高 IOPS 的保障,也通过 SATA 硬盘提供了更大的容量和可靠性。

下图是对 11 个开发人员桌面负载的 I/O 统计,包含了对 5.1TB 大小的存储上的 76 亿次 IO 访问和 28TB 的数据传输。首先值得注意的是,有 3.1TB (62%) 的数据,在一年内从来没有被访问过,这意味着这些数据无论是放置在 SSD 上,还是 SATA 上,甚至放到 U 盘上拔走,对系统都没有影响。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114714.html

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

相关文章

jenkins 原理篇——pipeline流水线 声明式语法详解

大家好,我是蓝胖子,相信大家平时项目中或多或少都有用到jenkins,它的piepeline模式能够对项目的发布流程进行编排,优化部署效率,减少错误的发生,如何去写一个pipeline脚本呢,今天我们就来简单看…

行业追踪,2023-10-20

自动复盘 2023-10-20 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

Note——torch.size() umr_maximum() array.max() itertools.product()

torch.size Problem TypeError: ‘torch.Size’ object is not callable Reason Analysis torch.Size函数不可调用 因为torch只可以.size() 或 shape Solution 将y.shape()替换为y.size() 或 y.shape ytorch.normal(0,0.01,y.size())2 return umr_maximum(a, axis, None…

那些你面试必须知道的ES6知识点

目录 1、var、let、const的区别2、作用域考题3、合并两个对象4、箭头函数和普通函数的区别5、Promise有几种状态6、find和filter的区别7、some和every的区别 1、var、let、const的区别 区别一&#xff1a; var有变量提升&#xff0c;而let和const没有 <script>console.l…

英伟达禁售?FlashAttention助力LLM推理速度提8倍

人工智能领域快速发展&#xff0c;美国拥有强大的AI芯片算力&#xff0c;国内大部分的高端AI芯片都是采购英伟达和AMD的。而为了阻止中国人工智能领域发展&#xff0c;美国频繁采取出口管制措施。10月17日&#xff0c;美国拜登突然宣布&#xff0c;升级芯片出口禁令。英伟达限制…

【openwrt学习笔记】Dying Gasp功能和pstore功能的配置(高通 ipq95xx)

目录 一、Dying Gasp信号1.1 概念1.2 实现原理 二、pstore 功能2.1 概念2.2 实现原理 三、openwrt中开启pstore功能3.1 软硬件参数3.2 各文件修改3.2.1 defconfig3.2.2 dts(ipq9574-default-memory.dtsi)3.2.3 fs/pstore/ram.c 四、测试4.1 挂载4.2 触发命令和效果 参考资料&am…

cocos creator 在网页中调试的时候直接代码调试方法

cocos creator 在网页中调试的时候直接代码调试方法

数据结构───顺序表(梦开始的地方)

从一个编程小白到入门&#xff0c;大学选的软件工程&#xff0c;从大一开始就没有真正的了解这个专业&#xff0c;更别说以后的发展方向。活了几十年&#xff0c;也不知道自己究竟要成为一个什么样的人。似乎在大二的某一天&#xff0c;忽然意识到我不该如此庸碌下去&#xff0…

对话 L2 潜力新星 Mantle:模块化理念推动生态可持续建设

作为一个由 DAO 主导实现快速增长&#xff0c;致⼒推动⼤众应⽤与数字虚拟资产治理技术—— Mantle 如何凭借模块化设计理念、可扩展性技术优势、高效能数据处理机制在 Layer2 版图中成长为新晋潜力项目&#xff1f;从测试网到主网上线&#xff0c;Mantle 经历了数个技术更新阶…

【(数据结构)— 双向链表的实现】

&#xff08;数据结构&#xff09;— 双向链表的实现 一.双向链表的结构二. 双向链表的实现2.1 头文件 ——双向链表的创建及功能函数的定义2.2 源文件 ——双向链表的功能函数的实现2.3 源文件 ——双向链表功能的测试2.4 双向链表各项功能测试运行展示2.4.1 双向链表的初始化…

发现一不错的编程助手 Amazon CodeWhisperer

Amazon CodeWhisperer 是一款 AI 编程助手&#xff0c;旨在为开发人员提供智能化的编程辅助工具。作为一款基于人工智能的编程助手&#xff0c;CodeWhisperer 的目标是提高开发人员的生产效率、降低开发成本&#xff0c;并提供高质量的编程解决方案。 1.安装过程参考官网 htt…

C++11函数适配器bind() --- C++11新语法bind() 你了解多少?什么是适配器???

文章目录 1.介绍头文件定义原型 2.引入2.1现有语法无法解决2.2bind的文档阅读2.3bind()绑定函数对于2.1问题的解决 1.介绍 头文件 #include <functional> 定义 bind函数定义在头文件中&#xff0c;是一个函数模板&#xff0c;它就像一个函数包装器(适配器)&#xff0c…

苹果 AirPods Pro 2 耳机新固件(6A305)

苹果公司对采用 Lightning 端口和 USB-C 端口的 AirPods Pro 2 耳机&#xff0c;推出了内部编号为 6A305 的全新固件&#xff0c;高于 10 月 10 日发布的 6A303 更新。用户无需手动更新&#xff0c;只需将 AirPods 通过蓝牙连接到 iPhone &#xff0c;此时便会自动安装新的固件…

甄知科技张礼军:数智化转型助企业破茧成蝶!

数智化浪潮滚滚向前&#xff0c;正席卷各行各业&#xff0c;带领企业从数字化时代跨入数智化时代。可什么是数智化&#xff1f;如何实现数智化转型&#xff1f;已经成为横亘在无数企业面前的大难题&#xff01; 事实上&#xff0c;数智化是数字化、AI和业务三个要素的交集&…

SQLServe联合主键、联合索引、唯一索引,聚集索引,和非聚集索引、主键、唯一约束和外键约束、索引运算总结

联合主键 SQL server 中给表增加联合主键的两种方法 第一种方法&#xff0c;新建表时增加联合主键&#xff1a; create table t_students(id int not null,name varchar(10) not null Primary Key (id, name),age int,dept_id int )注&#xff1a;联合主键的列需要限制非空约…

操作系统【OS】系统调用

系统调用 定义 操作系统对应用程序和程序员提供的接口用户程序执行陷入指令&#xff08;Trap或访管指令&#xff09;来发起系统调用&#xff0c;请求操作系统提供服务OS 通过提供系统调用避免用户程序直接访问外设【应用程序通过系统调用使用OS的设备管理服务】操作系统不同, …

弹出框,使用树结构查询数据

效果如下: 描述:希望点击某个按钮,弹出一个窗口,然后通过下拉框,点击下拉框里面的组织信息,然后查询对应组织的成员对象列表,并展示到表格中 HTML代码(最主要的就是树的那个): <el-dialog :visible.sync="TesteePage.showDialog" width="70%&quo…

初出茅庐的小李博客之Windows11运行Linux记录

安装教程 超简单&#xff0c;不安装虚拟机&#xff0c;Windows11运行Linuxhttps://zhuanlan.zhihu.com/p/393484912 注意事项 出现错误有可能是少了驱动 驱动下载地址 https://link.zhihu.com/?targethttps%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_updat…

bp(back propagation)

文章目录 定义过程前向传播计算过程计算损失函数&#xff08;采用均方误差MSE&#xff09;反向传播误差&#xff08;链式法则&#xff09;计算梯度更新参数 简单实例 定义 反向传播全名是反向传播误差算法&#xff08;Backpropagation&#xff09;&#xff0c;是一种监督学习方…

HZOJ-271: 滑动窗口

题目描述 ​ 给出一个长度为 N&#xfffd; 的数组&#xff0c;一个长为 K&#xfffd; 的滑动窗口从最左移动到最右&#xff0c;每次窗口移动&#xff0c;如下图&#xff1a; 找出窗口在各个位置时的极大值和极小值。 输入 ​ 第一行两个数 N,K&#xfffd;,&#xfffd;。 …