返回顶部
首页 > 资讯 > 精选 >Ceph纠删码怎么用
  • 881
分享到

Ceph纠删码怎么用

2023-06-04 21:06:40 881人浏览 独家记忆
摘要

这篇文章给大家分享的是有关Ceph纠删码怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  一、纠删码原理  纠删码(Erasure coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输

这篇文章给大家分享的是有关Ceph纠删码怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  一、纠删码原理

  纠删码(Erasure coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输中的损耗问题。其基本原理就是把传输的信号分段,加入一定的校验再让各段间发生相互关联,即使在传输过程中丢失部分信号,接收端仍然能通过算法将完整的信息计算出来。在数据存储中,纠删码将数据分割成片段,把冗余数据块扩展和编码,并将其存储在不同的位置,比如磁盘、存储节点或者其他地理位置。如果需要严格区分,实际上按照误码控制的不同功能,可分为检错、纠错和纠删3种类型。

  ·检错码仅具备识别错码功能而无纠正错码功能。

  ·纠错码不仅具备识别错码功能,同时具备纠正错码功能。

  ·纠删码则不仅具备识别错码和纠正错码的功能,而且当错码超过纠正范围时,还可把无法纠错的信息删除。

  从纠删码基本的形态看,它是k个数据块+m个校验块的结构,其中k和m值可以按照一定的规则设定,可以用公式:n=k+m来表示。变量k代表原始数据或符号的值。变量m代表故障后添加的提供保护的额外或冗余符号的值。变量n代表纠删码过程后创建的符号的总值。当小于m个存储块(数据块或校验块)损坏的情况下,整体数据块可以通过计算剩余存储块上的数据得到,整体数据不会丢失。

  下面以k=2,m=1为例,介绍一下如何以纠删码的形式将一个名称为cat.jpg的对象存放在Ceph中,假定该对象的内容为ABCDEFGH。客户端在将cat.jpg上传到Ceph以后,会在主OSD中调用相应的纠删码算法对数据进行编码计算:将原来的ABCDEFGH拆分成两个分片,对应图11-2中的条带分片1(内容为ABCD)和条带分片2(内容为EFGH),之后再计算出另外一个校验条带分片3(内容为WXYZ)。按照crushmap所指定的规则,将这3个分片随机分布在3个不同的OSD上面,完成对这个对象的存储操作。如图所示。

  Ceph纠删码怎么用

  下面再看一下如何使用纠删码读取数据,同样还是以cat.jpg为例。客户端在发起读取cat.jpg请求以后,这个对象所在PG的主OSD会向其他关联的OSD发起读取请求,比如主OSD是图中的OSD1,当请求发送到了OSD2和OSD3,此时刚好OSD2出现故障无法回应请求,导致最终只能获取到OSD1(内容为ABCD)和OSD3(WXYZ)的条带分片,此时OSD1作为主OSD会对OSD1和OSD3的数据分片做纠删码解码操作,计算出OSD2上面的分片内容(即EFGH),之后重新组合出新的cat.jpg内容(ABCDEFGH),最终将该结果返回给客户端。整个过程如图所示。

  Ceph纠删码怎么用

  虽然纠删码能够提供和副本相近的数据可靠性,并降低冗余数据的开销,整体上能提高存储设备的可用空间。但是,纠删码所带来的额外开销主要是大量计算和网络高负载,优点同时伴随缺点。特别是在一个硬盘出现故障的情况下,重建数据非常耗费CPU资源,而且计算一个数据块时需要读出大量数据并通过网络传输。相比副本数据恢复,纠删码数据恢复时给网络带来巨大的负担。因此,使用纠删码对硬件的设备性能是一个较大的考验,这点需要注意。另外,需要注意的是,使用纠删码所建立的存储资源池无法新建RBD块设备。

  Ceph安装后默认有Default Rule,这个Rule默认是在Host层级进行三副本读写。副本技术带来的优点是高可靠性、优异的读写性能和快速的副本恢复。然而,副本技术带来的成本压力是较高的,特别是三副本数据情景下,每TB数据的成本是硬盘裸容量3倍以上(包括节点CPU和内存均摊开销)。纠删码具备与副本相近的高可用特性,而且降低了冗余数据的开销,同时带来了大量计算和网络高负载。

  二、纠删码实践

  纠删码是通过创建erasure类型的Ceph池实现的。这些池是基于一个纠删码配置文件进行创建的,在这个配置文件中定义了纠删码的特征值。现在我们将创建一个纠删码配置文件,并根据这个配置文件创建纠删码池。下面的命令将创建一个名为Ecprofile的纠删码配置文件,它定义的特征值是:k=3和m=2,两者分别表示数据块和校验块的数量。所以,每一个存储在纠删码池中的对象都将分为3(即k)个数据块,和2(即m)个额外添加的校验块,一共有5个块(k+m)。最后,这5(即k+m)个块将分布在不同故障区域中的OSD上。

  1、创建纠删码配置文件:

  # ceph osd erasure-code-profile set Ecprofilecrush-failure-domain=osd k=3 m=2

  2、查看配置文件

  # ceph osd erasure-code-profile ls

  Ecprofile

  default

  # ceph osd erasure-code-profile get Ecprofile

  crush-device-class=

  crush-failure-domain=osd

  crush-root=default

  jerasure-per-chunk-alignment=false

  k=3

  m=2

  plugin=jerasure

  technique=reed_sol_van

  w=8

  我们顺便也看Ceph默认的配置文件

  # ceph osd erasure-code-profile get default

  k=2

  m=1

  plugin=jerasure

  technique=reed_sol_van

  3、基于上一步生成的纠删码配置文件新建一个erasure类型的Ceph池:

  # ceph osd pool create Ecpool 16 16 erasureEcprofile

  pool 'Ecpool' created

  4、检查新创建的池的状态,你会发现池的大小是5(k+m),也就是说,erasure大小是5。因此,数据将被写入五个不同的OSD中:

  # ceph osd dump | grep Ecpool

  pool 8 'Ecpool' erasure size 5 min_size 4crush_rule 3 object_hash rjenkins pg_num 16 pgp_num 16 last_change 231 flagshashpspool stripe_width 12288

  5、现在我们创建个文件放到纠删码池中。

  # echo test > test

  # ceph osd pool ls

  Ecpool

  # rados put -p Ecpool object1 test

  # rados -p Ecpool ls

  object1

  6、检查EC池中和object1的OSDmap。命令的输出将清晰地显示对象的每个块所在的OSDID。正如步骤1)中说明的那样,object1被分为3(m)个数据块和2(k)个额外的校验块,因此,5个块分别存储在Ceph集群完全不同的OSD上。在这个演示中,object1一直存储在这5个OSD中,它们是osd.5、osd.1、osd.3、osd.2、osd.4。

  # ceph osd map Ecpool object1

  osdmap e233 pool 'Ecpool' (8) object'object1' -> pg 8.bac5debc (8.c) -> up ([5,1,3,2,4], p5) acting([5,1,3,2,4], p5)

  三、纠删码测试

  1、我们先来关闭一个osd

  # systemctl stop ceph-osd@3

  停止osd.3,检查EC池和object1的OSDmap。你应该注意,这里的osd.3变成NONE了,这意味着osd.3在这个池是不可用的:

  # ceph osd map Ecpool object1

  osdmap e235 pool 'Ecpool' (8) object'object1' -> pg 8.bac5debc (8.c) -> up ([5,1,NONE,2,4], p5) acting ([5,1,NONE,2,4],p5)

  2、我们再来关闭一个osd

  # systemctl stop ceph-osd@5

  停止osd.5,检查EC池和object1的OSDmap。你应该注意,这里的osd.5变成NONE了,这意味着osd.5在这个池是不可用的:

  # ceph osd map Ecpool object1

  osdmap e237 pool 'Ecpool' (8) object'object1' -> pg 8.bac5debc (8.c) -> up ([NONE,1,NONE,2,4], p1) acting([NONE,1,NONE,2,4], p1)

  3、我们从纠删码池中下载文件

  ## rados get -p Ecpool object1 /tmp/wyl

感谢各位的阅读!关于“Ceph纠删码怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Ceph纠删码怎么用

本文链接: https://lsjlt.com/news/239851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Ceph纠删码怎么用
    这篇文章给大家分享的是有关Ceph纠删码怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  一、纠删码原理  纠删码(Erasure Coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输...
    99+
    2023-06-04
  • docker中ceph osd误删除怎么恢复
    这篇文章给大家分享的是有关docker中ceph osd误删除怎么恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。模拟删除一个osd首先记录osd 状态[root@k8s-node1 ceph]#&n...
    99+
    2023-06-04
  • ceph admin socket怎么用
    这篇文章给大家分享的是有关ceph admin socket怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ceph admin socket利用ceph admin socket可以获得ceph的在线参数,...
    99+
    2023-06-27
  • centos7.1怎么手动安装ceph
    这篇文章主要介绍centos7.1怎么手动安装ceph,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.准备环境 centos7.1主机一台更新yum源[root@cgsl ]# yum ...
    99+
    2023-06-10
  • 怎么用Python编写一个拼写纠错器
    这篇文章主要介绍“怎么用Python编写一个拼写纠错器”,在日常操作中,相信很多人在怎么用Python编写一个拼写纠错器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python编写一个拼写纠错器”的疑...
    99+
    2023-06-04
  • ceph-immmutable-object-cache有什么用
    这篇文章主要为大家展示了“ceph-immmutable-object-cache有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ceph-immmutable-object-cache有...
    99+
    2023-06-02
  • 域名纠错系统怎么管理
    域名纠错系统需要进行以下管理:1. 建立域名纠错系统的管理团队,负责系统的运营和维护。2. 建立域名纠错系统的用户管理机制,包括用户...
    99+
    2023-06-10
    域名纠错系统 域名
  • 域名纠错系统怎么解决
    域名纠错系统可以通过以下几个步骤来解决: 检测:系统首先需要能够检测出域名纠错情况,例如拼写错误、错字、漏字等。 提醒:一旦...
    99+
    2024-04-17
    域名
  • Fedora19使用ceph出现故障怎么解决
    要解决Fedora 19上Ceph出现的故障,可以遵循以下步骤:1. 检查Ceph节点的状态:使用命令`ceph status`来检...
    99+
    2023-09-22
    Fedora ceph
  • sql中用代码删除两列内容怎么删
    通过 alter table 语句删除两列:1. 确定要删除的列名;2. 编写语句:alter table table_name drop column column_name1, co...
    99+
    2024-05-07
    mysql
  • navicat怎么用代码删除数据
    在 navicat 中使用代码删除数据需要五步:建立连接并打开表。在编辑器窗口中输入 delete from where 。确保选择了正确的 sql 编辑器选项卡。...
    99+
    2024-04-24
    navicat
  • ceph集群安装报错怎么办
    这篇文章给大家分享的是有关ceph集群安装报错怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建密钥时报错[root@node1 ~]#  ceph-deploy gatherkeys node1...
    99+
    2023-06-04
  • 怎么解决域名纠错系统问题
    解决域名纠错系统的方法:1、登陆域名解析后台,看域名解析是否正常,如果不正常,找空间商和域名服务商资讯解决方法;2、打开控制面板依次选择网络连接、本地连接、属性、TCP/IP、属性,把本地区的网通DNS填上;3、把主要DNS和次要DNS改为...
    99+
    2024-04-02
  • 怎么用Python容错的前缀树实现中文纠错
    这篇文章主要介绍“怎么用Python容错的前缀树实现中文纠错”,在日常操作中,相信很多人在怎么用Python容错的前缀树实现中文纠错问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python容错的前缀树...
    99+
    2023-06-20
  • mysql怎么删除用户名和密码
    要删除MySQL数据库中的用户名和密码,可以使用DELETE语句。以下是一些示例: 删除特定用户名和密码的用户: DEL...
    99+
    2024-05-21
    mysql
  • 怎么在CentOS 7.0上配置Ceph存储
    这篇文章主要讲解了“怎么在CentOS 7.0上配置Ceph存储”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在CentOS 7.0上配置Ceph存储”吧!Ceph是一个将数据存储在单一...
    99+
    2023-06-16
  • 域名纠错系统打不开怎么解决
    如果您遇到域名纠错系统无法打开的问题,可以尝试以下解决方法:1. 确认网络连接正常:检查您的网络连接是否正常,可以尝试重新连接网络或...
    99+
    2023-06-12
    域名纠错系统 域名
  • Ubuntu 16.04中怎么安装Ceph存储集群
    这篇文章主要介绍了Ubuntu 16.04中怎么安装Ceph存储集群的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ubuntu 16.04中怎么安装Ceph存储集群文章都会有所收获,下面我们一起来看看吧。Cep...
    99+
    2023-06-28
  • 怎么理解Ceph分布式存储集群
    怎么理解Ceph分布式存储集群,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的...
    99+
    2023-06-06
  • css删除线代码怎么写
    这篇文章主要讲解了“css删除线代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css删除线代码怎么写”吧! css删除...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作