真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ceph-pg哈希的示例分析

小編給大家分享一下ceph-pg哈希的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站制作與策劃設(shè)計(jì),屏山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:屏山等地區(qū)。屏山做網(wǎng)站價(jià)格咨詢:18980820575

序言

ceph簡介

Ceph 是一個(gè)統(tǒng)一的分布式存儲(chǔ)系統(tǒng),設(shè)計(jì)初衷是提供較好的性能、可靠性和可擴(kuò)展性。底層的rados分布式存儲(chǔ)是ceph的精華所在,ceph以rados為基礎(chǔ)在上層封裝了對(duì)象、塊、文件存儲(chǔ)接口??蛻舳丝梢酝ㄟ^ceph提供的librados庫直連rados集群,待存對(duì)象通過計(jì)算獲取指定機(jī)器,然后將數(shù)據(jù)發(fā)送到該機(jī)器上存儲(chǔ)。因?yàn)槎际峭ㄟ^計(jì)算的方式,所以rados不需要維護(hù)一個(gè)中心table來存儲(chǔ)對(duì)象所在的位置,這種計(jì)算型的方式不僅快速,而且能夠節(jié)省節(jié)點(diǎn)的資源。 下圖為ceph的總體框架圖:

ceph-pg哈希的示例分析

數(shù)據(jù)如何映射

Ceph對(duì)集群中所有存儲(chǔ)資源進(jìn)行池化管理,對(duì)象通過計(jì)算直接映射到底層的osd中,為了更好的管理和映射數(shù)據(jù),ceph有如下的概念。 - object: 用戶需要存儲(chǔ)的對(duì)象,可以是文檔、視頻、音頻等等文件,用戶在存儲(chǔ)的時(shí)候需要指定唯一的對(duì)象名。 - pool:資源池,這是一個(gè)虛擬概念,一個(gè)集群可以分出多個(gè)pool,也可以使用單個(gè)pool,但是必須有一個(gè)pool。 用戶可以針對(duì)不同的pool指定不同的CRUSH規(guī)則,也可以針對(duì)不同的pool指定不同的數(shù)據(jù)冗余策略。 - pg:全稱 placement groups, 一個(gè)pool對(duì)應(yīng)多個(gè)pg, 通過hash對(duì)象會(huì)存儲(chǔ)到pool中的特定pg中。在創(chuàng)建pool的時(shí)候就要把pg數(shù)量規(guī)劃好。pg數(shù)量只可以增大不可以縮小。 - osd:最終的數(shù)據(jù)都是存儲(chǔ)在特定的osd上,一般情況下一個(gè)osd會(huì)管理一塊磁盤。

對(duì)象的映射邏輯架構(gòu)如下:

ceph-pg哈希的示例分析

pg哈希算法

pg哈希算法代碼:

/* 
x: 對(duì)象key值
b: pg 數(shù)
bmask: 掩碼
*/
static inline int ceph_stable_mod(int x, int b, int bmask)
{
    if ((x & bmask) < b)
        return x & bmask;
    else
        return x & (bmask >> 1);
}

object通過hash對(duì)應(yīng)到不同的pg中,ceph使用掩碼的方式來代替取模操作。例如PG數(shù)目對(duì)應(yīng)的最高比特位為n,則其掩碼為2^n -1, 將某個(gè)對(duì)象映射到PG時(shí),直接使用 object & (2^n -1)即可。這種直接與的方式其實(shí)就是取object二進(jìn)制的后 n 位作為pg number,這種方式不僅高效,而且運(yùn)算速度快。 可能有人會(huì)問這個(gè)n是怎么來的,其實(shí)n就是PG數(shù)二進(jìn)制表示中1最高位的1。ceph中如果設(shè)置PG數(shù)目為a,那么程序會(huì)得到一個(gè)最小的n,使 a <= 2^n,例如:(a=12, n=4), (a=16, n=4), (a=17, n=5),以此類推。 但是這種方案存在一個(gè)潛在的問題,如果運(yùn)維人員設(shè)置的PG數(shù)是2的冪次方的話,那么這種方案比較完美。如果PG數(shù)目不是2的冪次方的話這種映射會(huì)產(chǎn)生空穴,即將某些對(duì)象映射到一些實(shí)際上不存在的PG上。如下圖所示:

