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

对象存储Ozone EC应用和优化

01


前言

1.1 EC

纠删码(Erasure Coding)简称 EC,是一种编码技术,通常被用于 RAID 和通信领域来保证数据的可靠性。采用纠删码编码的文件通常称为纠删码文件或者 EC 文件,EC 文件在小部分损坏时,也能够解码出可靠的数据。

Ozone 的数据可靠性是通过冗余副本实现的,为了保证某一文件的可靠性,通常要付出原文件几倍(通常是 3 倍)大小的存储。随着数据量的不断增长,冗余副本将会带来巨大的成本开销,为了降低冗余数据成本,Ozone引入了纠删码技术。

1.2 数据冷热特性

数据的冷热特性‌是指数据在存储和访问频率上的差异,通常根据数据的使用频率和重要性进行分类。热数据是指那些经常被访问的数据,通常存储在高性能的存储系统中,以确保快速的访问速度。而‌冷数据则是指那些不常被访问的数据,通常存储在成本较低的存储介质上,以节省存储成本和访问延迟‌。

据IDC统计,实际生产环境中,热数据仅占10%,冷数据占60%,剩下30%则为温数据。

02


EC在Ozone中的应用

2.1 EC的优势

前言中介绍到,为了保证文件可靠性,Ozone底层存储采用三副本,即假如用户写入一个2M大小的文件,实际底层存储容量为6M。而如果使用EC编码的方式存储,如果采用3-2-512K,实际存储容量为4M,采取此方式编码的文件相比于三副本,可节省约 33% 的存储;如果采用4-2-512K,则实际存储容量为3M,采取此方式编码的文件相比于三副本,可节省约 50% 的存储。由此得出结论:EC编码存储能够有效节约存储空间,且EC比例越高,效果越好。

2.2 EC在对象存储产品中的应用

2.2.1 智能分层

由于文件存在冷热特性,对于热文件,这些文件对业务至关重要且需要频繁访问,因此在存储时可以采用三副本存储,以实现快速数据访问‌。对于温文件或者冷文件,这些文件的访问频率没有那么频繁,且用户能够接受较高的访问延迟,在存储时可以采用EC编码的方式存储。由于EC存储的成本较低,因此根据文件访问情况进行分类,不同的类型采用不同的存储方式,可以有效地降低用户成本,提高资源使用率。

基于上述特性,对象存储推出智能分层存储产品类型。

智能分层是一种根据文件生命周期来分层降级存储的方式。如上图所示,文件刚写入时访问频率高,此时底层次采用标准多副本存储;当一段时间后,访问频率下降,文件逐渐由热转温,此时采用EC编码方式存储;在一段时间后文件访问频率继续下降,此时采用更高的EC配比存储;最后变成冷数据,此时转为归档存储。

用户可以根据自身的需求配置降级的时间及转存的类型。文件写入时会在元信息中记录写入时间,定时扫描文件的信息,如果文件在到达降级时间点之前未出现访问情况,则将该文件按降级后的存储方式覆盖写一遍;如果在到达下次降级时间点之前,文件被访问,则此时降级时间重置。

2.2.2 归档存储

在智能分层中,当数据最终转成冷数据,基于冷数据存储需求,对象存储推出归档存储产品。

归档存储适用于存储时间长且访问频率低的数据存储,采用的EC比例高,读取时延也高,因此读取前需要进行解冻。

解冻的过程中会将数据另写一份三副本存储的临时数据,此时从临时数据中读取。

2.3 动态EC配比

在前文介绍到,不同的EC比例对节省存储空间有不同的效果。那如果EC比例相同的情况下,不同的块大小是否也会对存储空间产生影响。

以下面这个例子为例,此时写一个512K大小的文件,都是用3-2的EC比例。当块大小分片是256K、512K和1M时,最终占用空间分别为1M,1.5M,2.5M。

由此可知,不同的EC配会影响最终占用的存储空间。因此,当写文件时,先根据文件大小,算出不同EC配比下最终占用空间大小,选择空间占用最少的EC配比,可以最大限度的节省存储空间。

2.4 EC的限制

