基于开源软件构建存储解决方案的思考
近来看了一些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无疑是无与伦比的热门之选。其简化了开发流程࿰…...
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.消费端消息可靠性保证: 1.1 消息确认(Acknowledgements): 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAcktrue)。为保证消息可靠性,可以…...
TrollInstallerX官方一键安装巨魔商店
TrollInstallerX是巨魔官方开发的一款一键巨魔商店安装器,完美支持iOS 14.0 – 16.6.1的设备,操作非常简单,TrollInstallerX依然有个小小的限制,部分机型,还是要采用间接安装方法。 一,直接安装方法 通过…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
