塊存儲(chǔ)空間管理

塊存儲(chǔ)資源管理

塊存儲(chǔ) 資源管理

由IO路徑看資源布局。

IO start

Volume層

Pool層

Thin LUN

Meta Volume

  • Root Extent

    • Alloc Queue
    • Free Queue
    • Map Tree Root
    • Free Tree Root

Data Volume

Alloc Queue

grain分配隊(duì)列

使用場(chǎng)景:

寫thin lun,在查詢map tree對(duì)應(yīng)grain未分配時(shí)觸發(fā)空間分配扫夜;

step1:空間以順序分配的方式進(jìn)行琳要,分配時(shí)隙笆,增加offset偏移并可能改變隊(duì)首(對(duì)首Item全部分配完時(shí))魏保,并生成grain info返回鲜侥。

step2:在map tree中插入新的映射項(xiàng)(grain id -> Extent ID + offset),如果和前一個(gè)node滿足合并條件則合并天揖。

step3:如果alloc queue中可分配的grain低于閾值夺欲,則觸發(fā)后臺(tái)空間分配,首先從SPA中獲取Extent并生成Item插入alloc queue隊(duì)尾今膊,如果SPA空間不足些阅,不能分配Extent,則從free tree中取出Item斑唬,直接插入到alloc queue市埋。

Item Head

Tier:0,1恕刘,2(為0時(shí)缤谎,一個(gè)bit表示一個(gè)grain,每升1褐着,乘以64)

Offset:記錄Extent已經(jīng)分配grain的偏移坷澡。

Bitmap:0xFFFFFFFFFFFFFFFF(64字節(jié))

Item

Item

...

Item Tail

Item

結(jié)構(gòu)

  • Extent ID

    表示歸屬的Extent ID

  • Tier

    多級(jí)位圖結(jié)構(gòu)

    0:bitmap一個(gè)bit表示一個(gè)grain的分配情況;

    1:bitmap一個(gè)bit表示64個(gè)grain的分配情況含蓉;

    2:bitmap一個(gè)bit表示64*64個(gè)grain的分配情況频敛;

    以此類推项郊;

  • Offset

    grain的分配采用順序分配的方式

    Tier為0時(shí),bitmap的置位便可表示每個(gè)grain的分配情況斟赚;

    Tier為1時(shí)着降,bitmap中為置為1的bit表示相應(yīng)64個(gè)grain均已分配。不存在64個(gè)grain部分分配拗军,tier卻為1的情況鹊碍,未集滿時(shí)tier不會(huì)提升。此時(shí)bitmap的置位不能表示每個(gè)grain的分配情況食绿,需要offset配合侈咕,每次分配一個(gè)grain,offset++器紧,遇到已經(jīng)置位的bit耀销,還需++64;

    Tier為2時(shí)铲汪,同上熊尉;

  • Bitmap

    0xffffffffffffffff(8字節(jié))

    對(duì)應(yīng)不同的tier,每個(gè)bit置位表示不同數(shù)量的grain分配情況掌腰,1狰住、64、64*64...

合并

歸屬于相同的Extent齿梁,且表示的grain范圍相同的Item可以合并催植。

tier為0的item,集滿64個(gè)bit后勺择,tier提升為1创南,并根據(jù)offset將新的item對(duì)應(yīng)位置的1個(gè)bit置位;

tier為1的item省核,集滿64*64個(gè)bit后稿辙,tier提升為2,并根據(jù)offset將新的item對(duì)應(yīng)位置的1個(gè)bit置位气忠;

以此類推邻储;

分配

Grain Free Tree

資源釋放樹

使用場(chǎng)景:

刪除thin lun,去激活快照等操作旧噪,需要釋放響應(yīng)的grain空間吨娜,本樹中記錄了已經(jīng)釋放的grain,釋放的grain從map tree摘下放到free queue舌菜,free queue將隊(duì)列中同一個(gè)extent的grain合并到一個(gè)item萌壳,最終和free tree的item合并,當(dāng)item集滿整個(gè)Extent時(shí),將Extent釋放給SPA袱瓮。

node

  • leaf node

    • key:extent id
    • value:item
  • leaf node

  • leaf node...

node

node...

Grain Map Tree

thin lun的空間分配樹缤骨。

使用場(chǎng)景:

1.寫thin lun時(shí),查詢本樹相應(yīng)grain是否分配尺借,未分配時(shí)從alloc queue分配grain并在本樹插入相應(yīng)node绊起。

2.刪lun、去激活快照等燎斩,需要回收空間虱歪,需要查詢并刪除本樹的節(jié)點(diǎn),同時(shí)查詢free t栅表,如果free queue已經(jīng)存在 相同的Extent的Item笋鄙,將相應(yīng)grain的offset bit置位,否則生成新的Item插入free queue的隊(duì)尾怪瓶。

node

  • leaf node

    相鄰的node萧落,如果屬于同一個(gè)Extent,且Grain ID也相鄰洗贰,則合并為一個(gè)leaf node以節(jié)省空間找岖。

在對(duì)Thin LUN做連續(xù)寫時(shí),從分配隊(duì)列分配的grain很可能滿足合并條件(在資源充足敛滋,從SPA分配到整個(gè)Extent時(shí)许布,連續(xù)寫分配的Grain必然可以合并;未從SPA分配到Extent時(shí)绎晃,去Free Tree取出Item分配蜜唾,這里由于釋放grain時(shí)的隨機(jī)性,能合并的可能較谢选)灵妨。

