揭秘大数据 | 22、软件定义存储

揭秘大数据 | 19、软件定义的世界-CSDN博客

揭秘大数据 | 20、软件定义数据中心-CSDN博客

揭秘大数据 | 21、软件定义计算-CSDN博客

老规矩,先把这个小系列的前三篇奉上。今天书接上文,接着叙软件定义存储的那些事儿。

软件定义存储源于VMware公司于2012年提出的软件定义数据中心。存储作为软件定义数据中心不可或缺的一部分,其以虚拟化为基础,但又不仅限于虚拟化。

存储虚拟化一般只能在专门的硬件设备上应用,很多设备都是经过专门的定制才能够进行存储虚拟化。而软件定义存储没有设备限制,可以简单地被理解为存储的管理程序(类似于软件定义计算中虚拟机管理程序VMM)​。

软件定义存储是对现有操作系统和管理软件的一种结合,能够完全满足我们对存储系统的部署、管理、监控、调整等多种要求,可以令我们的存储系统具有敏捷、高可用、跨数据中心支持等特点。

软件定义存储通常具有如下几大特性:

(1)开放性;

(2)简单化;

(3)可扩展性。

软件定义存储开放性主要指两个维度:API的标准化、对可编程平台的支持。通过标准的开放的API,任何人都可以基于此来构建数据服务。这一点不仅有利于大企业,对于创业公司而言更加方便,因为它为客户提供一个可以利用的开放式底层的存储平台。

开放的API必然是用于支撑一套可编程架构,实现一次编程、多次运行、无处不在的数据服务。此二者结合起来可促进开放式开发社区的全局数据和自动化服务的交付。

简单化是所有存储应用与用户追求的目标,包括统一的管理接口与界面、自动化的存储配置与部署,便捷的存储扩展、升级及优化。

现代存储系统自诞生以来一直是一个非常专业化的领域,它的复杂性与挑战性令很多人望而却步,但是软件定义存储的出现在逐渐颠覆这一现象,使存储变得更容易被管理、更容易满足客户与应用的需求。

可扩展性指的是存储系统中对同构或异构存储解决方案、服务的可接入性,它在一定程度上与系统的开放性类似,允许对存储系统实施动态的升级、扩展,以及接入第三方存储服务或设备。

作为软件定义存储核心技术,我们先聚焦存储虚拟化,它可以在计算层、网络层和存储层进行实施。

在计算层,虚拟机管理程序为虚拟机分配存储空间,屏蔽了(不暴露)物理存储的复杂性。

在网络层,数据块和文件级别的虚拟化是基于网络的虚拟化技术,这两项技术在网络层中嵌入虚拟化存储资源的智能,我们常见的NFS/CIFS协议正是这些存储虚拟化技术在网络层面的体现。事实上从操作系统技术栈角度来看,数据块与文件类型的存储通常是在不同层实现的。以Linux为例,文件系统通常在块设备之上实现(每多一层抽象、虚拟化,效率就会降低一点)​,这也解释了为什么通常基于块设备的解决方案的效率(数据吞吐量)高于基于文件系统的效率。Linux内核系统调用接口如图1所示:

图1:Linux内核系统调用接口

在存储层,虚拟资源调配和自动存储分层一起简化存储管理,并帮助优化存储基础架构。虚拟化的存储如图2所示:

图2:虚拟化的存储


下面,我们以虚拟机为例,详细介绍虚拟化计算、存储与网络是如何整合工作的。

虚拟机通常是作为一组文件存储于分配给虚拟机管理程序的存储设备上,其中一个名为“虚拟磁盘文件”的文件表示虚拟机用来存储其数据的虚拟磁盘。

虚拟磁盘对于虚拟机而言显示为本地物理磁盘驱动器。虚拟磁盘文件的大小表示分配给虚拟磁盘的存储空间。

虚拟机管理程序可以访问光纤通道存储设备或IP存储设备,例如互联网SCSI(Internet SCSI,iSCSI)和网络连接存储设备。

虚拟机一直察觉不到可用于虚拟机管理程序的总存储空间和底层存储技术。虚拟机文件可以由虚拟机管理程序的本机文件系统(也被称为虚拟机文件系统)或网络文件系统(如网络连接存储文件系统)来管理。

主流的软件定义存储技术方案通常对数据管理与数据读写进行分离,由统一的管理接口与上层管理软件交互,而在数据交互方面可以兼容各种不同的连接方式,这种方式可以很好地与传统的软硬件环境兼容,从而避免“破坏性”的改造。

如何合理利用各级存储资源,在数据中心的级别上提供分层、缓存也是需要特别考虑的,因此,软件定义存储中的控制层通常提供如系统配置、自动化、自服务、管控中心等服务,在数据层则暴露给应用不同类型的存储服务,如对象存储、HDFS、文件或块存储。软件定义存储系统的逻辑组件与分层如图3所示:

图3: 软件定义存储系统的逻辑组件与分层


软件定义存储将抽象的控制层与数据层进行分离,并提供接口给用户。

用户可以使用接口定义自己的数据控制策略。为什么要将抽象的控制层与数据层分离,并且提供接口给用户调用?软件定义存储系统的控制层和数据层见图/表4,其中控制层是指对数据的管理策略。控制层不需要知道数据具体的存储方式,如块、文件或者对象存储,它的时间损耗(时延)级别是毫秒级。数据层则是指具体读写硬件方式,如块、文件或者对象,它的时间时延级别是微秒级。

图/表 4: 软件定义存储系统的控制层和数据层


用户在使用存储时,着重关注数据服务的策略,而这些策略与具体的数据存储方式无关。

当今的存储虚拟化产品将控制层和数据层结合,即数据服务的策略紧密依赖于数据存储的方式,事实上,数据存储速度是微秒级,而数据存储控制较慢。

实现数据服务策略主要的时间开销在控制层,而传统的存储虚拟化技术不能灵活配置存储控制,因此针对某个服务的变化,响应时间主要是控制开销。

再者,用户在存储数据时,必须对数据的控制和存储方式要有足够的了解,这增加了使用存储资源的难度,而且存储资源的可扩展性不高。

此外,由于传统的存储虚拟化技术缺少标准的存储数据监控功能,当某个设备出现问题时,用户只能依赖底层的一些存储机制(如日志)进行问题的发现和定位。图/表5中描述了存储虚拟化与软件定义存储之间的异同。

图/表5:存储虚拟化与软件定义存储之间的异同

 从软件定义数据中心的角度看,软件定义存储形成了一个统一的虚拟存储池,该存储池提供了标准化接口的存储应用服务,例如典型的企业级Exchange(邮件)​、Hadoop(大数据分析)​、虚拟桌面基础设施(Virtual Desktop Infrastructure,VDI,如远程桌面、瘦客户端后台)​、数据库等存储服务,这些服务的等级、特性、优先级等可以通过软件定义数据中心的SLA策略来规范与定制。图6 形象地展示了软件定义存储与软件定义数据中心的逻辑关系。

图6: 软件定义存储与软件定义数据中心的逻辑关系


换一个角度,我们从技术栈视角来看软件定义存储、网络与计算。结合OpenStack平台组件,我们可以把一个软件定义数据中心从功能上自上而下地分为4层,如图7所示:

图7:软件定义数据中心从功能上自上而下地分为4层


在图7中,基础架构层由典型的计算虚拟化组件、网络虚拟化以及存储虚拟化构成;云管理层则可被视为对基础架构层的封装、标准化并向上层提供统一可编程与管理接口;云服务层向其上的管理界面层提供标准化服务接口,如计费、日志、数据库服务、数据备份与恢复等服务。

图7中的软件定义数据中心依旧缺失了另外两个主要的组件:安全、管理与编排。

随着数据中心系统的规模与复杂度呈指数级提高,管理这样一个庞大的系统需要高度的自动化以及与之匹配的安全保障,因此,对硬件与软件的综合管理与编排,以及安全管理变得越来越重要,例如VMware公司的vCenter、微软公司的System Center、开源OpenStack项目都提供了各自的软件定义数据中心管理与编排组件。

安全组件则通常会以系统安全分析、入侵预防与报警、漏洞检测、事件流分析等功能组件的形式和管理与编排系统对接。图8展示了软件定义数据中心组件的逻辑、分层关系。

图8: 软件定义数据中心组件的逻辑、分层关系


需要指出的是,无论是安全还是管理与编排,它们整体的发展都是朝着大数据、快数据、流数据的方向进行,相关系统的体系架构也一定是朝着分布式、并行式的云计算架构方向前进,这其中对网络(负责数据的迁移)​、计算(负责通过对数据的计算、分析得出信息与智能)以及存储(负责数据最终的存储与管理)具有天然的需求。因此,我们在看待其中任何一个环节、部件或组件的时候,都需要有一个全局观,这样才能避免片面、孤立或过度微观。

企业级存储变革的四大关键技术分别是闪存、软件定义、融合存储和云。闪存与融合存储指的是硬件层面设备的迭代更新,而软件定义与云是通过软件化、虚拟化(抽象化)把硬件接入云化的软件系统架构,以更好地满足用户需求。

几年过去了,我们发现这四大变革技术还在不断向前发展——全闪存、软件定义、超融合、混合云(或上云)​。在云计算的三大要素中,存储是最后才被软件定义的,也是最难被定义的,这是由它的底层性决定的。我们常说的十年磨一剑非常适合致力于在存储领域创新、变革的人们。

(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)

· END ·

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

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

相关文章

git常用修改命令

1. 代码回退与历史修改 git reset 模式命令示例作用范围适用场景--softgit reset --soft HEAD~1仅移动 HEAD 指针重新提交之前的修改--mixedgit reset HEAD~1 (默认)重置暂存区取消已 add 但未提交的文件--hardgit reset --hard a1b2c3d彻底丢弃工作区和暂存区彻底回退到某个…

【ubuntu】linux开机自启动

目录 开机自启动: /etc/rc.loacl system V 使用/etc/rc*.d/系统运行优先级 遇到的问题: 1. Linux 系统启动阶段概述 方法1:/etc/rc5.d/ 脚本延时日志 方法二:使用 udev 规则来触发脚本执行 开机自启动: /etc/…

Python深度学习基础——深度神经网络(DNN)(PyTorch)

张量 数组与张量 PyTorch 作为当前首屈一指的深度学习库,其将 NumPy 数组的语法尽数吸收,作为自己处理张量的基本语法,且运算速度从使用 CPU 的数组进步到使用 GPU 的张量。 NumPy 和 PyTorch 的基础语法几乎一致,具体表现为&am…

光伏产品研发项目如何降本增效?8Manage 项目管理软件在复合材料制造的应用

在复合材料制造领域,特别是光伏PECVD石墨舟和燃料电池石墨双极板等高精尖产品的研发过程中,高效的项目管理直接决定了产品开发周期、质量和市场竞争力。然而,许多企业在项目立项、进度跟踪、资源分配和质量控制等环节面临挑战。 针对这些痛点…

linux的glib库使用

glib常用接口使用 1. glib介绍2. glib命令安装3. 获取glib的版本信息和兼容信息4. glib使用例子4.1 链表例子4.2 哈希表例子4.3 使用面向对象例子 1. glib介绍 广泛应用于桌面环境、嵌入式系统、GNOME等项目中。它提供了完整的面向对象编程模型(GObject&#xff09…

vs2022使用git方法

1、创建git 2、在cmd下执行 git push -f origin master ,会把本地代码全部推送到远程,同时会覆盖远程代码。 3、需要设置【Git全局设置】,修改的代码才会显示可以提交,否则是灰色的不能提交。 4、创建的分支,只要点击…

SAP ECCS 标准报表 切换为EXCEL电子表格模式

在解决《SAP ECCS标准报表在报表中不存在特征CG细分期间 消息号 GK715报错分析》问题过程中通过DEBUG方式参照测试环境补录数据后,不再报GK715错误,此时用户要的很急,要出季报。要求先把数据导出供其分析出季报。 采用导出列表方式&#xff…

基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)

