NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落
關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 154596

    累積人氣

  • 74

    今日人氣

    0

    訂閱人氣

Ceph:大數據xPB規模分散式軟體定義儲存系統 (二):運維與監控by Navier

 [ Ceph 指令操作 ]  從現在開始我的操作使用 Ceph Jewel 10.2 做後續演示

man ceph
 
#列表ceph指令參數


ceph -v   #檢視ceph version 目前Navier已升級到10.2 jewel 發行版本

ceph -w   #檢視目前Ceph所執行動態訊息輸出與檢視(Debug Level)


ceph health   #Show Ceph 集群健康狀況

ceph  -s      
 #ceph 集群架構訊息輸出(目前有2 Monitor(mon1,mon2),2 OSD(osd.0,osd.1),


ceph df   #查看現有pool磁碟使用率,目前有兩個pool,rbd為預設,稍早測試我另建構一個"bingo"

                   取代前篇的"love"(目前更名為"bingo" %USD=0.07) 最大容量15GB

rbd ls bingo #查看bingo底下image訊息

rbd info bingo/kiki    #檢視bingo底下image"kiki" 詳細資訊

2016-05-18 20:11:52.679290 7f256a208700 -1 librbd::image::OpenRequest: RBD image

format 1 is deprecated. Please copy this image to image format 2.

rbd image 'kiki':
        size 15360 MB in 3840 objects
        order 22 (4096 kB objects)
        block_name_prefix: rb.0.10a8.2ae8944a
        format: 1

將 image1 轉換image2 步驟

rbd export bingo/kiki   /tmp/img     #將現有image 匯出至/tmp

rbd rm bingo/kiki                             #刪除現存image kiki

rbd import --image-format 2  /tmp/img  bingo/kiki      #將匯出image匯入bingo/kiki 

rbd info  bingo/kiki   #修正OK

      RBD Mapping 與掛載測試    # rbd mapping

      sudo rbd map bingo/kiki --name client.admin -K /home/neil/keyfile 

       則出現以下錯誤訊息:

       rbd: sysfs write failed ....rbd:map failed:(6) No such device or address

       Kernel內rbd還沒有實現一些屬性,在map的時候會提示沒有這個設備
 


所以Neil會在建立image時警慎加入參數"--image-shared" " --image-feature layering" 使用

範例:  在現有"bingo" pool 底下, 建立一塊image 命名為"kiki", 容量大小上限為"15GB"

rbd create bingo/kiki --size 15360 --image-format 2 --image-shared

*Then 我們就可以正確"mapping rbd device" 動作參見下圖中 "/dev/rbd0"


# -- image-shared: 
  This will disable  features  that  are
      dependent upon exclusive ownership of the image.

或者是改用以下指令建立image(pool/kiki)"2擇1"執行一項皆可

rbd create bingo/kiki --size 15360 --image-format 2  --image-feature layering

# --image-feature layering =  /etc/ceph/ceph.conf 內加入rbd default features = 1

下圖,我們成功mapping "rbd block device" 到clinet端後,進行格式化動作(XFS)

mkfs.xfs /dev/rbd/bingo/kiki    #成功 將檔案系統格式化為"XFS"檔案系統

Neil進行手動掛載(Mount) RBD Device 測試

sudo  mount /dev/rbd/bingo/kiki /home/neil/rbd-01

df -h    #下圖 "/dev/rbd0" 已成功掛載到客戶端的/home/neil/rbd-01目錄下

檢視系統用戶認證金鑰 列表資訊

 ceph auth list

 ceph auth get client.admin   #獲取某一筆用戶資訊"client.admin"

ceph auth del client.restapi   #刪除已存在用戶授權資訊,稍早前為測試inkscope 建立授權用戶

mon1,mon2 選舉 

ceph quorum_status       #"quorum_leader_name":"mon1"


[動態手動擴充OSD節點: mon2:/oops/data]

從下圖中我可以看到目前
Ceph 叢集只有兩個"OSD"資料存儲節點(總儲存量接近40GB)

Then 現在我們要手動將"mon2:/oops/data" 加入叢集變第三個OSD節點(id=2)擴展現有總儲存量

下指令佈署第三個OSD(id=2)

ceph-deploy osd prepare mon2:/oops/data  

ceph-deploy osd activate mon2:/oops/data



