天天看點

ceph rbd 基礎操作

# 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 [email protected]_snap01
```
2、列出建立的快照
```
# rbd snap list image02
或
# rbd ls -l
```
3、檢視快照詳細資訊
```
# rbd info [email protected]_snap01
```
4、克隆快照(快照必須處于被保護狀态才能被克隆)
```
# rbd snap protect [email protected]_snap01
# rbd clone rbd/[email protected]_snap01 kube/image02_clone01
```
5、檢視快照的children
```
# rbd children image02
```
6、去掉快照的parent
```
# rbd flatten kube/image02_clone01
```
7、恢複快照
```
# rbd snap rollback [email protected]_snap01
```
8、删除快照
```
# rbd snap unprotect [email protected]_snap01
# rbd snap remove [email protected]_snap01
```


## 導出導入RBD鏡像
1、導出RBD鏡像
```
# rbd export image02 /tmp/image02
```
2、導出RBD鏡像
```
# rbd import /tmp/image02 rbd/image02 --image-format 2 
```