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

近来看了一些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

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

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

相关文章

需求分析及设计定义

背景 经过不断的折腾,一切过程都是为了呈现输出,这个阶段就是要交付需求和方案的环节了,很多失败的项目就是上来就到这个环节,倒着捣鼓,先写个文档,做个原型,甚至提出方案,然后再和…

Redis 未授权访问漏洞

出现以下函数 eval函数:因为脚本内容必须通过eval来执行 2.luaopen_io函数:因为此攻击必须通过执行luaopen_io函数来获取 io库 3、.popen函数:恶意命令必须通过io库中的popen函数来执行,为什么拦截规则不是io.popen&#xff0…

状态优先级

文章目录 状态优先级1. 进程状态1.1 进程状态查看1.2 僵尸进程1.3 孤儿进程 2.进程优先级2.1 基本概念2.2 查看系统进程2.3 PRI and NI2.4 PRI vs NI 3. 查看进程优先级的命令3.1 top命令更改nice3.2 其他概念 状态优先级 1. 进程状态 看看Linux内核源代码怎么说 为了弄明白…

深入浅出 -- 系统架构之分布式系统底层的一致性

在分布式领域里,一致性成为了炙手可热的名词,缓存、数据库、消息中间件、文件系统、业务系统……,各类分布式场景中都有它的身影,因此,想要更好的理解分布式系统,必须要理解“一致性”这个概念。 其实关于…

Java NIO Selector选择器简介

文章目录 前言一、IO多路复用二、Selector如何确保多个通道的操作协调一致三、NIO中怎样实现通道的非阻塞IO操作四、网络服务器和客户端简单代码示例服务器端代码客户端端代码 前言 Selector是Java NIO(New I/O)中的核心组件之一,用于检查一…

云原生架构(微服务、容器云、DevOps、不可变基础设施、声明式API、Serverless、Service Mesh)

前言 读完本文,你将对云原生下的核心概念微服务、容器云、DevOps、Immutable Infrastructure、Declarative-API、Serverless、Service Mesh 等有一个相对详细的了解,帮助你快速掌握云原生的核心和要点。 因题主资源有限, 这里会选用部分云服务商的组件进…

LeetCode:1026. 节点与其祖先之间的最大差值(DFS Java)

目录 1026. 节点与其祖先之间的最大差值 题目描述: 实现代码与解析: DFS 原理思路: 1026. 节点与其祖先之间的最大差值 题目描述: 给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff…

【面经】3月29日 美团/美团平台/后端/一面/1h

面试官先介绍自己部门的业务:存储中心,涉及到大量数据的离线处理(亿级别)。 手撕(删除链表倒数第k个节点) 自我介绍 项目介绍(还没说完被打断了,面试官说你这个感觉就是把功能说了一…

11-1(2)-CSS 背景+CSS 精灵图

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 一、CSS 背景1 背景颜色2 背景色半透明3 背景图片4 背景平铺5 背景图片位置6 …

【数据结构与算法】(一)数据结构相关的基本概念

文章目录 【数据结构与算法】(一)数据结构相关的基本概念前言1.1 数据结构的研究内容1.2 基本概念和术语1.2.1 数据、数据元素、数据项和数据对象1.2.2 数据结构1.2.3 数据类型和抽象数据类型 1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法…

中国电子学会(CEIT)2021年09月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试三级 2021年09月 编程题五道 总分:100分一、菲波那契数列(20分) 菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波…

深度剖析:网络安全中的红蓝对抗策略

红蓝对抗 红蓝对抗服务方案 在蓝队服务中,作为攻击方将开展对目标资产的模拟入侵,寻找攻击路径,发现安全漏洞和隐患。除获取目标系统的关键信息(包括但不限于资产信息、重要业务数据、代码或管理员账号等)外&#x…

9(10)-3-CSS 定位

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 CSS 定位1 定位组成2 定位模式3 边偏移4 静态定位 static5 相对定位 relative…

如何在iPhone上恢复永久删除的照片?

2007 年,Apple Inc. 推出了这款震撼人心的智能手机,后来被称为 iPhone。您会惊讶地发现,迄今为止,Apple Inc. 已售罄 7 亿台 iPhone 设备。根据 2023 年 8 月的一项调查数据,95% 的智能手机利润都落入了苹果公司的口袋…

ubuntu同步网络时间

安装ntpdate sudo apt-get update sudo apt-get install ntpdate设置系统时间与网络时间同步 sudo ntpdate cn.pool.ntp.org设置时区亚洲上海 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime设置时间为24小时制 echo "LC_TIMEen_DK.UTF-8" >>/…

Django--方法

path() 方法 一个路由配置模块就是一个urlpatterns列表,列表的每个元素都是一项path,每一项path都是以path()的形式存在。 path()方法可以接收4个参数,其中前2个是必须的:route和view,以及2个可选的参数:k…

跨平台的组播测试工具mping、udp_sender及udp_reciver的源码及使用教程

文章目录 1.前言2.mping工具编译3.mping工具使用3.1 参数说明3.1 组播播发(-s)3.1 组播播发(-r)3.3 Linux下mping测试 4.Linux组播udp_sender及udp_reciver使用4.1 udp_sender源码4.1 udp_reciver源码4.3 编译方法4.4 测试使用4.4…

android11 SystemUI入門之KeyguardPatternView解析

view层级树为&#xff1a; 被包含在 keyguard_host_view.xml中 。 <?xml version"1.0" encoding"utf-8"?> <!-- This is the host view that generally contains two sub views: the widget viewand the security view. --> <com.andro…

并发编程01-深入理解Java并发/线程等待/通知机制

为什么我们要学习并发编程&#xff1f; 最直白的原因&#xff0c;因为面试需要&#xff0c;我们来看看美团和阿里对 Java 岗位的 JD&#xff1a; 从上面两大互联网公司的招聘需求可以看到&#xff0c; 大厂的 Java 岗的并发编程能力属于标配。 而在非大厂的公司&#xff0c; 并…

16_USART串口发送和接收数据

USART串口发送和接收数据 USART串口发送和接收数据 USART串口发送和接收数据 主函数 #include "stm32f10x.h" // Device header #include "Delay.h" #include "LED.h" #include "Key.h" #include "stdint.h&q…