首发 | FOSS分布式全闪对象存储系统白皮书
一、 产品概述
1. 当前存储的挑战
随着云计算、物联网、5G、大数据、人工智能等新技术的飞速发展,数据呈现爆发式增长,预计到2025年中国数据量将增长到48.6ZB,超过80%为非结构化数据。
同时,数字经济正在成为我国经济发展的新引擎,数据已经成为企业的核心生产要素,数据即价值。新技术新应用不断产生急剧增长的海量数据,数据的价值越来越高,对存储系统的可靠性、安全性、可用性、性能、成本、运维的要求也越来越高,给存储系统提出了巨大的挑战:

以上挑战和刚需说明,新一代存储系统不光要面向传统的数据可靠性、服务可用性、性能等维度,超大存储量、长期存储经济性、系统水平线性扩展性、可交付的运维等维度成为新的重点。
这驱使新一代存储系统必然走向规模化、集成化、存算分离的分布式scale-out云存储架构,提供可交付的简洁易用的运维平台,让客户自己负责运维,安心使用。
2. FOSS的特点
大道云行对象存储FOSS,是采用先进的分布式全闪架构的信创云存储系统,设计为超大规模数据长期、可靠、绿色节能、高性能存取。
FOSS适用于包括广电媒资、备份归档、远程容灾、视频监控、人工智能、大数据分析、数据湖等大规模非结构化数据存取应用场景,特别是数据量大、吞吐高,成本敏感的需求。
| FOSS特点详解 | |
| Share Everything架构 | 存储后端网络share everything架构,支持NVMe-oF,支持分布式无状态微服务安全访问存储。 |
| 信创存储 | 全自主知识产权国产分布式全闪存储软件和国产闪存的结合。 |
| 全闪架构,超高性能,数据量,性能的水平线性扩展 | 亚毫秒级延迟,单zone-百PB级空间,百GB级吞吐,百万级IOPS。 |
| 绿色节能 | 节能调度算法使得多数SSD的大部分时间处于低功耗状态(单片SSD<0.5w)。 |
| 全闪优化设计使得SSD使用时间长,成本低 | 数据按时间聚合,采用全域GC和磨损平衡等设计,极大降低SSD写放大,提高SSD使用寿命。实现大尺度QLC SSD的高密度使用,降低单位成本。 |
| 长期可靠 | 数据静默错误保护;智能化的介质和数据的巡检、健康扫描、Rebuild恢复。 对数据和介质长期可靠做了慎密的数据保护、监测、扫描、恢复、迁移等运维规划。 |
3. FOSS的核心能力
在线数据的性能和延迟,离线数据的规模和成本。
使用FOSS,意味着客户可以将大部分数据以离线数据的成本保存到在线系统,数据长久在线。
二、 产品架构
1. 网络架构

系统采用扁平的二层网络,易于部署和管理,支持对存储集群节点进行分组,支持跨组数据互访。
- 业务网
业务网可以是IP/IB/RoCE;
每组业务网的计算节点都互通。
- 存储后端网
存储后端网可以是IP/IB/RoCE;
存储后端网支持按分组进行扩展,不同分组之间存储网不通,可以通过业务网进行转发;
分组设计有利于存储网络简单的水平扩展,而不增加组网的复杂度。
一个zone规模的上限,取决于业务网的规模,即计算节点总数;存储网可任意水平扩展,但总规模会受限于连接存储网的计算节点总数。
一般的,一个zone支持100GB的业务网,200个计算节点,20个存储网分组(每分组10P存储空间);则整个zone支持100GB带宽,200PB存储空间。
2. 软件架构

