Ceph塊設備管理與Openstack配置(上)

Oepnstack之CEPH系列是根據Ceph Cookbook整理的筆記,分爲以下幾個部分:

  1. 《Ceph簡介》

  2. 《Ceph集羣操作》

  3. 《Ceph塊設備管理與Openstack配置》

  4. 《深入Ceph》

  5. 《ceph優化與性能測試》

注意:此文對應ceph版本爲10.1.2

#ceph -v
ceph version 10.1.2(4a2a6f72640d6b74a3bbd92798bb913ed380dcd4)

前言

  目前接觸到的Mitaka版本Openstack中,ceph主要用來提供塊設備作爲cinder、nova、glance的存儲端。本篇也是講述的塊設備的相關概念及管理,以及在Openstack中虛擬機不同的啓動方式對應ceph中不同的存儲結構。本篇分爲兩個部分:塊設備的特性與rbd命令;Openstack中ceph塊設備使用。

Ceph塊設備

  Ceph塊設備即RBD(RADOS Block Device),RBD通過librbd將數據條帶化的存在ceph集羣的OSD上。同時RBD是建立RADOS層之上,這樣每一個塊設備都會分佈在多個ceph節點上。目前RBD驅動已經完美集成在linux內核中,提供了多種企業特性,如完整和增量快照(full and incremental snapshot)、自動精簡配置(thin provision)、寫時複製克隆(copy on write clone)、動態調整大小(dynamic resizing)、內存內緩存(In-memory caching)。
RBD的讀寫方式有下面兩種:
RBD使用

  • 1、在虛擬化引擎支持下,通過Hypervisor控制librbd庫來對塊設備讀寫。在對接上Openstack後,可以很好的利用RBD寫時複製特性來快速啓動多臺虛擬機,後面會進一步介紹相關內容。

  • 2、在映射完塊設備後,本地文件系統通過內核KRBD驅動直接訪問。

一、RBD命令操作

創建塊設備

~~~bash
rbd create  -p  volumes  --size 1024   rbd_test
-p 參數指定存儲池,--size 指定大小,默認以M爲單位,可以自己加單位如10G,最後rbd_test爲創建的鏡像名。

rbd ls|list   -p volumes
查看volumes池下的images即塊設備

rbd  du   -p volumes
查看volumes的使用情況。可以觀察到使用了精簡配置。

rbd info  -p volumes   rbd_test
查看rbd_test的相關信息,如大小,objects數量,order,format id和features。
~~~


Tips:

1、-p 參數有時候可省略,使用pool/image_name的方式,如rbd info volumes/rbd_test
2、 創建塊設備時默認object層爲2,即帶上了 –image-format 2的參數,會有許多高級性能,默認有features: layering, exclusive-lock, object-map, fast-diff, deep-flatten。


映射塊設備

rbd map volumes/rbd_test
映射rbd_test到本地

rbd showmapped  
查看映射的設備,有點問題,默認只能查看rbd池的塊設備,其他池的只能看上一條命令的輸出結果。默認從/dev/rbd0開始

mkfs.xfs  /dev/rbd0;mkdir  -p /mnt/rbd_test; mount /dev/rbd0   /mnt/rbd_test
格式化並掛載。


Tips:

1、map是報錯”rbd: sysfs write failed
rbd: map failed: (6) No such device or address“,這是因爲上面創建的object特性引起的,在我當前Ubuntu1610上,map命令不支持exclusive-lock之後等相關特性,需要手動指定layering特性,或者將image-format值設爲1

rbd create -p volumes --size 10  rbd_test1 --image-format 2 --image-feature layering



調整RBD鏡像大小

在上面的映射完塊設備格式化掛載後,使用resize命令調整RBD,然後用XFS在線調整特性擴容文件系統。

rbd resize  volume/rbd_test  --size 20
xfs_growfs -d /mnt/rbd_test

二、RBD快照與克隆

爲了深入瞭解Openstack中nova、cinder、glance之前的存儲關
系,需要學習RBD的快照與克隆。
快照是某時間點上生成的只讀RBD鏡像的副本。

1、RBD快照操作

echo "hello ,This is a file ready to delete!" >>/mnt/rbd_test/snap_test_file
在塊設備的掛載目錄創建一個文件。

rbd snap create volumes/rbd_test@snapshot1
創建一個snapshot1的鏡像。

rbd snap ls  volumes/rbd_test
查看volumes池中rbd_test鏡像所擁有的快照

##測試快照功能
rm  -rf /mnt/rbd_test/*

rbd snap rollback   volumes/rbd_test@snapshot1 
將volumes/rbd_test的快照snapshot1回滾

umount  /dev/rbd0 
mount /dev/rbd0 /mnt/rbd_test
ls  /mnt/rbd_test
觀察到文件恢復

## 快照的刪除
rbd snap  rm volumes/rbd_test@snapshot1
rbd snap purge volumes/rbd_test
批量刪除rbd_test上的鏡像。


Tips:

1、快照和被快照的鏡像是同等的,具有相同大小和特性,都是池中的一個鏡像。
2、新建的快照通過”rbd ls”查看不到,需要用”rbd du”


2、RBD克隆操作
  Ceph一個非常好的特性,即以COW(寫時複製)的方式從RBD快照創建克隆(clone),在ceph中也稱爲快照分層(snapshow layering)。
  在雲平臺中通常以創建快照來保護RBD鏡像(rbd du -p images查看)。然後再從快照上來啓動實例。啓動的實例是COW克隆鏡像。每一個克隆鏡像都需要讀取父鏡像的數據,因此父鏡像需要設置保護。當新的數據寫入克隆鏡像時會存在本身,克隆鏡像與RBD鏡像具有相同功能,如創建快照等。
rbd-clone

rbd snap create volumes/rbd_test@snapshot_for_clone
創建一個名爲snapshot_for_clone的鏡像

rbd snap protect  volumes/rbd_test@snapshot_for_clone
對此鏡像設置保護

rbd clone  volumes/rbd_test@snapshot_for_clone   volumes/clone_rbd
創建克隆鏡像

rbd info  volumes/clone_rbd
查看克隆鏡像

##將克隆鏡像獨立出來,完全擁有父鏡像數據,中斷依賴關係
rbd flatten  volumes/clone_rbd

Tips:

1、一個快照需要有分層特性(layering)才能創建COW克隆。在舊版本創建鏡像默認爲format-1類型,不具有此特性。

Ending:Ceph塊設備管理與Openstack配置上篇結束,下篇將開始記錄RBD在Openstack中的不同表現方式~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章