一是性能问题,以6-3-512K为例,每个文件块由原来的 3 副本变成了包含9个Block的Block Group,而且这9个Block必须分布在不同的机器,每次读操作至少需要6个Block 才能还原数据,也就是至少需要6个DN同时返回,数据才能被正常解析;而在3副本模式下,一个DN上就有完整的 Block,只需要最多1个DN返回就可以读取,所以EC在生产中可能会放大DataNode的请求量,带来额外的负担。

二是如果数据块有损坏的情况,读取后还需要对数据修复,这部分需要消耗cpu,并且EC比例越高,数据块损坏的概率越高。

03


EC修复限速

EC比例越高,数据块损坏的概率越高,由此带来了EC数据修复的问题。Ozone社区的EC修复触发条件有两种:一是读修复,即当读到丢失副本的文件时,会触发异步数据修复;二是Datanode定时向SCM(Storage Container Manage)汇报副本,当发现某个副本缺失时,会触发修复任务。

由于数据修复会消耗cpu,而EC数据修复是异步任务,且没有限制单个DanaNode上数据修复任务并发数,可能会导致修复任务消耗大量cpu,影响线上稳定性。

因此我们对于EC修复任务增加了限流功能,其主要是利用令牌桶原理,对单个DanaNode上数据修复任务并发数进行限制,如果当前任务数还未达到上限,则起异步修复任务修复数据,否则任务将进入队列等待令牌释放;如果超过最长等待时间,则此次修复任务舍弃,等待下次触发修复任务。

下面是增加限速后,DanaNode cpu使用率波形图。当增加限速后,cpu使用率明显下降。

推荐阅读:

智汇云 API 市场:赋能大模型创新

OpenAI-o4mini-RFT 技术调研及实践

极速转码的设计与实现


更多技术干货,

请关注“360智汇云开发者”👇

360智汇云官网:https://zyun.360.cn(复制在浏览器中打开)

更多好用又便宜的云产品,欢迎试用体验~

添加工作人员企业微信👇,get更快审核通道+试用包哦~

图片

http://www.xdnf.cn/news/899893.html

相关文章:

  • 大语言模型提示词(LLM Prompt)工程系统性学习指南:从理论基础到实战应用的完整体系
  • 装饰模式(Decorator Pattern)重构java邮件发奖系统实战
  • leetcode_206 反转链表
  • PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
  • 元图CAD:一键解锁PDF转CAD,OCR技术赋能高效转换
  • 网络安全逆向分析之rust逆向技巧
  • 不到 2 个月,OpenAI 火速用 Rust 重写 AI 编程工具。尤雨溪也觉得 Rust 香!
  • 三十四、面向对象底层逻辑-SpringMVC九大组件之FlashMapManager接口设计哲学
  • C#学习第28天:内存缓存和对象池化
  • vscode使用系列之快速生成html模板
  • CANFD 数据记录仪在汽车售后解决偶发问题故障的应用
  • 浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
  • Python使用clickhouse-local和MySQL表函数实现从MySQL到ClickHouse数据同步
  • 全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
  • Spring Cloud 2025.0.0 Gateway迁移全过程详解
  • Unreal从入门到精通之 UE4 vs UE5 VR性能优化实战
  • 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统
  • 学习笔记(25):线性代数,矩阵-矩阵乘法原理
  • NoSQL子Redis哨兵
  • Android Test3 获取的ANDROID_ID值不同
  • logstash拉取redisStream的流数据,并存储ES
  • uni-app 项目支持 vue 3.0 详解及版本升级方案?
  • LangChain【8】之工具包深度解析:从基础使用到高级实践
  • Vue3 + UniApp 蓝牙连接与数据发送(稳定版)
  • FFmpeg 低延迟同屏方案
  • LeetCode 热题 100 74. 搜索二维矩阵
  • 计算机视觉与深度学习 | 基于MATLAB的图像特征提取与匹配算法总结
  • LinkedBlockingQueue、ConcurrentLinkedQueue和ArrayBlockingQueue深度解析
  • 在 Kali 上打造渗透测试专用的 VSCode 环境