ceph-pg哈希的示例分析

上圖中如果如果PG數(shù)目為14,但是n=4,直接hash的話會(huì)產(chǎn)生 0~15 共計(jì)16中不同的結(jié)果,但是12 ~ 15這4個(gè)PG是不存在的,為了解決這個(gè)問題ceph做了降級(jí)方案。因?yàn)?n 為PG數(shù)的最高位,因此可以得到如下的方程式。

2^(n-1) < PG數(shù) <= 2^n

由此可得 [0,2^(n-1)]內(nèi)PG一定是存在的,可以通過 object & 2^(n-1) 來將那些實(shí)際上不存在的PG重新映射到這個(gè)小的區(qū)間內(nèi),如下圖所示:

ceph-pg哈希的示例分析

如上圖所示,ceph會(huì)將映射出不存在的PG重新映射到前面存在的區(qū)間中。所以如果ceph集群設(shè)置的PG數(shù)目不是2的冪次方的話,可能會(huì)造成中間某一段的PG所承載的數(shù)據(jù)高于其它PG,例如:PG數(shù)為12時(shí)會(huì)造成4,5,6,7四個(gè)PG所承載的對(duì)象數(shù)是其它PG的兩倍,所以集群在穩(wěn)定時(shí)PG數(shù)最好的2的冪次方。

PG擴(kuò)容

在現(xiàn)實(shí)使用中如果需要進(jìn)行擴(kuò)容,在pg雙倍擴(kuò)容的情況下可以一步步的擴(kuò)容以減少一步到位的擴(kuò)容帶來的數(shù)據(jù)遷移影響。 例如: 將 pg 數(shù)從 8 擴(kuò)容到 16 ,如果直接擴(kuò)容到16會(huì)遷移 1/2 的數(shù)據(jù),這種情況下集群內(nèi)部數(shù)據(jù)遷移可能會(huì)影響用戶的使用,管理員可以采取 8 -> 12 -> 16這樣的擴(kuò)容方式。 根據(jù)上述圖的描述,從8 -> 12 會(huì)遷移集群內(nèi)部 1/4 的數(shù)據(jù),也就是將pg數(shù)為 0~3 的數(shù)據(jù)遷移到 8~11 中,而 4~7 的數(shù)據(jù)是不會(huì)遷移的(因?yàn)橹匦耯ash它還是落到 4~7 這個(gè)區(qū)間),數(shù)據(jù)遷移完成后可以再將 pg 數(shù)從 12 ~16,這種情況下還是會(huì)遷移 1/4 的數(shù)據(jù)(將pg為 4~7 的數(shù)據(jù)遷移到 12~15 中),這樣分兩步遷移數(shù)據(jù)總的數(shù)據(jù)遷移量是一樣的,都是 1/2,但是分步遷移的話可以緩解一段時(shí)間內(nèi)的數(shù)據(jù)遷移量。

如果不是進(jìn)行雙倍擴(kuò)容的話情況可能就比較復(fù)雜了,也可以采取這種通過增長遷移時(shí)間來換取短時(shí)間內(nèi)少遷移數(shù)據(jù)的方案。

直接取模的弊端

可能有人會(huì)問為什么不使用簡單的取模呢,因?yàn)檫@種方式在擴(kuò)容的時(shí)候遷移的數(shù)據(jù)量無法控制。

設(shè): pg 數(shù)為 a,需要將 pg 數(shù)擴(kuò)容至 b, a 和 b 的最小公倍數(shù)為 d,某個(gè)對(duì)象的key值為 q

由此可以得到如下兩個(gè)方程式:
ca + e = q, e < a, q < d;
ub + v = q, v < b, q < d;

因?yàn)樽钚」稊?shù)為 d, 如果 c != 0 && u != 0, 所以 ca != ub, 所以 e != v

當(dāng) c == u == 0的情況下, e == v,
所以需要遷移數(shù)據(jù)比例為: (d-a)/d

由此可以得到直接取模的方式無法控制遷移的數(shù)據(jù)量,例如 pg 數(shù)從 8 -> 12,直接取模的話需要遷移 (24 - 8) / 24 = 2/3 的數(shù)據(jù)。

以上是“ceph-pg哈希的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享名稱:ceph-pg哈希的示例分析
標(biāo)題URL:http://weahome.cn/article/jcsghh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部