1. 程式人生 > 其它 >3、Ceph RBD介紹與使用.md

3、Ceph RBD介紹與使用.md

目錄

RBD介紹

RBD即RADOS Block Device的簡稱,RBD塊儲存是最穩定且最常用的儲存型別。RBD塊裝置類似磁碟可以被掛載。 RBD塊裝置具有快照、多副本、克隆和一致性等特性,資料以條帶化的方式儲存在Ceph叢集的多個OSD中。如下是對Ceph RBD的理解。

  • RBD 就是 Ceph 裡的塊裝置,一個 4T 的塊裝置的功能和一個 4T 的 SATA 類似,掛載的 RBD 就可以當磁碟用;
  • resizable:這個塊可大可小;
  • data striped:這個塊在Ceph裡面是被切割成若干小塊來儲存,不然 1PB 的塊怎麼存的下;
  • thin-provisioned:精簡置備,1TB 的叢集是能建立無數 1PB 的塊的。其實就是塊的大小和在 Ceph 中實際佔用大小是沒有關係的,剛創建出來的塊是不佔空間,今後用多大空間,才會在 Ceph 中佔用多大空間。舉例:你有一個 32G 的 U盤,存了一個2G的電影,那麼 RBD 大小就類似於 32G,而 2G 就相當於在 Ceph 中佔用的空間 ;

塊儲存本質就是將裸磁碟或類似裸磁碟(lvm)裝置對映給主機使用,主機可以對其進行格式化並存儲和讀取資料,塊裝置讀取速度快但是不支援共享。

ceph可以通過核心模組和librbd庫提供塊裝置支援。客戶端可以通過核心模組掛在rbd使用,客戶端使用rbd塊裝置就像使用普通硬碟一樣,可以對其就行格式化然後使用;客戶應用也可以通過librbd使用ceph塊,典型的是雲平臺的塊儲存服務(如下圖),雲平臺可以使用rbd作為雲的儲存後端提供映象儲存、volume塊或者客戶的系統引導盤等。

使用場景:

  • 雲平臺(OpenStack做為雲的儲存後端提供映象儲存)
  • K8s容器
  • map成塊裝置直接使用
  • ISCIS,安裝Ceph客戶端

RBD常用命令

命令 功能
rbd create 建立塊裝置映像
rbd ls 列出 rbd 儲存池中的塊裝置
rbd info 檢視塊裝置資訊
rbd diff 可以統計 rbd 使用量
rbd map 對映塊裝置
rbd showmapped 檢視已對映塊裝置
rbd remove 刪除塊裝置
rbd resize 更改塊裝置的大小

RBD配置操作

RBD掛載到作業系統

1、建立rbd使用的pool

# ceph osd pool create rbd  32 32
# ceph osd pool application enable rbd rbd 

2、建立一個塊裝置

# rbd create --size 10240 image01 

3、檢視塊裝置

# rbd ls
# rbd info image01

4、將塊裝置對映到系統核心

# rbd map image01 

5、禁用當前系統核心不支援的feature

# rbd feature disable foo_image exclusive-lock, object-map, fast-diff, deep-flatten

6、再次對映

# rbd map image01 

7、格式化塊裝置映象

# mkfs.xfs /dev/rbd0

8、mount到本地

# mount /dev/rbd0 /mnt
# umount /mnt

9、取消塊裝置和核心對映

# rbd unmap image01 

10、刪除RBD塊裝置

# rbd rm image01

快照配置

1、建立快照

rbd create --size 10240 image02
rbd snap create image02@image02_snap01

2、列出建立的快照

# rbd snap list image02
或
# rbd ls -l

3、檢視快照詳細資訊

# rbd info image02@image02_snap01

4、克隆快照(快照必須處於被保護狀態才能被克隆)

# rbd snap protect image02@image02_snap01
# rbd clone rbd/image02@image02_snap01 kube/image02_clone01

5、檢視快照的children

# rbd children image02

6、去掉快照的parent

# rbd flatten kube/image02_clone01

7、恢復快照

# rbd snap rollback image02@image02_snap01

8、刪除快照

# rbd snap unprotect image02@image02_snap01
# rbd snap remove image02@image02_snap01

匯出匯入RBD映象

1、匯出RBD映象

# rbd export image02 /tmp/image02

2、匯出RBD映象

# rbd import /tmp/image02 rbd/image02 --image-format 2