Ceph入门到精通-文件条带化 stripe unit,chunk

文件条带化

以下文本描述了 Ceph 文件系统客户端中的文件是如何 存储在 RADOS 中的对象之间。

CEPH_FILE_LAYOUT

Ceph 将给定文件的数据分布(条带化)到多个 的基础对象。文件数据映射到这些对象的方式 由ceph_file_layout结构定义。数据分布 是修改后的 RAID 0,其中数据在一组对象上条带化 设置为(每个文件)固定大小,此时另一组对象 保存文件的数据。第二组也不超过 固定的数据量,然后使用另一组数据,依此类推。

定义一些术语将大大有助于解释 文件数据在 Ceph 对象中的布局方式。

  • 文件

    连续数据的集合,从 Ceph 客户端(即使用 Ceph 的 Linux 系统上的文件 存储)。文件的数据分为固定大小 “条带单元”,存储在 Ceph 的“对象”中。

  • 条带单元

    RAID 0 中使用的数据块的大小(以字节为单位) 文件的分发。文件的所有条带单位都相等 大小。最后一个条带单元通常是不完整的,即 表示文件末尾的数据以及未使用的数据 超出它的“空间”,直到固定条带单元大小的末尾。

  • 条带计数

    构成 RAID 0 的连续条带单元数 文件数据的“条带化”。

  • 条纹

    连续的文件数据范围,RAID 0 条带化“条带化” 计数“固定大小的”条带单元“块中的对象。

  • 对象

    由 Ceph 存储维护的数据集合。对象是 用于保存部分 Ceph 客户端文件。

  • 对象集

    一组对象,它们共同表示 一个文件。

ceph_file_layout结构中的三个字段定义了此映射:

u32 fl_stripe_unit;
u32 fl_stripe_count;
u32 fl_object_size;