佈署完成後,檢視下圖成果: "ceph osd tree" , "ceph -s "

可以看得 osd.2 節點已"up",
順利加入Ceph 叢集中

pgmap:  ....45892 MB / 61398 MB avail   總容量由原本40GB延展到60GB大小完成儲存量擴充

*下圖中我們可以看到 WEIGHT 權重值欄位,目前3個OSD節點皆為"0.01949"

 
 
手動調整OSD 節點Weight 權重值(以OSD.2 節點為例)  將weight="0.01949 變更為0.1"

#權重值介於"0~1"空間 

參照官方手冊所示,將現況"pg"對應位置匯出等會來檢視reweight驗證成果

*ceph pg dump > /tmp/pg_dump.1


 ceph osd crush reweight  osd.2 0.1   #now,我們現在手動reweight osd.2 權重值

"ceph health detail" 指令觀察各個"pg" 移動狀態,了解調整reweight 後變動走向 

#(抓其中一個pg 1.3e 來觀察) 與方才匯出"pg map" 匯出檔案比對/ 
tmp/pg_dump.1

   未調整weight 權重值前
pg 1.3e 被分配到 [1,0]  也就是 osd.1 osd.0 兩個存儲點
 
    經reweight 權重值後 
pg 1.3e  現在已被搬遷到 [2,0] 也就是  osd.2 osd.0 兩個存儲點
    

 手調整"增加或減少" 現有 image容量的大小  RESIZING A BLOCK DEVICE IMAGE

  先觀察方才已建立pool "bingo" 底下"image"相關資訊

   rbd info bingo/kiki    #在"bingo"這個pool底下有一個image 名為"kiki" 容量大小為15GB

 
Then 我們期望將其(bingo/kiki)放大到20GB 容量大小可以執行以下指令調整

rbd resize --size 20480 bingo/kiki               #increase,順利將image大小擴展到20GB

rbd resize --size 15360  bingo/kiki   --allow-shrink    #decrease 將容量縮小到原來15GB
刪除現有image可使用以下範例執行(前一篇Lab有介紹過在此不多贅述)

rbd rm {pool-name}/{image-name}  


*調整物件複寫副本數 SET THE NUMBER OF OBJECT REPLICAS

   ceph osd dump | grep 'min_size'    #目前min_size,replicated size = 2

由於我們現在有三個OSD節點數量,我們可手動變更 replicated size = 3

#下圖中 bingo pool  由原本replicated size = 2 已轉換為 replicated size = 3 物件有三個副本

 ceph osd pool set bingo size 3


[將Pool"bingo"設定Qouta配置存儲容量限制]  Default 無配置"N/A",

[Neil's抱怨]  用bytes來計量實在不友善==

ceph osd pool set-quota bingo max_bytes $((15 * 1024 * 1024 * 1024))    #limit 15GB

Then 我們現在將image掛載起來,產生一個 > 15GB 檔案做測試觀察

sudo dd if=/dev/zero of=quota-test count=18 bs=1G | watch -d ls -l


"ceph -w"查看動態Log 輸出警訊可見 [WRN] OSD near full  ( Quota limit 95%~96%)

 檔案資料即無法正常寫入...雖然杯具GG,但符合我們配置磁碟配額Quota Limit 需求

故最後該檔案大小鎖住在 14.5GB 左右符合Quota Limit 範圍限制內

ceph osd pool set-quota bingo max_bytes 0    #取消quota limit 

[Final: 移除上線中的OSD] 以mon2(osd.2) 為例

ceph osd pool set bingo size 2   #由於我們計畫將OSD.2 卸載下線,故將複寫副本調回"2"

ceph osd out osd.2  

#將osd.2退出ceph 叢集內,將進行叢集內部reblancing,pg map 物件移轉動作, 


  ssh  mon2  
 # login osd-id=2 host

  sudo stop ceph-osd
id=2   # stop osd service


#回到 Ceph Admin Node  執行

ceph osd crush remove osd.2

ceph auth del osd.2
   #remove auth

ceph osd rm  2

cat   ceph.conf      #倘若在ceph.conf有定義osd.2 主機組態需移除配置

Final 我們 最後順利刪除osd.2  

 #衷心建議您好好規劃下線節點完成卸載後,能否承擔與平衡剩餘節點所移轉的資料量
相簿設定
標籤設定
相簿狀態