Ceph:大數據xPB規模分散式軟體定義儲存系統 (二):運維與監控by Navier
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" 詳細資訊
format 1 is deprecated. Please copy this image to image format 2.
將 image1 轉換image2 步驟
rbd export bingo/kiki /tmp/img #將現有image 匯出至/tmp
rbd rm bingo/kiki #刪除現存image 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

或者是改用以下指令建立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"

#權重值介於"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

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

rbd resize --size 15360 bingo/kiki --allow-shrink #decrease 將容量縮小到原來15GB

rbd rm {pool-name}/{image-name}
ceph osd dump | grep 'min_size' #目前min_size,replicated size = 2

由於我們現在有三個OSD節點數量,我們可手動變更 replicated size = 3
#下圖中 bingo pool 由原本replicated size = 2 已轉換為 replicated 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
#衷心建議您好好規劃下線節點完成卸載後,能否承擔與平衡剩餘節點所移轉的資料量

-
551
- 0
