ceph介紹php
Ceph 是一個專一於分佈式的、彈性可擴展的、高可靠的、性能優異的存儲系統平臺,能夠同時支持塊設備、文件系統和對象網關三種類型的存儲接口。本文介紹的調優手段包括硬件層面和軟件配置層面的優化,暫不涉及軟件代碼層面的優化。經過調整系統和Ceph配置參數,Ceph能夠更充分的發揮系統硬件性能。Ceph PG分佈調優和OSD綁核旨在讓磁盤負載更平均,避免個別OSD成爲瓶頸。此外,用NVMe SSD作Bcache也能夠提高性能。html
ceph架構node
模塊名稱ios |
功能描述web |
---|---|
RADOS算法 |
RADOS(Reliable Autonomic Distributed Object Store, RADOS)是Ceph 存儲集羣的基礎。Ceph 中的一切都以對象的形式存儲,而RADOS 就負責存儲這些對象,而不考慮它們的數據類型。RADOS 層確保數據一致性和可靠性。對於數據一致性,它執行數據複製、故障檢測和恢復,還包括數據在集羣節點間的recovery。數據庫 |
OSDjson |
實際存儲數據的進程。一般一個OSD daemon綁定一個物理磁盤。Client write/read 數據最終都會走到OSD去執行write/read操做。後端 |
MONcentos |
Monitor在Ceph集羣中扮演者管理者的角色,維護了整個集羣的狀態,是Ceph集羣中最重要的組件。Mon保證集羣的相關組件在同一時刻可以達成一致,至關於集羣的領導層,負責收集、更新和發佈集羣信息。爲了規避單點故障,在實際的Ceph部署環境中會部署多個Mon,一樣會引來多個Mon以前如何協同工做的問題。 |
MGR |
MGR 目前的主要功能是一個監控系統,包含採集、存儲、分析(包含報警)和可視化幾部分,用於把集羣的一些指標暴露給外界使用。 |
Librados |
簡化訪問RADOS的一種方法,目前支持PHP、Ruby、Java、Python、C和C++語言。它提供了Ceph 存儲集羣的一個本地接口RADOS ,而且是其餘服務(如RBD 、RGW) 的基礎,此外,還爲CephFS 提供POSIX 接口。librados API 支持直接訪問RADOS ,使開發者可以建立本身的接口來訪問Ceph集羣存儲。 |
RBD |
Ceph塊設備, 對外提供塊存儲。能夠像磁盤同樣被映射、格式化和掛載到服務器上。 |
RGW |
Ceph對象網關,提供了一個兼容S3和Swift的restful API接口。RGW還支持多租戶和Openstack的keyston身份驗證服務。 |
MDS |
Ceph元數據服務器,跟蹤文件層次結構並存儲只供CephFS使用的元數據。Ceph塊設備和RADOS網關不須要元數據。MDS不直接給client提供數據服務。 |
CephFS |
提供了一個任意大小且兼容POSlX的分佈式文件系統。CephFS 依賴Ceph MDS 來跟蹤文件層次結構,即元數據。 |
塊存儲調優主要分均衡型配置調優(均衡性配置是指以機械硬盤(HDD)做爲數據盤,並配置適量固態硬盤(SSD)做爲db/wal分區、元數據存儲池的場景)和高性能配置調優(高性能配置是指全部數據盤都是用固態硬盤(SSD)的場景)。根據實際場景選擇一種配置進行調優便可。
在性能優化時,須要遵循必定的原則,主要有如下幾個方面:
調優分析思路以下:
可能的瓶頸點如表1所示。
瓶頸點 |
說明 |
---|---|
硬件/規格 |
通常指的是CPU、內存、磁盤I/O方面的問題,分爲服務器硬件瓶頸、網絡瓶頸(對局域網能夠不考慮)。 |
中間件 |
通常指的是應用服務器、web 服務器等應用軟件,還包括數據庫系統。例如:中間件weblogic平臺上配置的JDBC鏈接池的參數設置不合理,形成的瓶頸。 |
應用程序 |
通常指的是開發人員開發出來的應用程序。例如,JVM參數不合理,容器配置不合理,慢SQL,數據庫設計不合理,程序架構規劃不合理,程序自己設計有問題(串行處理、請求的處理線程不夠、無緩衝、無緩存、生產者和消費者不協調等),形成系統在大量用戶方位時性能低下而形成的瓶頸。 |
操做系統 |
通常指的是Windows、UNIX、Linux等操做系統。例如,在進行性能測試,出現物理內存不足時,虛擬內存設置也不合理,虛擬內存的交換效率就會大大下降,從而致使行爲的響應時間大大增長,這時認爲操做系統上出現性能瓶頸。 |
網絡設備 |
通常指的是防火牆、動態負載均衡器、交換機等設備。當前更多的雲化服務架構使用的網絡接入產品:包括但不限於SLB/WAF/高防IP/CDN/全站加速等等。例如,在動態負載均衡器上設置了動態分發負載的機制,當發現某個應用服務器上的硬件資源已經到達極限時,動態負載均衡器將後續的交易請求發送到其餘負載較輕的應用服務器上。在測試時發現,動態負載均衡器沒有起到相應的做用,這時能夠認爲網絡瓶頸。 |
調優的通用步驟:
調優通用步驟如圖1所示。
圖1 調優通用步驟
具體優化配置能夠參考華爲雲調優指南:
https://support.huaweicloud.com/tngg-kunpengsdss/kunpengcephblock_05_0006.html
RBD塊存儲常規操做
查看pools
建立一個pool,包含64個pg和64個pgp
[root@node-1 ~]# ceph osd pool create ceph-demo 64 64 pool 'ceph-demo' created [root@node-1 ~]# ceph osd lspools 1 ceph-demo
查看pg和pgp
[root@node-1 ~]# ceph osd pool get ceph-demo pg_num pg_num: 64 [root@node-1 ~]# ceph osd pool get ceph-demo pgp_num pgp_num: 64 #副本數,默認就是3個 [root@node-1 ~]# ceph osd pool get ceph-demo size size: 3
調整pg和pgp
[root@node-1 ~]# ceph osd pool set ceph-demo pg_num 128 set pool 1 pg_num to 128 [root@node-1 ~]# ceph osd pool set ceph-demo pgp_num 128 set pool 1 pgp_num to 128 查看 [root@node-1 ~]# ceph -s cluster: id: c16b9145-7216-4058-8bfb-c9b7b2b702de health: HEALTH_OK services: mon: 3 daemons, quorum node-1,node-2,node-3 (age 2w) mgr: node-1(active, since 2w), standbys: node-2, node-3 osd: 3 osds: 3 up (since 2w), 3 in (since 2w) data: pools: 1 pools, 128 pgs objects: 0 objects, 0 B usage: 3.0 GiB used, 147 GiB / 150 GiB avail pgs: 128 active+clean
建立rbd
rbd create -p ceph-demo --image rbd-demo.img --size 10G 查看 [root@node-1 ~]# rbd -p ceph-demo ls rbd-demo.img [root@node-1 ~]# rbd info ceph-demo/rbd-demo.img rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 1143ee2e8a3a block_name_prefix: rbd_data.1143ee2e8a3a format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Tue Nov 17 14:57:35 2020 access_timestamp: Tue Nov 17 14:57:35 2020 modify_timestamp: Tue Nov 17 14:57:35 2020 刪除rbd rbd rm -p ceph-demo --image rbd-demo.img 掛載塊設備 禁用新特性,3.10內核不支持 rbd feature disable ceph-demo/rbd-demo.img deep-flatten rbd feature disable ceph-demo/rbd-demo.img fast-diff rbd feature disable ceph-demo/rbd-demo.img object-map rbd feature disable ceph-demo/rbd-demo.img exclusive-lock 查看 [root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 1143ee2e8a3a block_name_prefix: rbd_data.1143ee2e8a3a format: 2 features: layering op_features: flags: create_timestamp: Tue Nov 17 14:57:35 2020 access_timestamp: Tue Nov 17 14:57:35 2020 modify_timestamp: Tue Nov 17 14:57:35 2020 建立 [root@node-1 ~]# rbd map ceph-demo/rbd-demo.img /dev/rbd0 查看 [root@node-1 ~]# rbd device list id pool namespace image snap device 0 ceph-demo rbd-demo.img - /dev/rbd0 [root@node-1 ~]# fdisk -l Disk /dev/rbd0: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes 而後就能夠進行格式化,分區操做了 mkfs.ext4 /dev/rbd0 lsblk mkdir /mnt/rbd-demo mount /dev/rbd0 /mnt/rbd-demo df -h
擴容
當前10個G [root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 1143ee2e8a3a block_name_prefix: rbd_data.1143ee2e8a3a format: 2 features: layering op_features: flags: create_timestamp: Tue Nov 17 14:57:35 2020 access_timestamp: Tue Nov 17 14:57:35 2020 modify_timestamp: Tue Nov 17 14:57:35 2020 [root@node-1 ~]# rbd resize ceph-demo/rbd-demo.img --size 20G Resizing image: 100% complete...done. 擴容後,變成20個G [root@node-1 ~]# rbd -p ceph-demo info rbd-demo.img rbd image 'rbd-demo.img': size 20 GiB in 5120 objects order 22 (4 MiB objects) snapshot_count: 0 id: 1143ee2e8a3a block_name_prefix: rbd_data.1143ee2e8a3a format: 2 features: layering op_features: flags: create_timestamp: Tue Nov 17 14:57:35 2020 access_timestamp: Tue Nov 17 14:57:35 2020 modify_timestamp: Tue Nov 17 14:57:35 2020 可是隻是對底層進行擴容,可是對於磁盤分區沒有擴容 resize2fs /dev/rbd0 縮容不建議錯,很容易形成數據丟失
告警排查
健康狀態詳情 [root@node-1 ~]# ceph health detail HEALTH_WARN application not enabled on 1 pool(s) POOL_APP_NOT_ENABLED application not enabled on 1 pool(s) application not enabled on pool 'ceph-demo' use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications. 一個資源池沒有啓用application,解決方案是啓用起來,而且指定應用類型 解決 [root@node-1 ~]# ceph osd pool application enable ceph-demo rbd enabled application 'rbd' on pool 'ceph-demo' [root@node-1 ~]# ceph osd pool application get ceph-demo { "rbd": {} } 查看狀態 [root@node-1 ~]# ceph -s cluster: id: c16b9145-7216-4058-8bfb-c9b7b2b702de health: HEALTH_OK services: mon: 3 daemons, quorum node-1,node-2,node-3 (age 2w) mgr: node-1(active, since 2w), standbys: node-2, node-3 osd: 3 osds: 3 up (since 2w), 3 in (since 2w) data: pools: 1 pools, 128 pgs objects: 4 objects, 35 B usage: 3.0 GiB used, 147 GiB / 150 GiB avail pgs: 128 active+clean
遷移相關虛擬機/業務至其餘節點(openstack等須要把虛擬機遷移出去);
在MON或者有admin權限的節點執行操做:
# 設置OSD的鎖定 for i in noout nobackfill norecovery;do ceph osd set $i;done # 完成機器維護後,加電,從新同步數據 for i in noout nobackfill norecovery;do ceph osd unset $i;done
# start/stop all ceph-mds@.service instances at once systemctl start/stop/restart ceph-mds.target # start/stop all ceph-mgr@.service instances at once systemctl start/stop/restart ceph-mgr.target # start/stop all ceph-mon@.service instances at once systemctl start/stop/restart ceph-mon.target # start/stop all ceph-osd@.service instances at once systemctl start/stop/restart ceph-osd.target # start/stop all ceph-radosgw@.service instances at once systemctl start/stop/restart ceph-radosgw.target # start/stop all ceph*@.service instances at once systemctl start/stop/restart ceph.target
# 檢查集羣狀態 ceph health ceph status ceph quorum_status ceph mon_status # 觀察集羣內正發生的事件 ceph -w/-s # 檢查集羣的使用狀況 ceph df # 檢查 OSD 狀態 ceph osd stat ceph osd dump # 打印 CRUSH 樹 ceph osd tree # 檢查 Mon 狀態 ceph mon stat ceph mon dump # 檢查MON法定人數狀態 ceph quorum_status -f json-pretty # 檢查 MDS 狀態 ceph mds stat ceph mds dump # 監控 PG ceph pg dump # 查看指定 PG 的 Acting Set 或 Up Set 中包含的 OSD ceph pg map {pg-num}
啓動mon進程
service ceph start mon.node11
啓動msd進程
service ceph start mds.node11
啓動osd進程
service ceph start osd.01
ceph health1
ceph -w1
ceph -s1
ceph df1
ceph-deploy purge node1 ceph-deploy purgedata node112
爲ceph建立一個admin用戶併爲admin用戶建立一個密鑰,把密鑰保存到/etc/ceph目錄下:
ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' > /etc/ceph/ceph.client.admin.keyring 或 ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.admin.keyring123
爲osd.0建立一個用戶並建立一個key
ceph auth get-or-create osd.0 mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring1
爲mds.node1建立一個用戶並建立一個key
ceph auth get-or-create mds.node1 mon 'allow rwx' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mds/ceph-node1/keyring1
查看ceph集羣中的認證用戶及相關的key
ceph auth list1
刪除集羣中的一個認證用戶
ceph auth del osd.01
ceph daemon mon.node1 config show | more1
ceph health detail1
ceph-conf --name mon.node1 --show-config-value log_file1
ceph mon stat#查看mon的狀態信息 ceph mon dump#查看ceph映射信息 ceph mon remove node1 #刪除一個mon節點 ceph-deploy mon destroy {host-name [host-name]...} ceph mon add node1 node1_ip #添加一個mon節點 ceph-deploy mon create {host-name [host-name]...} mon節點的/var/lib/ceph/mon/ceph-node2/store.db文件內容一致,添加mon注意先改配置目錄配置文件,再推送到全部節點 ceph-deploy --overwrite-conf config push node1 node2 node3
ceph mds stat #查看msd狀態 ceph mds dump #msd的映射信息 ceph mds rm 0 mds.node1#刪除一個mds節點 ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]
ceph osd stat #查看osd狀態 ceph osd dump #osd的映射信息 ceph osd tree#查看osd目錄樹 ceph osd down 0 #down掉osd.0節點 ceph osd rm 0#集羣刪除一個osd硬盤 ceph osd crush remove osd.4#刪除標記 ceph osd getmaxosd#查看最大osd個數 ceph osd setmaxosd 10#設置osd的個數 ceph osd out osd.3#把一個osd節點逐出集羣 ceph osd in osd.3#把逐出的osd加入集羣 ceph osd pause#暫停osd (暫停後整個集羣再也不接收數據) ceph osd unpause#再次開啓osd (開啓後再次接收數據)
ceph pg stat#查看pg狀態 ceph pg dump#查看pg組的映射信息 ceph pg map 0.3f#查看一個pg的map ceph pg 0.26 query#查看pg詳細信息 ceph pg dump --format plain#顯示一個集羣中的全部的pg統計
ceph osd lspools#查看ceph集羣中的pool數量 ceph osd pool create jiayuan 100#建立一個pool 這裏的100指的是PG組 ceph osd pool delete jiayuan jiayuan --yes-i-really-really-mean-it #集羣名字須要重複兩次 rados df#顯示集羣中pool的詳細信息 ceph osd pool get data pg_num #查看data池的pg數量 ceph osd pool set data target_max_bytes 100000000000000#設置data池的最大存儲空間爲100T(默認是1T) ceph osd pool set data size 3 #設置data池的副本數是3 ceph osd pool set data min_size 2 #設置data池能接受寫操做的最小副本爲2 ceph osd pool set data pg_num 100#設置一個pool的pg數量 ceph osd pool set data pgp_num 100#設置一個pool的pgp數量
rados lspools#查看ceph集羣中有多少個pool (只是查看pool) rados df #查看ceph集羣中有多少個pool,而且每一個pool容量及利用狀況 rados mkpool test#建立一個pool rados create test-object -p test#建立一個對象object rados rm test-object-1 -p test#刪除一個對象object rados -p test ls rbd ls pool_name#查看ceph中一個pool裏的全部鏡像 rbd info -p pool_name --image 74cb427c-cee9-47d0-b467-af217a67e60a #查看ceph pool中一個鏡像的信息 rbd create -p test --size 10000 zhanguo#在test池中建立一個命名爲zhanguo的10000M的鏡像 rbd rm -p test lizhanguo #刪除一個鏡像 rbd resize -p test --size 20000 zhanguo #調整一個鏡像的尺寸
ceph-deploy disk zap {osd-server-name}:{disk-name} #擦淨磁盤 ceph-deploy osd prepare {node-name}:{disk}[:{path/to/journal}] ceph-deploy osd prepare osdserver1:sdb:/dev/ssd1 ceph-deploy osd activate {node-name}:{path/to/disk}[:{path/to/journal}] ceph-deploy osd activate osdserver1:/dev/sdb1:/dev/ssd1 把改過的配置文件分發給集羣內各主機 ceph-deploy config push {host-name [host-name]...}
ceph osd getcrushmap -o MAP #獲取一個CRUSH映射 crushtool -d MAP -o MAP.TXT #反編譯一個CRUSH映射 crushtool -c MAP.TXT -o MAP #編譯一個CRUSH映射 ceph osd setcrushmap -i MAP #設置一個CRUSH映射
單位爲M,默認在rbd pool中
建立塊設備:rbd create {image-name} --size {megabytes} --pool {pool-name} 列出塊設備:rbd ls {poolname} -l 檢索塊信息:rbd --image {image-name} info 更改塊大小:rbd resize --image {image-name} --size {megabytes} 刪除塊設備:rbd rm {image-name} 映射塊設備:rbd map {image-name} --pool {pool-name} --id {user-name} 查看已映射塊設備:rbd showmapped 取消映射:rbd unmap /dev/rbd/{poolname}/{imagename}
建立快照: rbd --pool {pool-name} snap create --snap {snap-name} {image-name} rbd snap create {pool-name}/{image-name}@{snap-name} 快照回滾: rbd --pool {pool-name} snap rollback --snap {snap-name} {image-name} rbd snap rollback {pool-name}/{image-name}@{snap-name} 清除快照: rbd --pool {pool-name} snap purge {image-name} rbd snap purge {pool-name}/{image-name} 刪除快照: rbd --pool {pool-name} snap rm --snap {snap-name} {image-name} rbd snap rm {pool-name}/{image-name}@{snap-name} 列出快照: rbd --pool {pool-name} snap ls {image-name} rbd snap ls {pool-name}/{image-name} 保護快照: rbd --pool {pool-name} snap protect --image {image-name} --snap {snapshot-name} rbd snap protect {pool-name}/{image-name}@{snapshot-name} 取消保護快照: rbd --pool {pool-name} snap unprotect --image {image-name} --snap {snapshot-name} rbd snap unprotect {pool-name}/{image-name}@{snapshot-name} 快照克隆 rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name} 查看快照的克隆 rbd --pool {pool-name} children --image {image-name} --snap {snap-name} rbd children {pool-name}/{image-name}@{snapshot-name}
RGW對象存儲
建立
cceph-deploy rgw create node-1
CephFS文件存儲
建立mds服務
ceph-deploy mds create node-1 node-2 node-3 [root@node-1 ceph-deploy]# ceph osd pool create cephfs_metadata 16 16 pool 'cephfs_metadata' created [root@node-1 ceph-deploy]# ceph osd pool create cephfs_data 16 16 pool 'cephfs_data' created [root@node-1 ceph-deploy]# ceph fs new cephfs-demo cephfs_metadata cephfs_data new fs with metadata pool 6 and data pool 7 [root@node-1 ceph-deploy]# [root@node-1 ceph-deploy]# ceph fs ls name: cephfs-demo, metadata pool: cephfs_metadata, data pools: [cephfs_data ] [root@node-1 ceph-deploy]# ceph -s cluster: id: c16b9145-7216-4058-8bfb-c9b7b2b702de health: HEALTH_OK services: mon: 3 daemons, quorum node-1,node-2,node-3 (age 46m) mgr: node-1(active, since 46m), standbys: node-2, node-3 mds: cephfs-demo:1 {0=node-2=up:active} 2 up:standby osd: 3 osds: 3 up (since 2w), 3 in (since 2w) rgw: 1 daemon active (node-1) task status: scrub status: mds.node-2: idle data: pools: 7 pools, 288 pgs objects: 213 objects, 3.5 KiB usage: 3.0 GiB used, 147 GiB / 150 GiB avail pgs: 288 active+clean
內核級別掛載,性能高一點
mkdir /mnt/cephfs [root@node-1 ceph-deploy]# mount -t ceph 172.16.10.224:6789:/ /mnt/cephfs/ -o name=admin [root@node-1 ceph-deploy]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.9M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda3 211G 1.8G 210G 1% / /dev/sda1 1014M 141M 874M 14% /boot tmpfs 783M 0 783M 0% /run/user/0 tmpfs 3.9G 52K 3.9G 1% /var/lib/ceph/osd/ceph-0 172.16.10.224:6789:/ 47G 0 47G 0% /mnt/cephfs
用戶級別掛載
安裝客戶端 yum -y install ceph-fuse mkdir /mnt/ceph-fuse [root@node-1 ceph-deploy]# ceph-fuse -n client.admin -m 172.16.10.224:6789,172.16.10.225:6789,172.16.10.226:6789 /mnt/ceph-fuse 2020-11-17 17:54:20.511 7eff93888f80 -1 init, newargv = 0x5571a711e340 newargc=9ceph-fuse[29325]: starting ceph client ceph-fuse[29325]: starting fuse [root@node-1 ceph-deploy]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 9.0M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda3 211G 1.9G 210G 1% / /dev/sda1 1014M 141M 874M 14% /boot tmpfs 783M 0 783M 0% /run/user/0 tmpfs 3.9G 52K 3.9G 1% /var/lib/ceph/osd/ceph-0 172.16.10.224:6789:/ 47G 0 47G 0% /mnt/cephfs ceph-fuse 47G 0 47G 0% /mnt/ceph-fuse
OSD擴容和換盤
橫向擴容增長節點
縱向擴容增長容量
[root@node-1 ceph-deploy]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.14639 root default -3 0.04880 host node-1 0 hdd 0.04880 osd.0 up 1.00000 1.00000 -5 0.04880 host node-2 1 hdd 0.04880 osd.1 up 1.00000 1.00000 -7 0.04880 host node-3 2 hdd 0.04880 osd.2 up 1.00000 1.00000
清理有分區的磁盤
ceph-deploy disk zap node-1 /dev/sdc 原理就是用dd把分區數據都刷掉
增長磁盤
ceph-deploy osd create node-1 --data /dev/sdc
增長osd會使PG移動,消耗性能,因此擴容osd須要一個一個的擴容,減小對業務的影響
查看osd延時 ceph osd perf 刪除osd ceph osd out osd.5 等信息同步完再刪 ceph osd crush rm osd.5 ceph osd rm osd.5 ceph author rm osd.5
RBD高級功能
建立
[root@node-1 ~]# rbd create ceph-demo/ceph-trash.img --size 10G [root@node-1 ~]# rbd info ceph-demo/ceph-trash.img rbd image 'ceph-trash.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 861f92bbad7f block_name_prefix: rbd_data.861f92bbad7f format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Wed Nov 18 10:57:52 2020 access_timestamp: Wed Nov 18 10:57:52 2020 modify_timestamp: Wed Nov 18 10:57:52 2020
刪除
[root@node-1 ~]# rbd rm ceph-demo/ceph-trash.img Removing image: 100% complete...done.
設置回收機制
[root@node-1 ~]# rbd create ceph-demo/ceph-trash.img --size 10G [root@node-1 ~]# rbd trash move ceph-demo/ceph-trash.img --expires-at 20201119 [root@node-1 ~]# rbd trash -p ceph-demo ls 8640e50e08fb ceph-trash.img
回收回來,防止誤刪除
[root@node-1 ~]# rbd trash restore -p ceph-demo 8640e50e08fb [root@node-1 ~]# rbd -p ceph-demo ls ceph-trash.img rbd-demo.img
建立塊
映射到本地文件系統
ceph-deploy osd create node-1 --data /dev/sdc
[root@node-1 ~]# rbd device map ceph-demo/rbd-test.img
/dev/rbd1
格式化
mkfs.ext4 /dev/rbd1
mount /dev/rbd0 /media
touch test.txt
建立快照
[root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@snap_20201118 [root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img SNAPID NAME SIZE PROTECTED TIMESTAMP 4 snap_20201118 10 GiB Wed Nov 18 11:15:23 2020
數據恢復
刪除test.txt
rbd snap rollback ceph-demo/rbd-test.img@snap_20201118 rbd snap ls ceph-demo/rbd-test.img 卸載以後,從新掛載 umount /media mount /dev/rbd1 /media 建立快照 [root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@template [root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img SNAPID NAME SIZE PROTECTED TIMESTAMP 4 snap_20201118 10 GiB Wed Nov 18 11:15:23 2020 5 template 10 GiB Wed Nov 18 11:29:21 2020 保護快照 [root@node-1 ~]# rbd snap protect ceph-demo/rbd-test.img@template 會發現沒法刪除了 [root@node-1 ~]# rbd snap rm ceph-demo/rbd-test.img@template Removing snap: 0% complete...failed.2020-11-18 11:32:20.904 7f2cef31ec80 -1 librbd::Operations: snapshot is protected rbd: snapshot 'template' is protected from removal. 快照克隆 [root@node-1 ~]# rbd clone ceph-demo/rbd-test.img@template ceph-demo/vm1-clone.img [root@node-1 ~]# rbd -p ceph-demo ls ceph-trash.img rbd-demo.img rbd-test.img vm1-clone.img 使用克隆快照 rbd device map ceph-demo/vm1-clone.img mount /dev/rbd2 /mnt 查看鏡像建立了幾個快照 [root@node-1 ~]# rbd children ceph-demo/rbd-test.img@template ceph-demo/vm1-clone.img
解除複製關係
rbd flatten ceph-demo/vm1-clone.img
RBD導入導出
建立快照 [root@node-1 ~]# rbd snap create ceph-demo/rbd-test.img@snap-demo [root@node-1 ~]# rbd snap ls ceph-demo/rbd-test.img SNAPID NAME SIZE PROTECTED TIMESTAMP 4 snap_20201118 10 GiB Wed Nov 18 11:15:23 2020 5 template 10 GiB yes Wed Nov 18 11:29:21 2020 6 snap-demo 10 GiB Wed Nov 18 15:17:24 2020 [root@node-1 ~]# 導出備份 [root@node-1 ~]# rbd export ceph-demo/rbd-test.img@snap-demo /root/rbd-test.img Exporting image: 100% complete...done. 導入 [root@node-1 ~]# rbd import rbd-test.img ceph-demo/rbd-test-new.img Importing image: 100% complete...done. [root@node-1 ~]# rbd -p ceph-demo ls ceph-trash.img rbd-demo.img rbd-test-new.img rbd-test.img vm1-clone.img
而後就能夠用map掛載了,可是若是在centos7上作須要取消新特性才能夠掛載
ceph配置dashboard管理
安裝軟件包
yum -y install ceph-mgr-dashboard
查看模塊
ceph mgr module ls |less
啓動模塊
ceph mgr module enable dashboard --force ceph mgr module ls |less ... "enabled_modules": [ "dashboard", "iostat", "restful" ]
配置
生成證書
[root@node-1 ~]# ceph dashboard create-self-signed-cert Self-signed certificate created
配置dashboard
[root@node-1 ~]# ceph config set mgr mgr/dashboard/server_addr 172.16.10.224 [root@node-1 ~]# ceph config set mgr mgr/dashboard/server_port 8080 [root@node-1 ~]# ceph config set mgr mgr/dashboard/ssl_server_port 8443 查看 root@node-1 ~]# ceph mgr services { "dashboard": "https://node-1:8443/" }
啓用一個用戶,配置用戶名密碼,授予一個角色
[root@node-1 ~]# ceph dashboard ac-user-create cephadmin cephpassword administrator {"username": "cephadmin", "lastUpdate": 1605688571, "name": null, "roles": ["administrator"], "password": "$2b$12$aQh18pOu5xSeu4DB7LSaseUyf7TpyRfiA.LiPQbipta6EnAlc1hNy", "email": null}
訪問 https://ip:8443
而後就能夠訪問dashboard了。