当前位置: 首页 > article >正文

揭秘大数据 | 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 ·

相关文章:

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

揭秘大数据 | 19、软件定义的世界-CSDN博客 揭秘大数据 | 20、软件定义数据中心-CSDN博客 揭秘大数据 | 21、软件定义计算-CSDN博客 老规矩,先把这个小系列的前三篇奉上。今天书接上文,接着叙软件定义存储的那些事儿。 软件定义存储源于VMware公司于…...

OpenCV 图形API(37)图像滤波-----分离过滤器函数sepFilter()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 应用一个可分离的线性滤波器到一个矩阵(图像)。 该函数对矩阵应用一个可分离的线性滤波器。也就是说,首先&a…...

flutter下载SDK环境配置步骤详解

目录 1.Flutter官网地址、SDK下载地址? 1.1 选择你电脑的系统​ 2.配置环境 3.解决环境报错 zsh:command not found:flutter 1.Flutter官网地址、SDK下载地址? flutter官网地址: URL 1.1 选择你电脑的系统 下载解压动目录就OK了 2.配置环境 1、打开命令行&#xf…...

数据结构与算法入门 Day 0:程序世界的基石与密码

🌟数据结构与算法入门 Day 0:程序世界的基石与密码🔑 ps:接受到了不少的私信反馈,说应该先把前置的知识内容做一个梳理,所以把昨天的文章删除了,重新开启今天的博文写作 Hey 小伙伴们&#xff…...

vscode终端运行windows服务器的conda出错

远程windows服务器可以运行,本地vscode不能。 打开vscode settings.json文件 添加conda所在路径...

Elasticsearch 查询排序报错总结

