云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)
在上篇中,我们围绕存储系统可扩展架构详细探讨了基础技术原理与典型实践。然而,在实际应用场景中,存储系统面临的挑战远不止于此。随着数据规模呈指数级增长,业务需求日益复杂多变,存储系统还需不断优化升级,才能持续突破容量天花板,为云计算与大数据的发展提供坚实支撑。接下来,我们将深入探索存储系统可扩展架构的SAN系统和统一存储系统的扩展性。
三、SAN系统的扩展性
在存储系统的世界里,SAN 系统和 NAS 系统就像是两个功能强大却各有专长的 “数据管家”。很多人以为它们的差异在于存储数据的仓库(底层存储阵列)不同,其实关键在于它们如何与服务器 “对话”—— 也就是网络连接方式和使用的通信协议。
想象一下,SAN 系统就像一个高效的 专线快递员,它支持 iSCSI、Fibre - Channel、Fiber - Channel - over - Ethernet 这些 “专属快递通道” 协议,能快速地把数据块送到服务器手中。而 NAS 系统更像是一个 “文件中转站”(想了解NAS的朋友,点击:云计算与大数据进阶 | 27、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(上)-CSDN博客),主要使用 NFS、CIFS 这类协议,擅长处理文件级别的数据传输,方便多个客户端共享文件。

以统一 NAS 为例,它的存储阵列里的每个 NAS 机头就像中转站的 “前台” 和 “后台”。以上图为例。
前端端口(以太网端口)是 “前台”,负责接待客户端,处理它们的文件读取和写入请求;后端端口则是 “后台”,连接着存储控制器,通过 iSCSI 端口和 FC 端口,让主机能直接或者通过存储网络拿到数据块。
另一种基于 SAN 的存储阵列,为了更好地扩展,引入了 NAS 网关设备。在这个方案里,NAS 网关和存储系统之间通过传统的 FC SAN “专线” 通信。这里有个有趣的点:NAS 网关给每个客户端的接口像一个单独的文件夹,而树状文件系统接口厉害之处在于能几乎无限制地扩充存储阵列。看图2。

不过就像仓库太大找东西会变慢一样,文件系统太庞大也会拖慢系统性能。所以部署这个方案时,得像规划复杂的物流网络一样,考虑好数据传输路径、备用路线(冗余结构)和任务分配(负载分布)。
那么基于 SAN 的存储阵列是怎么实现扩展的呢?答案是核心 - 边缘网络连接结构,这个结构就像城市的交通网络。见图3为例。

它有两层 “交通枢纽”—— 核心层和边缘层。边缘层是城市里的普通路口(交换机),用比较低成本的方式,让更多的主机(车辆)能接入网络。每个边缘层的 FC 交换机通过 ISL “道路” 连接到核心层的 FC 控制器(主干道上的高速路口)。
核心层则像城市交通的指挥中心,保证整个网络连接的稳定和高效,所有的数据通信基本都要经过这里或者在这里完成。在这个网络里,存储设备都连接在核心层,就像仓库都建在交通枢纽附近,让主机拿数据时只需要经过一条 “路”(ISL),速度更快。
对性能要求高的主机还能直接连接到核心层,避开路上的拥堵(ISL 时延)。而且边缘层的交换机之间是不直接相连的,这样既保证了网络的连接性,又提高了端口的使用效率。如果网络需要扩展,就像城市要修新的路口和道路,添加新的边缘交换机连到核心交换机,或者在核心层增加更多的交换机和控制器就行。根据核心层交换机数量不同,这个结构还能变成单核拓扑、双核拓扑等不同 “城市布局”,比如把单核拓扑变成双核拓扑,就像给城市增加了一条主干道,通过新建 ISL “道路”,把每个边缘交换机连接到新的核心交换机上。
四、统一存储系统的扩展性
统一存储系统指的是一个存储控制器可以应对不同类型的存储需求。在统一存储系统中,对存储的数据块、文件和对象等的I/O请求通过不同的I/O路径传输。
统一存储系统最厉害的地方在于一个存储控制器就能应对各种各样的存储需求。想象这个控制器是物流中心的 “总指挥”,它能根据不同类型的 “货物”,安排最合适的运输路线。当客户端发出对数据块、文件和对象等的 I/O 请求时,就好比客户要求发送不同类型的货物,存储系统会通过不同的 I/O 路径来传输这些数据,就像物流中心为不同货物规划专属的运输通道。这种灵活的处理方式,让统一存储系统在复杂的数据存储场景中,既能保证效率,又能满足多样化的需求 ,就像一个真正的全能管家,有条不紊地打理着庞大的数据世界。统一存储系统如图4所示。