(__le32,它们实际上是以磁盘格式维护的。

前两个字段的作用应该从 上面的定义。

第三个字段是用于 返回文件数据。对象大小是条带单位的倍数。

文件的数据被阻止为条带单元和连续条带 单位存储在对象集中的对象上。对象数 在集合中与条带计数相同。没有对象存储文件 数据将超过文件指定的对象大小,因此在一些 固定数量的完整条带,使用新的对象集来存储 后续文件数据。

请注意,默认情况下,Ceph 使用简单的条带化策略,其中 object_size 等于 stripe_unit,stripe_count 是 1。这很简单 在每个对象中放置一个stripe_unit。

下面是一个更复杂的示例:

file size = 1 trillion = 1000000000000 bytesfl_stripe_unit = 64KB = 65536 bytes
fl_stripe_count = 5 stripe units per stripe
fl_object_size = 64GB = 68719476736 bytes

这意味着:

file stripe size = 64KB * 5 = 320KB = 327680 bytes
each object holds 64GB / 64KB = 1048576 stripe units
file object set size = 64GB * 5 = 320GB = 343597383680 bytes(also 1048576 stripe units * 327680 bytes per stripe unit)

所以文件的 1 万亿字节可以划分为完整的对象 集合,然后是完整的条带,然后是完整的条带单元,最后是 单个不完整的条带单元:

- 1 trillion bytes / 320GB per object set = 2 complete object sets(with 312805232640 bytes remaining)
- 312805232640 bytes / 320KB per stripe = 954605 complete stripes(with 266240 bytes remaining)
- 266240 bytes / 64KB per stripe unit = 4 complete stripe units(with 4096 bytes remaining)
- and the final incomplete stripe unit holds those 4096 bytes.

下面的 ASCII 艺术试图捕捉到这一点:

   _________   _________   _________   _________   _________/object  0\ /object  1\ /object  2\ /object  3\ /object  4\+=========+ +=========+ +=========+ +=========+ +=========+|  stripe | |  stripe | |  stripe | |  stripe | |  stripe |
o |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | stripe 0
b |     0   | |     1   | |     2   | |     3   | |     4   |
j |---------| |---------| |---------| |---------| |---------|
e |  stripe | |  stripe | |  stripe | |  stripe | |  stripe |
c |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | stripe 1
t |     5   | |     6   | |     7   | |     8   | |     9   ||---------| |---------| |---------| |---------| |---------|
s |     .   | |     .   | |     .   | |     .   | |     .   |
e       .           .           .           .           .
t |     .   | |     .   | |     .   | |     .   | |     .   ||---------| |---------| |---------| |---------| |---------|
0 |  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe|   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 1048575| 5242875 | | 5242876 | | 5242877 | | 5242878 | | 5242879 |\=========/ \=========/ \=========/ \=========/ \=========/_________   _________   _________   _________   _________/object  5\ /object  6\ /object  7\ /object  8\ /object  9\+=========+ +=========+ +=========+ +=========+ +=========+|  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe
o |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 1048576
b | 5242880 | | 5242881 | | 5242882 | | 5242883 | | 5242884 |
j |---------| |---------| |---------| |---------| |---------|
e |  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe
c |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 1048577
t | 5242885 | | 5242886 | | 5242887 | | 5242888 | | 5242889 ||---------| |---------| |---------| |---------| |---------|
s |     .   | |     .   | |     .   | |     .   | |     .   |
e       .           .           .           .           .
t |     .   | |     .   | |     .   | |     .   | |     .   ||---------| |---------| |---------| |---------| |---------|
1 |  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe|   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 2097151| 10485755| | 10485756| | 10485757| | 10485758| | 10485759|\=========/ \=========/ \=========/ \=========/ \=========/_________   _________   _________   _________   _________/object 10\ /object 11\ /object 12\ /object 13\ /object 14\+=========+ +=========+ +=========+ +=========+ +=========+|  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe
o |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 2097152
b | 10485760| | 10485761| | 10485762| | 10485763| | 10485764|
j |---------| |---------| |---------| |---------| |---------|
e |  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe
c |   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 2097153
t | 10485765| | 10485766| | 10485767| | 10485768| | 10485769||---------| |---------| |---------| |---------| |---------|
s |     .   | |     .   | |     .   | |     .   | |     .   |
e       .           .           .           .           .
t |     .   | |     .   | |     .   | |     .   | |     .   ||---------| |---------| |---------| |---------| |---------|
2 |  stripe | |  stripe | |  stripe | |  stripe | |  stripe | stripe|   unit  | |   unit  | |   unit  | |   unit  | |   unit  | 3051756| 15258780| | 15258781| | 15258782| | 15258783| | 15258784||---------| |---------| |---------| |---------| |---------||  stripe | |  stripe | |  stripe | |  stripe | | (partial| (partial|   unit  | |   unit  | |   unit  | |   unit  | |  stripe | stripe| 15258785| | 15258786| | 15258787| | 15258788| |  unit)  | 3051757)\=========/ \=========/ \=========/ \=========/ \=========/

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

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

相关文章

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array arrays Instructions According to the lodash documentation, _.drop creates a slice of an array with n elements dropped from the beginning. Your challenge is to write your…

RabbitMQ一条消息被多个消费者消费

前言:可略过 正常情况下交换机和queue绑定,消息经过交换机发送给指定的队列。队列的消息被监听消费后就被删除,queue的消息仅能被消费一次。 如何解决呢,如果单从queue的角度出发,可能会联想到fanout-广播模式&#xf…

1.6 基本安全设计准则

思维导图: 1.6 基本安全设计准则笔记 目标:理解和遵循一套广泛认可的安全设计准则,以指导保护机制的开发。 主要准则: 机制的经济性:安全机制应设计得简单、短小,便于测试和验证,减少漏洞和降…

【数据结构】顺序表实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:1. 顺序表的基本内容1.1 概念及结构1.2 时间和空间复杂度1.3 基本操作1.4 顺序表的优缺点 2. 静态顺序表…

自动化测试注意事项

什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念,广义上来讲&#…

华锐技术何志东:证券核心交易系统分布式改造将迎来规模化落地阶段

近年来,数字化转型成为证券业发展的下一战略高地,根据 2021 年证券业协会专项调查结果显示,71% 的券商将数字化转型列为公司战略任务。 在落地数字化转型战略过程中,证券业核心交易系统面临着不少挑战。构建新一代分布式核心交易…

06 MIT线性代数-线性无关,基和维数Independence, basis, and dimension

1. 线性无关 Independence Suppose A is m by n with m<n (more unknowns than equations) Then there are nonzero solutions to Ax0 Reason: there will be free variables! A中具有至少一个自由变量&#xff0c;那么Ax0一定具有非零解。A的列向量可以线性组合得到零向…

酷克数据出席永洪科技用户大会 携手驱动商业智能升级

10月27日&#xff0c;第7届永洪科技全国用户大会在北京召开。酷克数据作为国内云原生数仓代表企业&#xff0c;受邀出席本次大会&#xff0c;全面展示了云数仓领域最新前沿技术&#xff0c;并进行主题演讲。 携手合作 助力企业释放数据价值 数据仓库是商业智能&#xff08;BI…

Easy Javadoc插件的使用教程

目录 一、安装Easy Javadoc插件 二、配置注释模板 三、配置翻译 一、安装Easy Javadoc插件 在idea的File-Settings-Plugins中搜索Easy Javadoc插件&#xff0c;点击install进行安装&#xff0c;安装完成后需要restart IDE&#xff0c;重启后插件生效。 二、配置注释模板 …

openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置

文章目录 openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置111.1 给用户直接授予某对象的权限111.2 给用户指定角色111.3 回收用户权限 openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置 111.1 给用户直接授予某对象的权限 …

SIT3088E3.0V~5.5V 供电,ESD 15kV HBM,256 节点,14Mbps 半双工 RS485/RS422 收发器

SIT3088E 是一款 3.0V~5.5V 宽电源供电、总线端口 ESD 保护能力 HBM 达到 15kV 以上、总 线耐压范围达到 15V 、半双工、低功耗&#xff0c;功能完全满足 TIA/EIA-485 标准要求的 RS-485 收发器。 SIT3088E 包括一个驱动器和一个接收器&#xff0c;两者均可独立…

SpringCloud 微服务全栈体系(七)

第九章 Docker 一、什么是 Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0c;环境不一定一致…

MySQL系列-架构体系、日志、事务

MySQL架构 server 层 &#xff1a;层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等&#xff09;&#xff0c;所有跨存储引擎的功能都在这一层实现&am…

行情分析——加密货币市场大盘走势(10.31)

目前大饼依然在33000-36000这个位置震荡&#xff0c;需要等待指标修复&#xff0c;策略就是逢低做多&#xff0c;做短线。最近白天下跌&#xff0c;晚上涨回来&#xff0c;可以小仓位入场多单&#xff0c;晚上离场下车。 以太同样是震荡行情&#xff0c;看下来以太目前在补涨&a…

VHDL测试文件的读入和写出

相关库 use std.textio.all; use IEEE.STD_LOGIC_TEXTIO.ALL;相关参数 file output_file :text; //fid variable fstatus :file_open_status; variable buf :line; //buffer相关函数 //文件打开函数 file_open(file_open_status, fid, file_…

Mybatis—基础操作

mybatis入门后&#xff0c;继续学习mybatis基础操作。 目录 Mybatis基础操作准备工作删除操作日志输入预编译SQLSQL注入参数占位符 新增操作基本新增添加后返回主键 更新操作查询操作根据id查询数据封装条件查询条件查询 Mybatis基础操作 准备工作 根据下面页面原型及需求&am…

python:Paramiko / SCP-检查文件是否在远程主机上

关于python&#xff1a;Paramiko / SCP-检查文件是否在远程主机上 | 码农家园 (codenong.com)

Servlet 设置启动时机(web.xml方式和@WebServlet方式)

1、通过web.xml方式 5)Servlet的启动时机 - 默认情况下&#xff0c;servlet是不会随着容器的启动而被实例化的&#xff0c;只有当第一次给我发请求时才会被实例化那么&#xff0c;这种情况对于第一次请求是不公平的因此&#xff0c;为了提高用户体验度&#xff0c;提高服务器的…

【云原生-K8s】Kubernetes安全组件CIS基准kube-beach安装及使用

基础介绍kube-beach介绍kube-beach 下载百度网盘下载wget下载 kube-beach安装kube-beach使用基础参数示例结果说明 基础介绍 为了保证集群以及容器应用的安全&#xff0c;Kubernetes 提供了多种安全机制&#xff0c;限制容器的行为&#xff0c;减少容器和集群的攻击面&#xf…

记录一次修改虚拟机静态ip的坑-与docker有关

修改虚拟机静态ip的坑&#xff08;与docker有关&#xff09; 由于我换了个移动wifi&#xff0c;我想把自己电脑上的虚拟机的静态ip也更改一下&#xff0c;但是改完静态ip之后我发现我可以ping得通我的虚拟机ip&#xff0c;但是用telnet命令访问我的3306端口却访问不通了&#x…