Elasticsearch 查询sort报错总结 文章目录 Elasticsearch 查询`sort`报错总结错误1、使用Es对 `sort` 进行排序字段类型的要求1.1、数值类型(如 `integer`、`long`、`float`、`double`)1.2、日期类型(如 `date`)1.3、字符串类型(如 `keyword`、`text`)1.4、布尔类型(`bo…...

“大湾区珠宝艺境花园”璀璨绽放第五届消博会

2025年4月13日,第五届中国国际消费品博览会(以下简称"消博会")重要主题活动——《大湾区珠宝艺境花园》启动仪式在海南国际会展中心2号馆隆重举行。由广东省金银珠宝玉器业厂商会组织带领粤港澳大湾区优秀珠宝品牌,以“…...

十、自动化函数+实战

Maven环境配置 1.设计测试用例 2.创建空项目 1&#xff09;添加需要的依赖pom.xml <dependencies> <!-- 截图配置--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</…...

Day09【基于jieba分词和RNN实现的简单中文分词】

基于jieba分词和RNN实现的中文分词 目标数据准备主程序预测效果 目标 本文基于给定的中文词表&#xff0c;将输入的文本基于jieba分词分割为若干个词&#xff0c;词的末尾对应的标签为1&#xff0c;中间部分对应的标签为0&#xff0c;同时将分词后的单词基于中文词表做初步序列…...

自动化测试——selenium

简介 Selenium 是一个广泛使用的自动化测试工具&#xff0c;主要用于 Web 应用程序的自动化测试。它能实现的功能是网页的自动化操作&#xff0c;例如自动抢票刷课等。同时你应该也见到过有些网站在打开之后并没有直接加载出网站的所有内容&#xff0c;比如一些图片等等&#x…...

java和python实现mqtt

说明&#xff1a; MQTT 异步通信系统功能文档 系统概述 本系统基于 MQTT 协议实现异步通信&#xff0c;包含三个核心组件&#xff1a; Broker&#xff08;消息代理&#xff09;&#xff1a;负责消息的路由和转发。 Client&#xff08;主客户端&#xff09;&#xff1a;定时发…...

5.9 《GPT-4调试+测试金字塔:构建高可靠系统的5大实战策略》

5.4 测试与调试:构建企业级质量的保障体系 关键词:测试金字塔模型、GPT-4调试助手、LangChain调试模式、异步任务验证 测试策略设计(测试金字塔实践) #mermaid-svg-RblGbJVMnCIShiCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…...

Linux——进程通信

我们知道&#xff0c;进程具有独立性&#xff0c;各进程之间互不干扰&#xff0c;但我们为什么还要让其联系&#xff0c;建立通信呢&#xff1f;比如&#xff1a;数据传输&#xff0c;资源共享&#xff0c;通知某个事件&#xff0c;或控制某个进程。因此&#xff0c;让进程间建…...

学习笔记十三—— 理解 Rust 闭包:从语法到 impl Fn vs Box<dyn Fn>

&#x1f9e0; 理解 Rust 闭包&#xff1a;从语法到 impl Fn vs Box &#x1f4da; 目录 闭包是什么&#xff1f;和普通函数有什么不同&#xff1f;闭包的语法长什么样&#xff1f;闭包“捕获变量”是什么意思&#xff1f;闭包和所有权的关系Fn、FnMut、FnOnce 三种闭包类型的…...

【免费参会合集】2025年生物制药行业展会会议表格整理

全文精心整理, 建议今年参会前都好好收藏着&#xff0c;记得点赞&#xff01; 医药人非常吃资源&#xff0c;资源从何而来&#xff1f;作为一名从事医药行业的工作者&#xff0c;可以很负责任的告诉诸位&#xff0c;其中非常重要的一个渠道就是会议会展&#xff01; 建议所有医…...

腾讯云开发+MCP:旅游规划攻略

1.登录注册好之后进入腾讯云开发 2.创建环境 4.创建好环境之后点击去开发 5.进入控制台后&#xff0c;选择AI&#xff0c;找到MCP 6.点击创建MCP Server 使用腾讯云开发创建MCP目前需要云开发入门版99/月&#xff0c;我没开通&#xff0c;所以没办法往下进行。...

银河麒麟系统 达梦8 安装 dlask 框架后端环境

适配的一套环境为 dmPython2.5.8 dmSQLAlchemy1.4.39 Flask2.0.3 Flask-Cors3.0.10 Flask-SQLAlchemy2.5.1 SQLAlchemy1.4.54 Werkzeug2.2.2其中 # sqlalchemy-dm1.4.39 通过dmdbms目录内文件进行源码安装 (MindSpore) [ma-user python]$pwd /home/syl/dmdbms/drivers/python…...

Cribl (实验) vpc-flow 数据抽样

先看文档: Firewall Logs: VPC Flow Logs, Cisco ASA, Etc. | Cribl Docs Firewall Logs: VPC Flow Logs, Cisco ASA, Etc. Recipe for Sampling Firewall Logs Firewall logs are another source of important operational (and security) data. Typical examples include Ama…...

Sklearn入门之数据预处理preprocessing

、 Sklearn全称:Scipy-toolkit Learn是 一个基于scipy实现的的开源机器学习库。它提供了大量的算法和工具&#xff0c;用于数据挖掘和数据分析&#xff0c;包括分类、回归、聚类等多种任务。本文我将带你了解并入门Sklearn下的preprocessing在机器学习中的基本用法。 获取方式…...

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

目录 🧠 首先我们要搞清楚几个核心点: 🎯 目标:微调 Qwen2.5-Omni-72B 🚨 现实问题:作为个人用户,72B 模型几乎无法负担全量微调 💸 全量微调硬件需求: ✅ 最省的个人方案:不组 72B,只训练 Qwen2.5-Omni-7B 或 14B 💡 推荐方案 A:个人桌面级多卡训练服…...

家用打印机性价比排名及推荐

文章目录 品牌性价比一、核心参数对比与场景适配二、技术类型深度解析三、不同场景选择 相关文章 品牌 性价比 一、核心参数对比与场景适配 兄弟T436W 优势&#xff1a; 微压电技术&#xff0c;打印头寿命长&#xff0c;堵头率低。 支持A4无边距和5G WiFi&#xff0c;适合照片…...

KWDB(Knowledge Worker Database)基础概念与原理完整指南

KWDB&#xff08;Knowledge Worker Database&#xff09;基础概念与原理完整指南—目录 前言一、背景1.1 知识工作者的痛点1.2 技术演进推动 二、定义与定位2.1 什么是KWDB&#xff1f;2.2 KWDB与传统数据库的对比与传统关系型数据库&#xff08;如MySQL&#xff09;的对比与分…...

数字电子技术基础(四十七)——使用Mutlisim软件来模拟74LS85芯片

目录 1 使用74LS85N芯片完成四位二进制数的比较 1.1原理介绍 1.2 器件选择 1.3 运行电路 2 使用74LS85N完成更多位的二进制比较 1 使用74LS85N芯片完成四位二进制数的比较 1.1原理介绍 对于74LS85 是一款 4 位数值比较器集成电路&#xff0c;用于比较两个 4 位二进制数&…...

关于STM32创建工程文件启动文件选择

注意启动文件只要选择这几个 而不是要把所有都选上...

LLC电路工作在容性区的风险

在t0时刻之前&#xff0c;Q6Q7导通&#xff0c;回路如下所示&#xff0c;此时A点电压是低压&#xff0c;B点电压是高压 在t0时刻时&#xff0c;谐振电流相位发生变换&#xff0c;在t1时刻&#xff0c;Q5&#xff0c;Q8导通&#xff0c;对于Q8MOS管来说&#xff0c;B点电压在Q6Q…...

Linux Kernel 6

clone 系统调用&#xff08;The clone system call&#xff09; 在 Linux 中&#xff0c;使用 clone() 系统调用来创建新的线程或进程。fork() 系统调用和 pthread_create() 函数都基于 clone() 的实现。 clone() 系统调用允许调用者决定哪些资源应该与父进程共享&#xff0c…...

【开源项目】Excel手撕AI算法深入理解(四):AlphaFold、Autoencoder

项目源码地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、AlphaFold AlphaFold 是 DeepMind 开发的突破性 AI 算法&#xff0c;用于预测蛋白质的三维结构。它的出现解决了生物学领域长达 50 年的“蛋白质折叠问题”&#xff0c;被《科学》杂志评为…...

第IV部分有效应用程序的设计模式

第IV部分有效应用程序的设计模式 第IV部分有效应用程序的设计模式第23章:应用程序用户界面的架构设计23.1设计考量23.2示例1:用于非分布式有界上下文的一个基于HTMLAF的、服务器端的UI23.3示例2:用于分布式有界上下文的一个基于数据API的客户端UI23.4要点第24章:CQRS:一种…...

如何编制实施项目管理章程

本文档概述了一个项目管理系统的实施计划,旨在通过统一的业务规范和技术架构,加强集团公司的业务管控,并规范业务管理。系统建设将遵循集团统一模板,确保各单位项目系统建设的标准化和一致性。 实施范围涵盖投资管理、立项管理、设计管理、进度管理等多个方面,支持项目全生…...

排序(java)

一.概念 排序&#xff1a;对一组数据进行从小到大/从大到小的排序 稳定性&#xff1a;即使进行排序相对位置也不受影响如&#xff1a; 如果再排序后 L 在 i 的前面则稳定性差&#xff0c;像图中这样就是稳定性好。 二.常见的排序 三.常见算法的实现 1.插入排序 1.1 直…...