①数据块I/O请求:应用程序服务器连接到存储控制器的iSCSI、FC或FCoE端口上,服务器通过iSCSI、FC或FCoE连接发送数据块I/O请求。存储控制器可处理数据块I/O请求,并响应应用程序服务器。
②文件I/O请求:NAS客户端(装载或映射NAS共享的位置)使用NFS或CIFS协议向NAS控制器发送文件I/O请求。NAS控制器会接收请求,将其转换为数据块I/O请求,并将其转发到存储控制器。接收到存储控制器的数据块数据后,NAS控制器会再次将数据块I/O请求转换为文件I/O请求,并将数据发送到NAS客户端。
③对象I/O请求:Web应用程序服务器通常使用REST、SOAP或API将对象I/O请求发送到OSD(Object Storage Device,对象存储设备)节点。OSD节点会接收请求,将其转换为数据块I/O请求,并发送给存储控制器。存储控制器会处理数据块I/O请求并响应OSD节点,将请求的对象提供给Web应用程序服务器。
统一存储系统奠定了存储云平台的基础,它屏蔽了底层异构存储的复杂性,将现有的异构物理存储(不同类型的存储设备、不同厂家的产品)转变为简单的、可扩展的开放式云存储平台。同时该系统还可以为数据中心中的其他层(如IaaS、PaaS、SaaS等平台)提供简单、高效、开放、可扩展的API,为实现全数据中心云化打下坚实的基础。
为了保证存储云平台的扩展性和开放性,存储云平台通过基于行业标准的存储管理接口标准(Storage Management Initiative Specification,SMI-S)接口或接入软件存储平台(例如开源的Ceph)实现底层物理存储设备的接入。存储云平台通常需要对外提供开放式API,以便进行扩展和二次开发;采用集群部署架构,根据存储资源的规模进行横向扩展,以保证整个存储云平台具有良好的可扩展性。SMI-S是存储网络工业协会(Storage Networking Industry Association,SNIA)制定的、符合ISO标准的异构存储间的互联互通协议,目前被用于超过800款硬件、75款软件存储产品上。Ceph是开源的免费软件存储平台,它虽然是基于对象存储,但是在结构层提供文件、数据块及对象存储API。SMI-S专注于异构存储间的互联互通,而Ceph专注于基于商品现货硬件平台搭建廉价的、可扩展的存储平台。
回顾上下两篇文章,我们系统探讨了存储系统突破容量天花板的关键技术与实践,这些技术并非孤立存在,而是相互协作、相互补充,共同构建起强大而灵活的存储架构。
展望未来,随着云计算、大数据、人工智能等技术的飞速发展,数据规模将持续呈爆炸式增长,对存储系统的要求也会越来越高。存储系统突破容量天花板的探索永无止境,新兴技术如分布式存储与 AI 的深度融合、更高效的存储介质创新等,将为存储系统的发展带来新的机遇与挑战。相信在不断的技术创新与实践中,存储系统将以更强大的性能、更灵活的扩展性,为数字时代的数据存储需求保驾护航,助力各行各业在数据的海洋中自由遨游。
(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)
相关文章:
云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)
在上篇中,我们围绕存储系统可扩展架构详细探讨了基础技术原理与典型实践。然而,在实际应用场景中,存储系统面临的挑战远不止于此。随着数据规模呈指数级增长,业务需求日益复杂多变,存储系统还需不断优化升级࿰…...
Python _day31
DAY 31 文件的规范拆分和写法 今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾 规范的文…...
【JavaWeb】MyBatis
1 介绍 什么是MyBatis? MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。 MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis官网https://my…...
vue2实现【瀑布流布局】
瀑布流 1. 解释2. 形成结构和样式3. 自定义指令 1. 解释 瀑布流特征: 等宽不等高:元素宽度固定,高度根据内容自适应。错落排列:元素像瀑布一样从上到下依次填充,自动寻找最短列插入 体现:图中第一排1&…...
系统架构设计(十六):敏感点、权衡点、风险点和非风险点
术语定义 概念定义说明敏感点(Sensitivity Point)架构设计中对某个质量属性有显著影响的点,一旦改变该点,会显著影响系统的某个质量属性。风险点(Risk Point)由于架构决策带来的潜在失败风险,可…...
优化dp贪心数论
这次三个题目都来自牛客周赛93,个人觉得出的很好,收获颇多。 1.简单贪心 题目意思: 任意选定两个数字,相加之和替代两个数字中的一个,另一个抹除。求操作之后最大字典序之和 思路: 最大字典序之和&…...
详解MySQL 的 binlog,redo log,undo log
MySQL 的 binlog、redo log 和 undo log 是数据库事务处理与数据一致性的核心组件,各自承担不同的职责。 1. binlog(二进制日志) 定位:MySQL Server 层实现的逻辑日志,与存储引擎无关。作用: 主从复制&…...
SymPy|主元、重新表示、分数、约分表达式、极限、级数、ode、获取值、输出形式
SymPy 是一个 Python 的符号计算库,广泛应用于数学计算、物理建模、工程分析等领域。本文将详细介绍 SymPy 在处理主元操作、重新表示、分数、约分表达式、极限、级数、常微分方程(ODE)以及获取值和输出形式等方面的应用,通过完整…...
Java 05正则表达式
正则表达式 1.简介 一个字符串,指定一些规则,来校验其他的字符串 String s"";规则 需要进行匹配的字符串.matches(s);来判断2.字符类**(单个) [abc] String s"[ABC]"; "A".matches(s);返回true…...
IEEE 802.1Q协议下封装的VLAN数据帧格式
1.概要 802.1d定义了生成树 802.1w定义了快速生成树 802.1s定义了多生成树 802.1q定义了VLAN 2.说明 IEEE802.1q协议的作用是(生成VLAN标记)VLAN编号取值范围:0-4095,其中0和4095是保留编号,所最大值是ÿ…...
VMware三种网络配置对比
桥接模式(Bridged Mode) 核心特点: 虚拟机被视为局域网中的独立设备,直接使用物理网络适配器,需配置与宿主机同一网段的IP地址。 典型场景: 虚拟机需对外提供服务(如Web…...
再来1章linux系列-19 防火墙 iptables 双网卡主机的内核 firewall-cmd firewalld的高级规则
学习目标: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 学习内容: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 1.实验 2.实验需求 图…...
Word 转 HTML API 接口
Word 转 HTML API 接口 图像/转换 Word 文档转换为 HTML 文件转换 / 超高精度与还原度 文件转换 / Word。 1. 产品功能 超高精度与还原度的 HTML 文件转换;支持将 Word 文档转换为 HTML 格式;支持 .doc 和 .docx 格式;保持原始 Word 文档的…...
深入解析MATLAB codegen生成MEX文件的原理与优势
一、MATLAB codegen底层工作机制 1.1 MATLAB执行引擎的局限性 MATLAB作为解释型语言,其执行过程包含多个关键步骤: 语法解析:将.m文件代码转换为抽象语法树(AST) 类型推断:运行时动态确定变量类型 内存管理:自动处…...
PEFT简介及微调大模型DeepSeek-R1-Distill-Qwen-1.5B
🤗 PEFT(参数高效微调)是由Huggingface团队开发的开源框架,专为大型预训练模型(如GPT、LLaMA、T5等)设计,用于高效地将大型预训练模型适配到各种下游应用,而无需对模型的所有参数进行…...
Python训练营打卡 Day31
文件的规范拆分和写法 今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾:文件…...
Google精准狙击OpenAI Codex,发布AI编程助手Jules!
自从OpenAI推出 Codex之后,Google就憋不住了,悄悄得瞄准了OpenAI的最新成果。 原计划是是打算在明天举行的Google I/O年度开发者大会上发布相关产品,但Google似乎已经一刻也等不了了。 就在昨天,谷歌正式推出了其AI编程——Ju…...
【办公类-18-04】(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)
背景说明 督导结束了,准备春游(夏游),搭档在给孩子写打卡单、心愿单,感慨“好多字都不会写了!” 此时,保健老师来发体检材料,叮嘱红色验血单的填写方法。 我觉得我的字也是一塌糊涂。我想用以前做“毕业证书”的方式,将班级幼儿信息打印在体检单上。 【办公类-18-03…...
如何使用通义灵码提高前端开发效率
工欲善其事,必先利其器。对于前端开发而言,使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后,前端开发的效率又更上一层楼了! 本文采用的AI是通义灵码插件提供的通义千问大模型,是目前AI性能榜第一梯队…...
苍穹外卖04 新增菜品菜品分页查询删除菜品修改菜品
2-6 新增菜品 02 05-新增菜品_需求分析和设计 03 06-新增菜品_代码开发_1 文件上传接口开发: 在这一部分我们主要在于对阿里云oss的代码开发和实现 1.配置阿里云oss: alioss:endpoint: oss-cn-beijing-internal.aliyuncs.comaccess-key-id: access-ke…...
C++ 读取英伟达显卡名称、架构及算力
C++ 读取英伟达显卡名称、架构及算力 通过CUDA Runtime API获取计算能力(推荐)CUDA计算能力(Compute Capability)的版本号直接对应显卡架构(如8.6=Ampere,9.0=Hopper)。实现步骤: 1.安装依赖: 安装 NVIDIA CUDA Toolkit。确保显卡驱动支持CUDA。2. C…...
VitePress 中以中文字符结尾的字体加粗 Markdown 格式无法解析
背景 在编写vitepress项目过程中,发现了一个markdown格式解析的问题。 md文件中,以中文句号结尾的字体加粗,无法正确解析: 不只是中文句号,只要是加粗语句中以中文字符结尾,都无法被正确解析 需要将中文…...
2.前端汇总
框架 html5 html语法 css css3 css语法 框架 tailwind css 官网 JavaScript JavaScript语法 typescript 语法 nodejs 语法 vue3 官网 组件 vite 打包 vue router -路由 pinia - 状态管理 ui element plus axios - ajax 后台管理系统前端快速开发框架 …...
外部因素导致的 ADC误差来源分析
前面分享了ADC自身因素带来的误差,现在再分享一波由于外部因素导致的ADC采样误差。 一、模拟信号源输入减少带来的误差 看一个STM32的ADC转换器的示意图: 从图中可以看到,输入源与采样引脚之间存在阻抗RAIN,流入引脚的电压可能因…...
集成运算放大器知识汇总
一、集成运放的组成 集成运算放大器,就是通过内部元器件的电参量关系将电参量进行运算,达到放大的目的。我们拆解来看: 集成:将电路封装,留出接口,使其模块化,便于移植。运算:这里…...
HBCPC2025 补题 (F、I)
HBCPC2025 补题 补题连接:Codeforces I 感染 做法1:std做法:树上dp统计贡献找最大 #include <bits/stdc.h> using namespace std; typedef long long ll; #define endl \n #define int long long #define pb push_back #define pii pair<int,…...
针对 CSDN高质量博文发布 的详细指南
结合技术写作规范与平台特性,分为 内容规划、写作技巧、排版优化、发布策略 四部分,确保专业性与传播效果: 一、内容规划:精准定位与深度挖掘 选题策略 热点结合:追踪技术趋势(如2025年AIGC、量子计算&am…...
python读写bin文件
import numpy as np# 创建二进制数据 data np.array([0x33, 0x34, 0x35, 0x36], dtypenp.uint8)# 写入bin文件 with open(example.bin, wb) as f:data.tofile(f)print("bin文件生成成功")data np.fromfile(example.bin, dtypenp.uint8) print("numpy读取结果:…...
矩阵的秩(Rank)
矩阵的秩(Rank)是线性代数中的核心概念,表示矩阵中线性无关的行(或列)的最大数量,反映了矩阵所包含的“独立信息”的多少。以下是其核心要点: 1. 秩的定义 行秩:矩阵中线性无关的行…...
Vue响应式系统演进与实现解析
一、Vue 2 响应式实现详解 1. 核心代码实现 // 依赖收集器(观察者模式) class Dep {constructor() {this.subscribers new Set();}depend() {if (activeEffect) {this.subscribers.add(activeEffect);}}notify() {this.subscribers.forEach(effect &g…...
【SPIN】高级时序规范(SPIN学习系列--6)
时序操作符[](总是)和 <>(最终)可应用于任何LTL公式,因此 []<><>A 和 <>[]<>(A ∧ []B) 在语法上是正确的。本书不涉及LTL的演绎理论(如公理、推理规则及公式的结合律、交换…...
C语言学习之内存函数
今天我们来学习一下C语言中内存函数 以下内存函数的使用均需要包含头文件<string.h> 目录 memcpy函数的使用及其模拟实现 memcpy函数的模拟实现 memmove函数的使用和模拟实现 memmove函数的模拟实现 memset函数的使用 memcmp函数的使用 memcpy函数的使用及其模拟实现…...
Python 数据库编程
一、数据库连接基础 1. 标准流程 import database_module # 如mysql.connector, sqlite3等 # 1. 建立连接 connection database_module.connect( host"localhost", user"username", password"password", database"dbnam…...
软考软件评测师——软件工程之开发模型与方法
目录 一、核心概念 二、主流模型详解 (一)经典瀑布模型 (二)螺旋演进模型 (三)增量交付模型 (四)原型验证模型 (五)敏捷开发实践 三、模型选择指南 四…...
机器学习入门
机器学习入门 1 . 机器学习是什么? 机器学习(Machine Learning, ML)是一种用数据经验替代显式规则编程来完成任务的方法──模型从样本 (X, y) 中学习 映射函数 f: X → Y,并在新样本上做出预测。和传统“if … else”程序相比&…...
git学习与使用(远程仓库、分支、工作流)
文章目录 前言简介git的工作流程git的安装配置git环境:git config --globalgit的基本使用新建目录初始化仓库(repository)添加到暂存区新增/修改/删除 文件状态会改变 提交到仓库查看提交(commit)的历史记录git其他命令…...
制造业或跨境电商相关行业三种模式:OEM、ODM、OBM
一、基础概念对比 模式定义核心能力利润来源控制权OEM代工生产(贴牌生产)纯生产制造能力加工费(薄利)品牌方掌控一切ODM设计生产(自主设计代工)设计研发能力设计溢价生产利润制造商掌握设计OBM自主品牌&am…...
APPtrace 智能参数系统:重构 App 用户增长与运营逻辑
一、免填时代:APPtrace 颠覆传统参数传递模式 传统 App 依赖「邀请码 / 手动绑定」实现用户关联,流程繁琐导致 20%-30% 的用户流失。APPtrace 通过 **「链接参数自动传递 安装后智能识别」** 技术,让用户在无感知状态下完成关系绑定、场景还…...
在 Excel 中使用 C# .NET 用户定义函数 操作步骤
点开选项 点击加载项 点击跳转 点击浏览 选择仙盟excel...
PyTest
一、基本用法: 1.测试框架做了什么: (1).测试发现 a.创建test_开头的文件 b.创建Test开头的类 c.创建test_开头的函数或方法 pytest中以每一个函数或方法作为一个用例 pytest主要以名字区分普通函数(方法)、用例 pytest的启动方式:在给定的项目中执行pytest命令即可 p…...
Python Day27 学习
今天学习讲义Day17的内容:无监督算法中的聚类浙大疏锦行 Q1. 什么是聚类? 本质上就是一种分组分类 关于聚类的准备工作: 代码实现 # 先运行之前预处理好的代码 import pandas as pd import pandas as pd #用于数据处理和分析ÿ…...
在 Win 10 上,Tcl/Tk 脚本2个示例
set PATH 新增 D:\Git\mingw64\bin where tclsh D:\Git\mingw64\bin\tclsh.exe where wish D:\Git\mingw64\bin\wish.exe 编写 test_tk.tcl 如下 #!/usr/bin/tclsh # test 文件对话框 package require Tk# 弹出文件选择对话框,限制选择.txt文件 set filePath […...
渐开线少齿差传动学习笔记
之前看到了一个渐开线一齿差的视频,觉得比较有意思,想自己动手做一个看看,下面是最开始尝试的一个失败的结果,不知道小伙伴们发现问题了没? 本来就是想凑一凑看看,但是发现不是凑起来不是件容易的事。那么…...
基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(二)
引言 在CATIA二次开发领域,参数化建模技术可提升复杂几何体的创建效率达60%。本文基于PySide6 GUI框架与pycatia接口库,深度解析锥体自动化建模工具的开发实践。该工具创新性地融合了NX的交互逻辑与CATIA的混合建模技术,实现双模式输入(高度/锥角)的智能参数转换,较传统…...
Java集合框架详解:单列集合与双列集合
目录 1. 引言:为什么需要集合框架 2. 基础概念:集合框架概述 2.1 集合框架的结构 编辑 编辑 2.2 集合与数组的比较 3. 前置知识:理解集合框架背后的基础数据结构 3.1 数组 3.2 链表 3.3 哈希表 3.4 二叉树与二叉查找树 3.5 红…...
leetcode 33. Search in Rotated Sorted Array
题目描述 可以发现的是,将数组从中间分开成左右两部分的时候,一定至少有一部分的数组是有序的。左部分[left,mid-1],右部分[mid1,right]。 第一种情况:左右两部分都是有序的,说明nums[mid]就是整个数组的最大值。此时…...
OpenCV 图像色彩空间转换
一、知识点: 1、色彩空间转换函数 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、将图像从一种颜色空间转换为另一种。 (3)、参数说明: src: 输入图像,即要进行颜…...
python-leetcode 69.最小栈
题目: 设计一个支持push,pop,top,操作,并能在常数时间内检索到最小元素的栈。 辅助栈法: 1:使用两个栈,一个主栈用于存储所有元素,另一个辅助栈用于存储当前元素的最小值 2: 每次push时,将元…...
C#基础:yield return关键字的特点
一、特点 1.最终返回的结果是IEnumerable<T> 2.使用yield return时,返回的是单个元素(即T) 3.好处:延迟加载,需要时才计算 二、验证 通过打断点可知,只有当listB遍历的时候,才会进入Get…...
机器学习 集成学习方法之随机森林
集成学习方法之随机森林 1 集成学习2 随机森林的算法原理2.1 Sklearn API2.2 示例 1 集成学习 机器学习中有一种大类叫集成学习(Ensemble Learning),集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类…...