由于存在合并的情況,使用grain id來(lái)map tree查詢時(shí)落竹,可能響應(yīng)的grain已經(jīng)和前面的node合并,所以查詢策略略有不同货抄,未查詢到時(shí)述召,還需要查詢前面的node中value的范圍是否包含了查詢的grain。

- key:LBA/grain size
- value:Extent Id + offset
  • leaf node
  • leaf node...

node

node...

Ckg Map Tree

POOL的CKG映射樹(ckg id -> disk + lba)

負(fù)責(zé)ckg id到盤的路由

node

  • leaf node

    • key:ckg id
    • value:chunks{(diskid,LBA),...}
  • leaf node...

node

node...

Extent Map Tree

LUN的空間映射樹(extent id -> ckg id)

該樹負(fù)責(zé)extent到ckg的路由蟹地,由pool管理积暖,物理分布在root extent中,節(jié)點(diǎn)有nodeMgr分配在非預(yù)留的extent node上怪与。

讀寫:通過(guò)extent id進(jìn)行索引夺刑,查到樹上存在對(duì)應(yīng)的節(jié)點(diǎn),獲取ckg id和offset,到pool的ckg map tree上進(jìn)一步查詢遍愿;

node

  • leaf node

    • key:extent id
    • value:ckg id + offset
  • leaf node

  • leaf node...

node

...

node

Free Queue

grain空間釋放隊(duì)列

使用場(chǎng)景:

刪lun或去激活快照時(shí)存淫,觸發(fā)空間釋放;

step1:將grain id的映射信息從map tree中摘下沼填,并可能導(dǎo)致map tree node分裂(之前相鄰的node滿足屬于同一個(gè)Extent且grain id連續(xù))桅咆。

step2:以釋放的grain的Extent id + offset去free queue查找,若找到坞笙,將相應(yīng)bit置位岩饼,否則,生成新的Item插入隊(duì)尾薛夜。

step3:后臺(tái)釋放:遍歷free queue籍茧,將同一個(gè)extent的Item合并。

step4:將合并的Item去free tree查找梯澜,找到對(duì)應(yīng)項(xiàng)則合并寞冯,否則新插入Item,若合并后Item集滿整個(gè)Extent腊徙,將Extent釋放給SPA简十。

Question:step2先查詢,有相同Extent的Item置位對(duì)應(yīng)bit撬腾,為什么step3還可能合并同一Extent的Item螟蝙?存在同一個(gè)Extent的Item不能合并的情況?可能跟Item結(jié)構(gòu)有關(guān)民傻。胰默。

Item Tail

Item

Item

...

Item Head

Disks

CowTree(Snapshot)

node

  • leaf node

    相鄰的node,如果屬于同一個(gè)Extent漓踢,且Grain ID也相鄰牵署,則合并為一個(gè)leaf node以節(jié)省空間。

在對(duì)Thin LUN做連續(xù)寫時(shí)喧半,從分配隊(duì)列分配的grain很可能滿足合并條件(在資源充足奴迅,從SPA分配到整個(gè)Extent時(shí),連續(xù)寫分配的Grain必然可以合并挺据;未從SPA分配到Extent時(shí)取具,去Free Tree取出Item分配,這里由于釋放grain時(shí)的隨機(jī)性扁耐,能合并的可能較邢炯臁)。

由于存在合并的情況婉称,使用grain id來(lái)map tree查詢時(shí)块仆,可能響應(yīng)的grain已經(jīng)和前面的node合并构蹬,所以查詢策略略有不同,未查詢到時(shí)悔据,還需要查詢前面的node中value的范圍是否包含了查詢的grain庄敛。

- key:LBA/grain size
- value:Extent Id + offset
  • leaf node
  • leaf node...

node

node...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜜暑,隨后出現(xiàn)的幾起案子铐姚,更是在濱河造成了極大的恐慌,老刑警劉巖肛捍,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隐绵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拙毫,警方通過(guò)查閱死者的電腦和手機(jī)押逼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門泌枪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)读处,“玉大人排拷,你說(shuō)我怎么就攤上這事∪鼻埃” “怎么了蛀醉?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)衅码。 經(jīng)常有香客問(wèn)我拯刁,道長(zhǎng),這世上最難降的妖魔是什么逝段? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任垛玻,我火速辦了婚禮,結(jié)果婚禮上奶躯,老公的妹妹穿的比我還像新娘帚桩。我一直安慰自己,他們只是感情好嘹黔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布账嚎。 她就那樣靜靜地躺著,像睡著了一般儡蔓。 火紅的嫁衣襯著肌膚如雪醉锄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天浙值,我揣著相機(jī)與錄音,去河邊找鬼檩小。 笑死开呐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筐付,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼卵惦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瓦戚?” 一聲冷哼從身側(cè)響起沮尿,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎较解,沒(méi)想到半個(gè)月后畜疾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡印衔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年啡捶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸焙。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞎暑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出与帆,到底是詐尸還是另有隱情了赌,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布玄糟,位于F島的核電站勿她,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茶凳。R本人自食惡果不足惜嫂拴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贮喧。 院中可真熱鬧筒狠,春花似錦、人聲如沸箱沦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谓形。三九已至灶伊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寒跳,已是汗流浹背聘萨。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留童太,地道東北人米辐。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓胸完,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親翘贮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赊窥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348