协议层
对外提供s3服务和nas服务。
缓存层
数据分片通过读缓存层降低延迟,满足低读延迟的场景需求。
开放介质存储层
-- volume
开放介质存储(OpenMediaStorage - OMS)层将块设备(disk)的trunk封装为跨节点的、冗余算法(纠删/副本)保护的volume,提供volume的装配、分配和读写接口。
OMS层开放式的直接存取disk,支持:主机Local_disk、SAS/NVMe-oF enclosure disk、块存储系统的LUN(FC/iSCSI/NVMe-oF)。
-- volume_group
volume按分组进行管理、调度和使用。分组用于支持多租户。
volume_group由调度器和node集群组成。
-- node
node代表了挂载的disk的集合,对应实体存储节点主机disk组,或NVMe-oF 盘柜disk组,或块存储划分的Lun组。
node作为disk的IO控制器,提供发现、挂载、访问disk的接口。
-- 调度器负责volume装配和分配
装配:
- 按node类型树进行类型分组
- 按空间平衡+擦写次数平衡选择node
分配:
- 按类型聚合
- 数据分片MVCC+基于租约的volume_range保护机制
元数据
mds集群提供分布式元数据服务,支持最终一致性事务,在线线性扩展。
任务层
包含GC、Disk_Rebuild、数据迁移、数据均衡、数据/介质健康扫描、生命周期、配额、计量归并等任务。
任务通过管理器Task_mgr,分发到Task_agent分布式并行执行。
task_mgr进行任务策略配置、调度、资源使用控制。
Service_mgr
服务部署、升级、配置,单例服务故障转移,集群服务扩展等。
三、产品特性
1. 分布式元数据
很多存储系统采用无元数据服务架构,比如一致性Hash。无元数据服务架构在超大规模分布式系统中存在许多缺点:
-
无法在统一的逻辑上管理元数据,不支持事务,会导致很多一致性问题。
-
没有元数据的范围查询能力,查询范围会放大到整个集群,导致海量对象场景下元数据列举开销大性能差。
-
rebalance过程复杂,要扫描所有需rebalance的数据进行处理并完成状态转换,且网络故障、节点临时离线和永久离线等会进一步增加rebalance复杂度。
FOSS采用分布式元数据服务架构:
-
元数据服务线性平滑,网络故障和节点故障不影响服务的可用性
-
元数据三副本冗余
-
支持热点消除(主键单调递增的元数据,采用shard_bit打散)
-
支持高性能的事务聚合批处理(batch和scan)
-
低延迟(亚毫秒级)
依靠分布式元数据服务,FOSS简洁高效的实现了单桶无限数量对象、快速对象列举、volume调度、全域GC和磨损平衡等高级功能。
2. 存储冷热分层
FOSS存储分层设计的主旨,是为了同时满足超高性能和超大容量需求。FOSS的数据存储包括2层:
(热)高性能层
- 热volume_group
- 读缓存集群
高性能层满足要求极低延迟的高性能场景。高并发写入通过写请求聚合提高IOPS;小文件的低延迟读取,通过热数据读缓存优化。
通常,变冷的数据会迁移到大容量层。只需要高性能层的特例客户,也可以独立使用高性能层,不部署大容量层。
(冷)大容量层
- 冷volume_group
大容量层必须依赖高性能层存在。tier_migrate任务将高性能层的数据批量迁移到冷volume 。
批量迁移采用顺序大IO写入,使大尺度SSD可以得到优化使用。
3. 资源多租户
S3服务资源多租户
通过service_mgr配置租户独占的S3服务资源,为特定租户建立专属的s3_serv_group 。
通过service_mgr配置s3_serv_group和volume_group的映射关系。
存储资源多租户
bucket可以代表租户的分类存储空间,多租户的空间管理通过bucket的存储策略进行。
支持设置bucket的数据放置策略(对应的volume_group),比如可指定bucket放置到特定性能分类(SSD|HDD)的volume 。
4. 优秀的扩展性
FOSS支持容量和性能的横向线性扩展,元数据的横向线性扩展,通过分布式元数据服务mds实现:
-
mds_kv集群的扩展
mds_kv采用全局字典序range方式进行key的sharding;支持在线增加kv节点,IOPS随kv节点个数线性增长。
-
mds事务服务集群的扩展
mds事务服务集群,采用配置订阅方式扩展;支持在线增加事务服务,IOPS随事务服务个数线性增长。
数据存储的横向线性扩展,通过开放介质存储(OpenMediaStorage-OMS)层实现:
-
存算分离的架构下,数据存储的横向扩展简化为存储后端网的横向扩展。
-
存储后端网按分组进行水平扩展,每个分组后端网独立组网,扩展简单。
增加volume_group中node,即增加了分组的存储量和IOPS;当volume_group内的扩展到达上限后,可以通过新建volume_group进行扩展。
5. 绿色节能
FOSS通过数据写入volume分配算法和分类聚合算法,实现(冷)数据层的disk节能。
volume分配算法
数据写入分配volume时,在满足性能吞吐需求的条件下,一段时间内分配的volume使用尽量少的同一批disk。(其他disk这段时间处于节能状态,存储规模越大,节能比例越高)
分类聚合算法
应用按时间批量读取数据的时候,因为应用写入数据按时间聚合,读关联的disk和写入时是相同的,同样只是少数的一批disk。
四、产品愿景
以全闪绿色节能信创存储的创新技术:
为客户提供自运维的私有云存储,应存尽存;
在企业存储领域促进国产SSD对进口HDD的替代;
作为智能云平台的存储底座,助力数据处理的智能化,发掘数据的真正价值。
《FOSS全闪对象存储技术白皮书》详见官网大道云行 TaoCloud - 新一代全闪软件定义存储领导者 (taocloudx.com)
相关文章:
首发 | FOSS分布式全闪对象存储系统白皮书
一、 产品概述 1. 当前存储的挑战 随着云计算、物联网、5G、大数据、人工智能等新技术的飞速发展,数据呈现爆发式增长,预计到2025年中国数据量将增长到48.6ZB,超过80%为非结构化数据。 同时,数字经济正在成为我国经济发展的新…...
Java反射获取所有Controller和RestController类的方法
Java反射获取所有Controller和RestController类的方法 引入三方反射工具Reflections <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.10.2</version> </dependency>利用反…...
设计模式--策略模式
目录 一.场景 1.1场景 2.2 何时使用 2.3个人理解 二. 业务场景练习 2.1业务: 2.2具体实现 2.3思路 三.总结 3.1策略模式的特点: 3.2策略模式优点 3.3策略模式缺点 一.场景 1.1场景 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不…...
VSCode使用SSH无密码连接Ubuntu
VSCode使用SSH无密码连接Ubuntu 前提条件: 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip(否则经常需要修改Remote-ssh的配置文件里的IP) 1. windows下 打开Win下的PowerShell,生成公钥和私钥 ssh-keygen…...
通过版本号控制强制刷新浏览器或清空浏览器缓存
背景介绍 在我们做 web 项目时,经常会遇到一个问题就是,需要 通知业务人员(系统用户)刷新浏览器或者清空浏览器 cookie 缓存的情况。 而对于用户而言,很多人一方面不懂如何操作,另一方面由于执行力问题&am…...
Redis系列(二):深入解读Redis的两种持久化方式
博客地址:blog.zysicyj.top Redis为什么要引入持久化机制 Redis引入持久化机制是为了解决内存数据库的数据安全性和可靠性问题。虽然内存数据库具有高速读写的优势,但由于数据存储在内存中,一旦服务器停止或崩溃,所有数据将会丢失…...
CNN之图像识别
文章目录 1. 图像识别1.1 模式识别1.2 图像识别的过程1.3 图像识别的应用 2. 深度学习发展2.1 深度学习为何崛起2.2 分类与检测2.3 常见的卷积神经网络 3. VGG3.1 VGG163.2 VGG16的结构:3.3 使用卷积层代替全连接3.4 1*1卷积的作用3.5 VGG16代码示例 4. 残差模型-Re…...
nvcc not found
检查cuda 安装成功 nvidia-smiCommand ‘nvcc’ not found, apt install nvidia-cuda-toolkitnvcc fatal : No input files specified; use option --help for more information # 注意是大写 V nvcc -V export PATH"/usr/local/cuda/bin:$PATH" expor…...
pdf怎么转换成jpg图片?这几个转换方法了解一下
pdf怎么转换成jpg图片?转换PDF文件为JPG图片格式在现代工作中是非常常见的需求,比如将PDF文件中的图表、表格或者图片转换为JPG格式后使用在PPT演示、网页设计等场景中。 【迅捷PDF转换器】是一款非常实用的工具,可以将PDF文件转换成多种不同…...
六轴机械臂码垛货物堆叠仿真
六轴机械臂码垛货物堆叠仿真 1、建立模型与仿真 clear,clc,close all addpath(genpath(.)) %建立模型参数如下: L(1) Link( d, 0.122, a , 0 , alpha, pi/2,offset,0); L(2) Link( d, 0.019 , a ,0.408 , alpha, 0,offset,pi/2); L(3) Link( d, …...
text-decoration 使用
text-decoration text-decoration 用于设置文本上的装饰性线条的外观。 它是 text-decoration-line、text-decoration-style、text-decoration-color 和text-decoration-thickness的缩写。 text-decoration: underline wavy red;text-decoration-line 设置文本装饰类型 可以…...
linux shell快速入门
linux shell快速入门 0 、前置1、简单使用 0 、前置 一安装linux的虚拟环境 1、简单使用 1、新建/usr/shell目录 2、新建hello.sh 文件 3、编写脚本文件# !/bin/bashecho "hello world"查看是否具备执行权限 新增执行权限 chomd x hello.sh执行hello.sh文件 /b…...
【Spring源码】小白速通解析Spring源码,从0到1,持续更新!
Spring源码 参考资料 https://www.bilibili.com/video/BV1Tz4y1a7FM https://www.bilibili.com/video/BV1iz4y1b75q bean的生命周期 bean–>推断构造方法(默认是无参构造,或指定的构造方法)–>实例化成普通对象(相当于ne…...
Unity 鼠标实现对物体的移动、缩放、旋转
文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine;public class ObjectManipulation : MonoBehaviour {// 缩放比例限制public float MinScale 0.2f;public float MaxScale 3.0f;// 缩放速率private float scaleRate 1f;// 新尺寸private float newScale;// 射线pri…...
67Class 的基本语法
Class 的基本语法 类的由来[constructor() 方法](https://es6.ruanyifeng.com/#docs/class#constructor() 方法)类的实例实例属性的新写法取值函数(getter)和存值函数(setter)属性表达式[Class 表达式](https://es6.ruanyifeng.c…...
企业数字化转型:无形资产占比测算(2007-2021年)
在本次数据中,参考张永珅老师的做法,利用无形资产占比测算数字化转型程度。 一、数据介绍 数据名称:企业数字化转型:无形资产占比 数据年份:2007-2021年 样本数量:32960条 数据说明:包括数…...
[centos]设置主机名
1、设置 hostnamectl set-hostname 名字 2、查看是否生效 hostnamectl status 3、打开一个新链接就可以了...
华为OD真题--新学习选址--带答案
2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 为了解新学期学生暴涨的问题,小乐村要建立所新学校 考虑到学生上学安全问题,需要所有学生家到学校的…...
Qt自定义对话框
介绍 自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出 流程 简化创建派生类 最后点击完成即可。 自定义ui界面,编写成员函数…...
Python 程序设计入门(018)—— format() 函数的用法详解
Python 程序设计入门(018)—— format() 函数的用法详解 目录 Python 程序设计入门(018)—— format() 函数的用法详解一、format() 函数的基本格式二、不提供 format_spec 参数三、设置字符串的对齐方式(align&#x…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...
