极速快3_快3信誉网_极速快3信誉网 - 极速快3,快3信誉网,极速快3信誉网是一个基于本地城市资讯管理的应用,里面汇集了所在城市最热门的民生资讯和便民服务功能,想知道你的家乡发生了什么,打开极速快3,快3信誉网,极速快3信誉网尽在掌握!

华云数据:Ceph的正确玩法之Ceph纠删码理论与实践

  • 时间:
  • 浏览:0

随着云计算业务的快速发展,国内外云计算企业的专利之争也愈发激烈。在云计算就说 的技术领域,专利储备往往代表着企业最新的技术实力。华云数据本期“智汇华云”专栏将针对“Ceph的正确玩法之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后面 ,完成对其他对象的存储操作。如图所示。

下面再看一下怎么使用纠删码读取数据,同样还是以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),最终将该结果返回给客户端。整个过程如图所示。

人太好纠删码要能提供和副本相近的数据可靠性,并降低冗余数据的开销,整体还前要提高存储设备的可用空间。就说 ,纠删码所带来的额外开销主就说 多量计算和网络高负载,优点同時 伴随缺点。不怎么是在好几个 硬盘出先故障的情况下,重建数据非常耗费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

本文由站长之家用户投稿,未经站长之家同意,严禁转载。如广大用户当我们,发现稿件所处不实报道,欢迎读者反馈、纠正、举报问提图片(反馈入口)。

免责声明:本文为用户投稿的文章,站长之家发布此文仅为传递信息,不代表站长之家赞同其观点,不对对内容真实性负责,仅供用户参考之用,不构成任何投资、使用建议。请读者自行核实真实性,以及由于所处的风险,任何后果均由读者自行承担。