久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ceph糾刪碼怎么用

183次閱讀
沒有評論

共計 3544 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 Ceph 糾刪碼怎么用的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

一、糾刪碼原理

糾刪碼 (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- >

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 糾刪碼怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3544字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 沅陵县| 开阳县| 阜宁县| 富锦市| 滁州市| 余江县| 平阴县| 翁牛特旗| 响水县| 清水河县| 永靖县| 龙州县| 清丰县| 富源县| 上杭县| 芒康县| 龙江县| 简阳市| 外汇| 海宁市| 庄河市| 崇仁县| 盈江县| 山东| 高安市| 佳木斯市| 泌阳县| 庆云县| 佛山市| 济宁市| 湖南省| 聊城市| 青浦区| 鄂伦春自治旗| 金坛市| 河间市| 固安县| 青川县| 景德镇市| 芮城县| 沙坪坝区|