中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ceph糾刪碼怎么用

發布時間:2021-12-17 11:08:37 來源:億速云 閱讀:236 作者:小新 欄目:云計算

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂托克旗| 秀山| 庄河市| 神农架林区| 玉树县| 南陵县| 乌拉特后旗| 沁源县| 格尔木市| 夏邑县| 奉贤区| 遵义县| 将乐县| 申扎县| 陈巴尔虎旗| 鸡泽县| 电白县| 泾川县| 饶河县| 安远县| 布拖县| 历史| 大余县| 新昌县| 铜鼓县| 上林县| 清丰县| 桐庐县| 武陟县| 南安市| 苏尼特右旗| 密山市| 和平区| 玛曲县| 金溪县| 宝坻区| 始兴县| 宣化县| 宜城市| 楚雄市| 闸北区|