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

基于开源软件构建存储解决方案的思考

近来看了一些IBM的存储产品的资料,有一些收获。
依据存储软件和搭配硬件,IBM存储产品的组合,大致分类如下:

  • 自研存储软件,搭配自研专有硬件
  • 自研存储软件,搭配通用服务器硬件,比如IBM Storage Scale
  • 自研存储软件,开放云服务,比如IBM Cloud storage
  • 开源软件,搭配通用服务器,比如IBM Storage Ceph

本文主要梳理基于开源软件搭配通用服务器硬件来构建存储系统的思路和工作任务清单,涉及角色如下:

  • 规划团队
  • 研发团队
  • 资料团队
  • 运维团队

下文讨论各团队的职责和交付件。

规划团队

依据业务场景,站在业务视角观察存储系统,依据业务的数据规模、增长模型等,评估并输出业务访问模型、存储的功能诉求、存储的性能模型等。
工作输入,如下:

  • 业务场景,比如:
    • 数据当前规模
    • 增长模型
    • 运算量
    • 运算的位置
  • 数据特征,比如:
    • 文件来源
    • 文件数量
    • 文件大小
    • 文件的时效性比如访问热度、数据存储时长
  • 业务团队,关注人的特征,比如:
    • 团队阵型
      • 运营团队
      • 运维团队
      • 开发团队
      • 测试团队
    • 人力模型,比如学历、年龄、经验
    • 技能模型
    • 工作习惯
    • 工作交付件
    • 工作模式
  • 业务预算
    • 来源
    • 规模
    • 评估方案

工作输出,如下:

  • 典型组网
    • 交换机
    • 网络
  • 产品组合方案
    • 软件
      • 开源软件
      • 操作系统发行版
      • 操作系统内核
    • 硬件
      • 服务器
      • CPU
      • 内存
      • 网卡
      • 网线
  • 功能规格
  • 性能规格
  • 验收方案

目前常见的开源存储软件,比如:

  • lustre
  • ceph
  • minio
  • JuiceFS
  • CubeFS

规划团队需要依据客户的诉求、业务场景、自身团队的特点等,综合考虑,配置不同的解决方案。

研发团队

研发团队承接开发和验证两个职能,相关的工作任务包括兼容性看护、交付能力构建、社区协同等。

兼容性看护

依据规划团队交付的典型组网和组合方案:

  • 本存储方案中软件和硬件的兼容性,输出各硬件、软件的配置参数模板和指导书。
  • 本存储方案中涉及到的系统软件的兼容性,系统软件包括操作系统、操作系统的内核、编译器等。
  • 本存储方案和上层业务之间的兼容性,输出验证结果和规避方案。
  • 本存储方案和周边存储系统的兼容性
    • 数据传输时使用的协议,比如NFS、CIFS、S3等兼容性。
    • 传输方案,包括可用性,可靠性等。
交付能力构建

依据规划团队交付的典型组网和组合方案:

  • 验证典型组网的可行性。
  • 基于典型组网,构建性能基线。
  • 性能指标,比如带宽、IOPS、时延、吞吐量、客户端的数量等。
  • 功能指标,比如用户存储可得容量、节点数量、盘数量等。
  • 其它指标,比如功耗、故障率、停机时间等。
  • 构建持续交付能力
    • 搭建流水线,从源码实施编译、构建、部署、升级、验证等。
    • 积累自动化用例,支撑方案快速迭代,提升交付效率。
  • 质量加固,比如:
    • 修复安全漏洞。
    • 更新依赖的开源软件,支撑选型和更新版本。
    • 修复、验证存储软件的问题。
与社区的协同

与客户的协同,获取客户的诉求,并及时做出反馈,提升客户的参与度和满意度。
与上层业务应用的协同,参与上层业务应用的技术交流,了解业界的变化、方案和痛点,及时做出变更和调整。
与开源软件社区的协同,积极反馈发现的问题,寻求社区的协助,同时量力而行,参与社区的各项工作。

资料团队

