1. 程式人生 > 其它 >ceph運維操作

ceph運維操作

1. 官方文件

2. 基本命令

2.1 檢視ceph使用狀態

ceph df

2.2 指定mon檢視狀態

ceph -s --mon-host 192.168.88.10

2.3 指定配置檔案檢視狀態

ceph -s -c /etc/ceph/ceph.conf 

2.4 配置檔案

2.4.1 cephadm叢集檔案目錄

ll /var/lib/ceph/

# 注意修改配置了重啟相關容器

2.4.2 叢集日誌檔案

ll /var/log/ceph

2.4.3 開啟debug

docker exec -it ceph-3104ac28-72bc-11ed-85c7-8d65cf0dc0c6-mon-ceph01 bash

# 自定義配置值
vim /etc/ceph/ceph.conf
'''
[global]
debug ms = 0

[osd]
debug ms = 1

[osd.1]
debug.ms = 10

[osd.2]
debug ms = 10
'''

3. 獲取叢集資訊

3.1 顯示整個叢集的資料庫資訊

ceph config dump

3.2 顯示某個守護程序的配置

  • get值主要取決於 ceph config dump 輸出中的 who 值
ceph config get mon

3.3 設定資料庫

ceph config set mon.ceph01 debug_ms 5

3.4 顯示ceph守護程序的詳細資訊

ceph config show osd.0

3.5 檢視幫助

ceph config help mon_host

3.6 檢視資訊配置

ceph daemon osd.3 config help mon_host

ceph config help log_file -f json-pretty

3.7 臨時修改選項值

  • 當前有此程序
ceph tell osd.1 config set debug_osd 30

ceph daemon mon.ceph01 config set debug_osd 30

3.8 檢視當前節點所有選項值

ceph config show-with-defaults osd.0

4. ceph通用配置

4.1 mon

vim /etc/ceph/ceph.conf
[global]
        fsid = 3104ac28-72bc-11ed-85c7-8d65cf0dc0c6
        mon_host = [v2:192.168.88.10:3300/0,v1:192.168.88.10:6789/0] [v2:192.168.88.11:3300/0,v1:192.168.88.11:6789/0] [v2:192.168.88.12:3300/0,v1:192.168.88.12:6789/0]

4.2 osds

vim /etc/ceph/ceph.conf
# 定義osd日誌大小
[global]
osd_journal_size = 10000

[osd.0]
host = [hostname] # manual deployments only

4.3 定義網路

  • 不需要重啟整個叢集
[global]
public network = {public-network/netmask}

# 建議是內部網路
cluster network = {cluster-network/netmask}

5. 認證配置

5.1 安全協議

  • 預設是配置好的,更改為None將沒有認證功能,需要重啟叢集
[global]
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

5.2 證書匯出

ceph auth get-or-create client.admin mon 'allow *' mds 'allow *' mgr 'allow *' osd 'allow *' -o ceph.client.admin.keyring

ceph auth get-or-create mgr.ceph01 mon 'allow profile mgr' mds 'allow *' osd 'allow *' -o mgr_keyring

ceph auth get-or-create osd.0 -o osd-4.keyring

ceph auth get-or-create mds.ceph01 mon 'allow rwx' osd 'allow *' mds 'allow *' mgr 'allow profile mds' -o mds.keyring

5.3 停用安全協議

  • 需要重啟叢集
[global]
auth_cluster_required = none
auth_service_required = none
auth_client_required = none

6. Bluestore

  • WAL設定適合SSD硬碟使用,主要預留日誌,有一定程度提高ceph效率
  • DB儲存內部的元資料
ceph-volume lvm prepare --bluestore --data <device>

ceph-volume lvm prepare --bluestore --data <device> --block.wal <wal-device> --block.db <db-device>
  • 範例
vgcreate ceph-block-0 /dev/sda
vgcreate ceph-block-1 /dev/sdb
vgcreate ceph-block-2 /dev/sdc
vgcreate ceph-block-3 /dev/sdd
  • 建立邏輯卷
lvcreate -l 100%FREE -n block-0 ceph-block-0
lvcreate -l 100%FREE -n block-1 ceph-block-1
lvcreate -l 100%FREE -n block-2 ceph-block-2
lvcreate -l 100%FREE -n block-3 ceph-block-3
  • 建立卷組(固態盤,給wal使用)
vgcreate ceph-db-0 /dev/sdx

lvcreate -L 50GB -n db-0 ceph-db-0
lvcreate -L 50GB -n db-0 ceph-db-0
lvcreate -L 50GB -n db-0 ceph-db-0
lvcreate -L 50GB -n db-0 ceph-db-0
  • 建立osd