大家好,我是徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕业设计…

MATLAB项目实战(一)

题目: 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:km)及水泥日用量d(t)由下表给出.目前有两个临时料场位于A(5,1),B(2,7),日储…

[250417] Fedora 42 正式发布,搭载 Linux 6.14 内核和 GNOME 48 桌面环境

目录 Fedora 42 正式发布全新的 Anaconda Web UI 安装程序KDE Plasma 荣升官方版本 (Edition)全新 Fedora COSMIC Spin 登场GNOME 48 桌面环境更新其他重要改进获取与升级 Fedora 42 正式发布 Fedora Linux 42 现已正式发布!此版本基于最新的 Linux 内核 6.14 构建…

开源技术如何助力中小企业实现财务管理自主化?

中小企业的数字化困境与开源机遇 国际数据公司(IDC)研究显示,全球67%的中小企业因高昂的软件成本和僵化的功能设计,未能有效推进数字化转型。传统商业软件常面临三大矛盾: 功能冗余与核心需求缺失:标准化系…

JVM考古现场(二十二):降维打击·用二向箔优化内存模型

"警报!三维堆内存正在经历二维化坍缩!" 我腰间的玄铁令突然震动,在蜀山剑派的量子剑阵中投射出诡异的曼德博分形——这是三体文明发动降维打击的铁证! 楔子:二向箔奇点降临 昆仑镜监控日志: // …

详细解释MCP项目中安装命令 bunx 和 npx区别

详细解释 bunx 和 npx 1. bunx bunx 是 Bun 的一个命令行工具,用于自动安装和运行来自 npm 的包。它是 Bun 生态系统中类似于 npx 或 yarn dlx 的工具。以下是 bunx 的主要特点和使用方法: 自动安装和运行: bunx 会自动从 npm 安装所需的包…

Docker详细使用

Docker详细使用 文章目录 Docker详细使用使用场景docker安装常用命令帮助启动类命令镜像命令网络命令容器命令compose(服务编排) 功能列表存储(挂载本地)介绍使用⽬录挂载卷映射 网络介绍使用 DockerfileCompose介绍使用 使用场景…

Ubuntu24.04搭建ESP8266_RTOS_SDK V3.4开发环境

【本文发布于https://blog.csdn.net/Stack_/article/details/147194686,未经允许不得转载,转载须注明出处】 需要有Linux使用基础,自行准备 1、VM17 Pro (自行搜索教程安装) 2、ubuntu-24.04-desktop-amd64 &#xff0…

微信小程序实现table样式,自带合并行合并列

微信小程序在代码编写过程好像不支持原生table的使用&#xff0c;在开发过程中偶尔又得需要拿table来展示。 1.table效果展示 1.wxml <view class"table-container"><view class"table"><view class"table-row"><view cla…

前端面试-React篇

核心概念与虚拟DOM React的虚拟DOM如何工作&#xff1f;Diff算法优化策略是什么&#xff1f;JSX的本质是什么&#xff1f;与模板引擎&#xff08;如Vue&#xff09;有何区别&#xff1f;React组件生命周期&#xff08;类组件&#xff09;的关键阶段是什么&#xff1f;受控组件…

LFM调制信号分类与检测识别

LFM调制信号分类与检测识别 LFM调制信号分类识别AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 LFM调制信号检测识别 LFM调制信号分类识别 支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(…

Linux 常用命令总结

Linux 常用命令总结 Linux 命令行是系统管理和开发的核心工具&#xff0c;掌握常用命令可以极大提升效率。本文全面总结 Linux 常用命令&#xff0c;涵盖文件操作、进程管理、网络管理、系统监控、用户管理、软件安装等多个方面&#xff0c;适合初学者和高级用户参考。 1. 文件…

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL--RPC源代码分析

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL 第一部分&#xff1a; 1: kd> p RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION0x167: 001b:77bf6957 393dec35c877 cmp dword ptr [RPCRT4!gfRPCVerifierEnabled (77c835ec)],edi 1: kd> …