和研发团队紧密合作,依照交付规范,输出如下研资料,如下:

  • 技术规格清单
  • 业务评估模型
  • 典型应用场景
  • 典型组网规划和业务配置
  • 技术培训材料
  • 业务培训材料
  • 常见问题和案例

依照宣传规范,输出如下资料,如下:

  • 技术宣传材料
  • 规划指导书
  • 安装、升级、扩容、巡检指导书
  • 业务特性指南
  • 运维指南
    • 存储业务
    • 存储软件
    • 系统软件
    • 硬件,包括服务器、盘、交换机等

运维团队

运维团队主要的工作任务在于支撑下游客户更好的使用存储系统提供的服务,同时在工作中积累运维经验,固化为相应的流程和工具。
运维团队的工作对象,包含如下:

  • 存储业务
  • 存储软件
  • 系统软件
  • 硬件,包括服务器、盘、交换机等

运维团队建设能力时,可行的思路如下:

  • 参照开源软件的官方文档的推荐方案。
  • 基于客户的实践经验。
  • 参照友商的实践经验、成功故事。
  • 梳理团队自身的经验和教训。

运维团队建设的能力,比如:

  • 监控能力,可基于开源软件比如zabbix、prometheus、[grafana(https://grafana.com/)等建设。
  • 日志分析能力,可基于开源软件elk建设。
  • 日常运维和巡检,可基于ansible等建设。

参考资料

  • 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考
  • 云知声:基于 JuiceFS 的超算平台存储实践
  • 浅谈 HPC 中的 Lustre
  • IBM Storage Scale
  • IBM Cloud storage
  • IBM Storage Ceph

相关文章:

基于开源软件构建存储解决方案的思考

近来看了一些IBM的存储产品的资料,有一些收获。 依据存储软件和搭配硬件,IBM存储产品的组合,大致分类如下: 自研存储软件,搭配自研专有硬件自研存储软件,搭配通用服务器硬件,比如IBM Storage S…...

【leetcode】动态规划::前缀和(二)

标题:【leetcode】前缀和(二) 水墨不写bug 正文开始: (一) 和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续…...

SpringBoot自动装配原理之@Import注解解析

文章目录 1. 概述2. 使用2.1 导入普通Bean2.2 导入配置类2.3 导入 ImportSelector 实现类2.4 导入 ImportBeanDefinitionRegistrar 实现类 3. 区别 1. 概述 当谈及现代Java开发领域中的框架选择时,SpringBoot无疑是无与伦比的热门之选。其简化了开发流程&#xff0…...

49 样式迁移【李沐动手学深度学习v2课程笔记】

1. 样式迁移(Style Transfer) 计算机视觉的应用之一,将样式图片中的样式(比如油画风格等)迁移到内容图片(比如实拍的图片)上,得到合成图片 可以理解成为一个滤镜,但相对于滤镜来讲…...

Linux的学习之路:4、权限

一、Linux权限的概念 权限我们都熟悉,最常见的就是在看电视时需要vip这个就是权限,然后在Linux就是有两个权限,就是管理员也就是超级用户和普通的用户 命令:su [用户名] 功能:切换用户。 例如,要从root用户…...

自定义类型—结构体

目录 1 . 结构体类型的声明 1.1 结构的声明 1.2 结构体变量的创建与初始化 1.3 结构体的特殊声明 1.4 结构体的自引用 2. 结构体内存对齐 2.1 对齐规则 2.2 为什么存在内存对齐 2.3 修改默认对齐数 3. 结构体传参 4.结构体实现位段 4.1 位段的内存分配 4.3 位段的…...

【JavaWeb】Jsp基本教程

目录 JSP概述作用一个简单的案例:使用JSP页面输出当前日期 JSP处理过程JSP 生命周期编译阶段初始化阶段执行阶段销毁阶段案例 JSP页面的元素JSP指令JSP中的page指令Include指令示例 taglib指令 JSP中的小脚本与表达式JSP中的声明JSP中的注释HTML的注释JSP注释 JSP行…...

外包干了25天,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...

C++(14): STL条件变量std::condition_variable

1. 简述 在C的标准模板库(STL)中,std::condition_variable是一个非常重要的同步原语,用于在多线程编程中实现线程间的条件同步。它允许一个或多个线程等待某个条件成立,当条件成立时,等待的线程会被唤醒并继…...

Harmony与Android项目结构对比

主要文件对应 Android文件HarmonyOS文件清单文件AndroidManifest.xmlmodule.json5Activity/Fragmententryability下的ts文件XML布局pages下的ets文件resresourcesModule下的build.gradleModule下的build-profile.json5gradlehvigor根目录下的build.gradle根目录下的build-profi…...

langchain 学习笔记-FunctionCalling三种方式

ChatGPT 基于海量的训练数据生成答案,所以它无法回答训练数据中没有的信息或搜索信息 。人们希望 ChatGPT 具有对话以外的各种功能,例如“我想管理我的待办事项列表”。 函数调用是对此类请求的响应。 通过使用函数调用,ChatGPT 现在可以在生…...

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写,由国家认证认可监督管理委员会批准设立并授权的国家认可机构,统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业,CNAS认可具有重要意义。它标志着一个软件测试公…...

Cohere推出全新升级版RAG大型AI模型:支持中文,搭载1040亿参数,现开源其权重!

4月5日,知名类ChatGPT平台Cohere在其官方网站上发布了一款全新的模型——Command R。 据官方消息,Command R拥有1040亿个参数,并且支持包括英语、中文、法语、德语在内的10种语言。这一模型的显著特点之一在于其对内置的RAG(检索增…...

搭建前后端的链接(java)

搭建前后端的链接(java) 一.前提 1.1 javaEE 搭建前后端的链接首先需要用到javaEE,也就是java企业版,也就是java后端(后端javaSE) 利用javaEE和前端交互,javaSE和数据库交互,javaSE和javaEE之间再进行交互就实现了前后端的交互…...

Java多路查找树(含面试大厂题和源码)

多路查找树(Multiway Search Tree),也称为B树或B树,是一种自平衡的树形数据结构,用于存储大量数据,通常用于数据库和文件系统中。它允许在查找、插入和删除操作中保持数据的有序性,同时优化了磁…...

day6 | 哈希表 part-2 | 454 四数相加II 、383. 赎金信、15. 三数之和、18. 四数之和

今日任务 454 四数相加II (题目: . - 力扣(LeetCode))383 赎金信 (题目: . - 力扣(LeetCode)) 454 四数相加II 题目:. - 力扣(LeetCode) 给你四个整数数组 nums1、num…...

Redis常见数据类型(2)

目录 String字符串 常见命令 SET GET MGET MSET SETNX 计数命令 INCR INCRBY DECR DECRBY INCRFLOAT 其它命令 APPEND GETRANGE SETRANGE STRLEN String字符串 字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符…...

SparkBug解决:Type mismatch; found : org.apache.spark.sql.Column required: Double

def assginFlag(aizmuth:Double):Option[Int] {val interval 0.5val index (aizmuth / interval ).toIntif (index > 0 && index < 720 ) Some(index 1) else None} assginFlag方法中的条件判断条件 (index > 0 && index < 720) 返回的是一个布…...

MQ之————如何保证消息的可靠性

MQ之保证消息的可靠性 1.消费端消息可靠性保证&#xff1a; 1.1 消息确认&#xff08;Acknowledgements&#xff09;&#xff1a; 消费者在接收到消息后&#xff0c;默认情况下RabbitMQ会自动确认消息&#xff08;autoAcktrue&#xff09;。为保证消息可靠性&#xff0c;可以…...

TrollInstallerX官方一键安装巨魔商店

TrollInstallerX是巨魔官方开发的一款一键巨魔商店安装器&#xff0c;完美支持iOS 14.0 – 16.6.1的设备&#xff0c;操作非常简单&#xff0c;TrollInstallerX依然有个小小的限制&#xff0c;部分机型&#xff0c;还是要采用间接安装方法。 一&#xff0c;直接安装方法 通过…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...