ceph-volume lvm create --bluestore --data ceph-block-0/block-0 --block.db ceph-db-0/db-0

ceph-volume lvm create --bluestore --data ceph-block-0/block-1 --block.db ceph-db-0/db-1

ceph-volume lvm create --bluestore --data ceph-block-0/block-2 --block.db ceph-db-0/db-2

ceph-volume lvm create --bluestore --data ceph-block-0/block-3 --block.db ceph-db-0/db-3

7. ceph健康管理

7.1 關閉mon告警

ceph health detail

ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false

7.2 啟動osd

cephadm deploy --name osd.2  --fsid 3104ac28-72bc-11ed-85c7-8d65cf0dc0c6 --osd-fsid 3104ac28-72bc-11ed-85c7-8d65cf0dc0c6

7.3 移除osd

ceph osd crush rm osd.<id>
  • 範例
    • 注意對應id
# 停止osd
docker stop ceph-3104ac28-72bc-11ed-85c7-8d65cf0dc0c6-osd-2

# 踢出叢集
ceph osd out 2

# 從CRUSH刪除
ceph osd crush remove osd.2

# 刪除osd叢集金鑰,從叢集中移除該osd
ceph auth del osd.2
ceph osd rm 2

# 解除目錄掛載(由於是容器化的,可以忽略),可以對磁碟進行格式化以及目錄刪除
cephadm ceph-volume lvm zap /dev/sdb --destroy

7.4 新增osd

ceph osd out osd.$N

while ! ceph osd safe-to-destroy osd.$N; do sleep 1m; done

ceph-volume lvm zap /path/to/device

ceph-volume lvm create --osd-id $N --data /path/to/device

7.5 設定osd閾值

ceph osd set-backfillfull-ratio <ratio>

ceph osd set-nearfull-ratio <ratio>

ceph osd set-full-ratio <ratio>
  • 可以檢視預設比例
ceph osd dump | grep full_ratio

7.6 配置osd狀態

full   群集被標記為已滿,無法執行寫入操作

pauserd,pausewr   暫停的讀取或寫入

noup   不允許啟動OSD

nodown   OSD故障報告被忽略,因此監視器不會將OSD標記為關閉

noin   以前標記的OSD在開始時不會被標記

noout   在配置的間隔之後,不會自動標記出關閉的OSD

nobackfill,norecover,norebalance   恢復或資料重新平衡已暫停

noscrub,nodeep_scrub   已禁用清理

notieragent   快取分層活動已掛起
  • 設定或移除
ceph osd set <flag>

ceph osd unset <flag>

7.7 詳細osd資訊

ceph df detail

7.8 儲存池限額

# 最大物件數
ceph osd pool set-quota <poolname> max_objects <num-objects>

ceph osd pool set-quota <poolname> max_bytes <num-bytes>

7.9 修復osd

ceph-bluestore-tool repair --path /var/lib/ceph/3104ac28-72bc-11ed-85c7-8d65cf0dc0c6/osd.2/ceph_fsid 

7.10 關閉bluestore告警

ceph config set global bluestore_warn_on_legacy_statfs false

7.11 pool快取最大配置

# 目標最大快取位元組
ceph osd pool set <cache-pool-name> target_max_bytes <bytes>

# 目標最大快取位元組數
ceph osd pool set <cache-pool-name> target_max_objects <bytes>

7.12 pg計算公式

Total PGs = (osds * 100) / pool size

7.13 pool的pg設定

ceph osd set <pool-name> pg_num <value>
  • 可以使用禁用此健康
ceph config set global mon_warn_on_pool_pg_num_not_power_of_two false

7.14 關閉pg數過多告警

  • 也是不允許叢集自動調整pg數
ceph osd pool set <pool-name> pg_autoscale_mode off

7.15 允許叢集自動調整pg數

ceph osd pool set <pool-name> pg_autoscale_mode on

7.16 初始化儲存池

rbd pool init <poolname>

ceph osd pool application enable <poolname>

7.17 檢視osd吞吐速率

docker exec -it ceph-3104ac28-72bc-11ed-85c7-8d65cf0dc0c6-mon-ceph01 bash

ceph daemon osd.5 ops

7.18 檢視osd詳細資訊

ceph osd find osd.5

docker exec -it ceph-3104ac28-72bc-11ed-85c7-8d65cf0dc0c6-mon-ceph01 bash

ceph daemon osd.5 dump_historic_ops

7.19 關閉程序有異常的警告資訊

ceph crash ls-new

# 設定開啟
ceph config set mgr mgr/crash/warn_recent_interval 10

# 關閉
ceph config set mgr mgr/crash/warn_recent_interval 0

ceph config show mgr.ceph01.rrwcxs