ceph的rbd使用和理解(全)


 

Ceph支持一個非常好的特性,以COW(寫時復制)的方式從RBD快照創建克隆,在Ceph中被稱為快照分層。分層特性允許用戶創建多個CEPH RBD克隆實例。這些特性應用於OpenStack等雲平台中,使用快照形式保護ceph RBD 鏡像,快照是只讀的,但COW克隆是完全可以寫 ,可以多次來孵化實例,對雲平台來說是非常有用的。

    Ceph RBD鏡像有format-1  和 format-2兩種類型,RBD支持這兩種類型,但是分層特性COW克隆特性只支持format-2鏡像,默認RBD創建的鏡像是format-1。(這個在克隆的時候特別重要)

先看看自己的Linux內核支不支持rbd塊設備

modprobe rbd

如果有錯誤信息說明內核不支持,那你就先去升級一下內核吧~

沒有則繼續!

在一個ceph集群中,我們可以創建rbd塊設備來進行使用。先看一下我的pool

 

我們這里新建了一個test的pool,以下的塊設備都是建立在test這個pool中。我們看到這個test的pool是0KB的。

1、首先先創建一個塊設備

 

通過rbd create (pool_name)/(rbd_name) --size   xxxxxMB就可以創建一個塊設備了,這里有兩個知識點。

一個是斜杠 / 前面的是這個塊設備建立在的pool的名字,后面是這個塊設備的名字(自己定義的),我們在test這個pool上建立了一個叫myrbd1的塊設備,如果沒有斜杠 / 則默認建立在rbd這個pool上(重要!!!!)

還有一個是這個size的大小,這個大小可以超過你實際pool的大小,這個叫做瘦分配,也叫超賣和按需分配。創建塊之后可以通過指令rbd resize test/myrbd1 --size 51200 --allow-shrink來動態的更改。如下

 

2、映射改塊設備到你的機器

rbd map test/myrbd1

 

得到塊設備的映射/dev/rbd1

這個時候你就可以像操作機器上的 塊設備一樣操作該設備了。

3.掛載並且使用

 

如上,寫入文件系統以后就可以掛載到目錄上去啦!

然后我們 寫點東西進去試試

 

看到了嗎,我寫了100M的文件進目錄,ceph的test這個pool相應的使用了100M的數據,也就是對/root/test/目錄的操作將會直接寫到ceph集群的test這個pool中,然后寫到ceph的osd上。

4.創建快照

rbd snap create --snap mysnap test/myrbd1

 

如上創建了一個myrbd1的 快照,快照的名字叫做mysnap,接下來我們試試快照的回滾功能。

5.回滾

上一步我們創建了一個100M的空文件

 

我們先刪除該文件然后卸載塊, 然后進行回滾。

 

重新掛載/dev/rbd1然后發現!!file這個文件又出來啦~~

6.模板與克隆

先看看該塊設備支不支持創建快照模板

 image-format 必須為2

 

創建改塊設備也可以這樣設置

rbd create test/myrbd3 --size 102400 --image-format 2

把該塊做成模板,首先要把做成模板的快照做成protect(重要!!!)

rbd snap protect test/myrbd1@mysnap

 

(通過rbd snap unprotect test/myrbd1@mysnap可以去掉這個保護,但是這樣的話就 不能克隆了)

然后可以利用這個快照來當模板來克隆了,我們克隆一個叫myrbd2的塊 出來試試

先umount  myrbd1這個塊。

umount /dev/rbd1

然后克隆一個在test的pool的myrbd2的塊。

rbd clone test/myrbd1@mysnap test/myrbd2

 

 

 

如上看到test這個池上有兩個塊設備了,一個是原來的myrbd1,一個是通過myrbd的鏡像模板克隆出來的myrbd2。

接下來我們看看這個myrbd2看看和myrbd1有什么不一樣。

先映射myrbd2

rbd map test/myrbd2 

 

因為 是克隆myrbd1的,myrbd1上本來就有文件系統,所以myrbd2上也有文件系統,直接掛載就好了

 

看到了嗎!!!!myrbd2的內容上也是和myrbd1是相同的!!!(因為是克隆來的嘛)

看一下myrbd2信息

 

這個時候的myrbd2還是依賴myrbd1的鏡像mysnap的,如果myrbd1的mysnap被刪除或者怎么樣,myrbd2也不能夠使用了,要想獨立出去,就必須將父鏡像的信息合並flattern到子鏡像中,

 

這樣myrbd2就獨立於myrbd1了

可以通過如下方法刪除鏡像模板了

 

這個時候就已經刪除鏡像模板了。
————————————————
版權聲明:本文為博主「何泰展」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42551719/article/details/81386909

謝謝博主的分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM