0%

Ceph文档-操作

https://www.cnblogs.com/bandaoyu/p/16752154.html

https://www.bunian.cn/5180.html

https://lihaijing.gitbooks.io/ceph-handbook/content/

https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/html/operations_guide/management-of-monitoring-stack-using-the-ceph-orchestrator

查看信息

状态查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查看ceph版本
ceph -v
# 查看集群状态
ceph -s
# 监控集群的实时更改/查看集群正在进行的操作
ceph -w

# 查看osd目录树
ceph osd tree
# 详细列出集群每块磁盘使用情况
ceph osd df
#查看ceph存储空间
ceph df

# 查看osd状态
ceph osd stat
# 查看mon 状态
ceph mon stat
# 查看mds状态
ceph mds stat
# 查看osd.0结点的ip和主机名
ceph osd find osd.0

认证信息查看

1
2
3
4
#查看ceph集群中的认证用户及相关的key
ceph auth list
# 获取某个用户的认证信息
ceph auth get client.admin

查看集群映射信息ceph dump

Ceph 客户端和 OSD 需要确认 集群拓扑 。由5个map表示 集群拓扑 ,统称 集群映射

mon 映射

Ceph 监控器(Mon)守护进程维护集群映射的主副本。Ceph MON 集群在监控器守护进程出现故障时确保高可用性

ceph mon dump 显示mon集群信息

image-20240721155625856

集群 fsid、各个监控器的位置、名称、地址和端口,以及映射时间戳

  • epoch:监视器映射的时代编号。
  • fsid:Ceph集群的唯一标识符。
  • last_changed:修改监视器映射的时间。
  • created:创建监视器映射的时间。
  • min_mon_release:与监视器映射兼容的最小Ceph版本。
  • election_strategy:监视器用于选举领导者的策略。Ceph监视器的选举策略有两种:
    • classic:这是默认的选举策略,在此策略下,监视器具有相同的投票权,并根据周期性心跳和消息传递进行通信。如果监视器检测到其他监视器离线,则它们将在一段时间后进入新的领导者选举过程。
    • quorum:该策略要求至少三个监视器在线,并从中选择领导者,而不是所有在线监视器都拥有相同的投票权。采用此策略时,如果没有足够的监视器参与选举,则集群将无法正常工作或处于只读状态,直到更多的监视器加入并恢复其大多数选举能力。
  • 0、1、2:集群中每个监视器的排名和IP地址,以及它们的主机名。
  • dumped:表示已成功转储指定epoch的监视器映射。

mgr映射

ceph mgr dump :显示mgr集群信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
{
"epoch": 53,
"active_gid": 134101,
"active_name": "node02.owpknt",
"active_addrs": {
"addrvec": [
{
"type": "v2",
"addr": "192.168.192.157:6808",
"nonce": 3716212138
},
{
"type": "v1",
"addr": "192.168.192.157:6809",
"nonce": 3716212138
}
]
},
"active_addr": "192.168.192.157:6809/3716212138",
"active_change": "2024-07-21T06:37:22.629953+0000",
"active_mgr_features": 4540138320759226367,
"available": true,
"standbys": [/*候选模块*/
{
"gid": 134102,
"name": "node01.ohhfsw",
"mgr_features": 4540138320759226367,
"available_modules": [ /*可用模块*/
{
"name": "xxx",
"can_run": true,
"error_string": "",
"module_options": {}
},
...
{}
]
}
],
"modules": [/*已启动的模块*/
"cephadm",
"dashboard",
"iostat",
"nfs",
"prometheus",
"restful"
],
"available_modules": [/*未被禁用模块*/
{
"name": "xxx",
"can_run": true,
"error_string": "",
"module_options": {
"option_name": {
"option_info_key": option_info_value、
}
}
},
],
"services": {
"dashboard": "https://192.168.192.157:8443/",
"prometheus": "http://192.168.192.157:9283/"
},
"always_on_modules": {
"octopus": [
xxx
],
,
"pacific": [
xxx
],
"quincy": [
"balancer",
"crash",
"devicehealth",
"orchestrator",
"pg_autoscaler",
"progress",
"rbd_support",
"status",
"telemetry",
"volumes"
]
},
"last_failure_osd_epoch": 354,
"active_clients": [
{
"name": "xxx",
"addrvec": [
{
"type": "v2",
"addr": "192.168.192.157:0",
"nonce": 2310029076
}
]
},
{}
]
}

osd 映射

ceph osd dump 查看osd集群信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
epoch 357	# 版本号
fsid b5b8c73c-3364-11ef-9424-cb387dad71a6 #fsid
created 2024-06-26T02:35:14.490179+0000 # 创建OSD映射的时间
modified 2024-07-21T06:37:26.309666+0000 # 修改OSD映射的时间

#flags是有关 OSD映射状态的标志位,用于控制Ceph集群中OSD的行为状态、最大程度地提高性能和可靠性
## sortbitwise:开启了每个对象单独排序,这可以优化存储分配和数据分布。
## recovery_deletes:在恢复过程中删除陈旧的对象,以避免占用空间和影响性能。
## purged_snapdirs:快照目录已从PG日志中删除,以节省空间并提高性能。
## pglog_hardlimit:PG日志达到硬限制时强制转储日志,以保持一致性并避免性能问题。
flags sortbitwise,recovery_deletes,purged_snapdirs,pglog_hardlimit
crush_version 20 # crush版本

# 参数配置
full_ratio 0.95
backfillfull_ratio 0.9
nearfull_ratio 0.85
require_min_compat_client luminous
min_compat_client jewel
require_osd_release quincy
stretch_mode_enabled false

# 池信息
pool 1 '.mgr' replicated size 2 min_size 1 crush_rule 0 object_hash rjenkins pg_num 1 pgp_num 1 autoscale_mode on last_change 350 flags hashpspool stripe_width 0 pg_num_max 32 pg_num_min 1 application mgr
pool 5 'test' replicated size 2 min_size 1 crush_rule 0 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode on last_change 350 lfor 0/0/279 flags hashpspool stripe_width 0
max_osd 2

# osd信息
osd.0 up in weight 1 up_from 356 up_thru 356 down_at 355 last_clean_interval [141,350) [v2:192.168.192.156:6800/2298987942,v1:192.168.192.156:6801/2298987942] [v2:10.168.192.156:6802/2298987942,v1:10.168.192.156:6803/2298987942] exists,up 46e1cb35-7472-4389-8d01-2d98ba4897e0
osd.1 up in weight 1 up_from 353 up_thru 356 down_at 352 last_clean_interval [143,350) [v2:192.168.192.157:6800/352260118,v1:192.168.192.157:6801/352260118] [v2:10.168.192.157:6802/352260118,v1:10.168.192.157:6803/352260118] exists,up d6d43523-a098-4cea-bb2d-42df8d102461

# 设备信息
blocklist 192.168.192.157:6809/378083828 expires 2024-07-22T06:37:22.629710+0000
blocklist 192.168.192.157:6808/378083828 expires 2024-07-22T06:37:22.629710+0000
blocklist 192.168.192.156:0/2939350335 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.156:0/3581074465 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.157:0/328775035 expires 2024-07-22T06:37:22.629710+0000
blocklist 192.168.192.156:6808/865415237 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.157:0/1362332659 expires 2024-07-22T06:37:22.629710+0000
blocklist 192.168.192.156:0/2647831566 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.156:0/1889768730 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.156:6808/3436067180 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.156:6809/3436067180 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.156:0/3199323232 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.156:0/4148433618 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.156:6809/865415237 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.156:0/389666931 expires 2024-07-21T12:24:54.305465+0000
blocklist 192.168.192.157:0/2326070148 expires 2024-07-22T06:37:22.629710+0000
blocklist 192.168.192.156:0/4165816795 expires 2024-07-21T16:49:26.573907+0000
blocklist 192.168.192.157:0/4198367927 expires 2024-07-22T06:37:22.629710+0000

PG映射

1
ceph pg dump
1
2
3
4
5
PG_STAT  OBJECTS  MISSING_ON_PRIMARY  DEGRADED  MISPLACED  UNFOUND  BYTES  OMAP_BYTES*  OMAP_KEYS*  LOG  DISK_LOG  STATE         STATE_STAMP                      VERSION  REPORTED  UP       UP_PRIMARY  ACTING   ACTING_PRIMARY  LAST_SCRUB  SCRUB_STAMP                      LAST_DEEP_SCRUB  DEEP_SCRUB_STAMP                 SNAPTRIMQ_LEN
4.19 0 0 0 0 0 0 0 0 0 0 active+clean 2023-04-30T05:50:02.431578+0000 0'0 108:12 [7,2,5] 7 [7,2,5] 7 0'0 2023-04-30T05:50:01.330091+0000 0'0 2023-04-30T05:50:01.330091+0000 0
2.1f 0 0 0 0 0 0 0 0 0 0 active+clean 2023-04-30T05:49:47.320452+0000 0'0 108:17 [0,3,8] 0 [0,3,8] 0 0'0 2023-04-30T05:49:46.202749+0000 0'0 2023-04-30T05:49:46.202749+0000 0
3.1e 0 0 0 0 0 0 0 0 0 0 active+clean 2023-04-30T05:49:49.349973+0000 0'0 108:15 [2,6,3] 2 [2,6,3] 2 0'0 2023-04-30T05:49:48.270032+0000 0'0 2023-04-30T05:49:48.270032+0000 0
4.18 0 0 0 0 0 0 0 0 0 0 active+clean 2023-04-30T05:50:02.449439+0000 0'0 108:12 [3,1,6] 3 [3,1,6] 3 0'0 2023-04-30T05:50:01.330091+0000 0'0 2023-04-30T05:50:01.330091+0000 0
  • PG_STAT: PG 的状态,表示 PG 在当前时间点内的活动情况和健康状况。

    第一部分是十六进制的 OSD 编号,第二部分是十六进制的 epoch 号

  • OBJECTS: PG 中对象数量。

  • MISSING_ON_PRIMARY: 在 primary OSD 上缺少的对象数量。

  • DEGRADED: 在副本 OSD 上损坏或不可用的对象数量。

  • MISPLACED: 在非预期 OSD 上的对象数量。

  • UNFOUND: 未找到的对象数量。

  • BYTES: PG 中对象的总字节数。

  • OMAP_BYTES: PG 中对象元数据的总字节数。

  • OMAP_KEYS: PG 中对象元数据键值对的总数。

  • LOG: 最近操作日志的序列号范围。

  • DISK_LOG: 存储在磁盘上的日志序列号范围。

  • STATE: PG 的状态,例如“active+clean”。

  • STATE_STAMP: PG 最后转换到当前状态的时间戳。

  • VERSION: PG 的版本。

  • REPORTED: 汇报 PG 状态的 OSD 的编号。

  • UP: 处于活动状态的 OSD 编号列表。

  • UP_PRIMARY: 作为主 OSD 进行同步的 OSD 编号。

  • ACTING: 负责读写请求的 OSD 编号列表。

  • ACTING_PRIMARY: 正在执行同步操作的 OSD 编号。

  • LAST_SCRUB: 上次 scrub 的时间戳和结果。

  • SCRUB_STAMP: 上次 scrub 的结束时间戳。

  • LAST_DEEP_SCRUB: 上次 deep scrub 的时间戳和结果。

  • SNAPTRIMQ_LEN: PgSnapTrimq 中等待处理的数量。

  • DEEP_SCRUB_STAMP: 上次 deep scrub 的结束时间戳。

CRUSH 映射

1
2
3
# 需要对crushmap反编译
ceph osd getcrushmap -o comp-filename
crushtool -d comp-filename -o decomp-filename

元数据服务器 (MDS) 映射

1
2
3
4
5
6
7
8
9
10
11
12
ceph fs dump

e1 # 当前文件系统的 epoch 号
# 文件系统是否启用了多 MDS 支持并且曾经启用过
enable_multiple, ever_enabled_multiple: 1,1
# 文件系统支持的兼容性特性:compat 表示 CephFS 要求支持的最低版本,而 rocompat 和 incompat 分别表示与只读客户端和不兼容客户端相关的特性。
compat: compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table,9=file layout v2,10=snaprealm v2}
# 指定将 legacy 客户端分配给文件系统的 ID,但当前没有 legacy 客户端连接到该文件系统。
legacy client fscid: -1

No filesystems configured
dumped fsmap epoch 1

性能信息

1
2
3
4
# 需要再进程所在主机运行,若使用cephadm安装,需要cephadm shell
ceph daemon osd.0 perf dump | nl
ceph daemon mon.node2 perf dump
ceph daemon mgr.node2 perf dump

mon

1
2
3
4
5
6
7
8
9
10
ceph mon stat # 查看mon的状态
ceph mon dump # 查看mon映射信息

ceph mon remove node1 # 删除一个mon 节点
ceph-deploy mon destoiry {hostname [hostname ...]}

添加mon注意先改配置目录配置文件,再推送到所有节点
ceph mon add node1 node1_ip #添加一个mon节点
ceph-deploy mon create {host-name [host-name]...}
ceph-deploy --overwrite-conf config push node1 node2 node3

OSD

osd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 osd df # 查看osd的使用信息

# 要定位对象,只需要对象名和存储池名字即可,例如:

ceph osd map {poolname} {object-name}

PG相关

查看PG组的映射信息

1
2
3
4
5
6
7
8
#查看pg状态
ceph pg stat

#查看pg组的映射信息
ceph pg dump

# 或者
ceph pg ls

查看一个PG的map

1
ceph pg map 7.1a

获取pg的详细信息

1
ceph pg {pg-id} query

显示一个集群中的所有的pg统计

1
ceph pg dump --format plain

PG状态

分布式存储Ceph之PG状态详解

https://www.cnblogs.com/zengzhihua/p/9884238.html

查看ceph集群中的pool数量

1
2
3
4
5
6
7
8
9
ceph osd lspools 
# 查看集群中的存储池名称
ceph osd pool ls

# 查看池的的详细信息
ceph osd pool ls detail

# 查看池的IO情况
ceph osd pool stats

池副本数

1
2
3
4
5
6
7
# 查看ceph 池副本数
ceph osd dump | grep size

# 修改已存在池的副本数
ceph osd pool set <poolname> size|min_size <val>
# 修改默认的池副本数
ceph config set global osd_pool_default_size/min_size <val>

在ceph集群中创建一个pool

1
2
#这里的100指的是PG组:
ceph osd pool create <poolname> <num_pg> <num_pgs>

删除池

1
2
3
4
5
6
7
8
9
10
11
12
# 修改参数配置项允许删除池
ceph config get mon.ceph01 mon_allow_pool_delete
ceph config set global mon_allow_pool_delete true

#
vi /etc/ceph/ceph.conf

[mon]
mon allow pool delete = true

# 重启ceph-mon服务:
systemctl restart ceph-mon.target

显示集群中pool的详细信息

1
2
# 显示集群中pool的详细信息
rados df

显示集群中pool的详细信息

1
ceph osd pool get <pool_name> pg_num

修改池参数

1
2
3
4
5
6
7
8
9
ceph osd pool set <pool_name> target_max_bytes 100000000000000#设置data池的最大存储空间为100T(默认是1T)

ceph osd pool set <pool_name> size 3 #设置data池的副本数是3

ceph osd pool set <pool_name> min_size 2 #设置data池能接受写操作的最小副本为2

ceph osd pool set <pool_name> pg_num 100#设置一个pool的pg数量

ceph osd pool set <pool_name> pgp_num 100#设置一个pool的pgp数量

rados

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看ceph集群中有多少个pool (只是查看pool)
rados lspools

# 查看存储池使用情况:多少个pool,每个pool容量及利用情况
rados df

# 创建一个pool,名字:test
rados mkpool test

# testpool 中创建一个对象 testobject
rados create testobject -p testpool

# 删除(test存储池的)一个对象object
rados rm test-object-1 -p test

# 查看存储池test的对象
rados -p test ls

rados存储池快照

1
2
3
4
5
6
7
8
9
10
rados mkpool testpool
rados -p testpool create testobject
rados -p testpool ls
rados -p testpool ls |more
#存储池快照
rados -p testpool mksnap testpoolsnap
# 存储池快照查看
rados -p testpool lssnap
# 删除存储池快照
rados -p testpool rmsnap testpoolsnap

rados 上传一个文件到存储池

1
2
3
4
5
6
# ls
cfg.txt
# rados -p coolpool put cfg cfg.txt
# rados -p coolpool ls
coolobject
cfg

设备管理

设备管理允许 Ceph 解决硬件故障。

设备跟踪

查看正在使用的存储设备的列表

1
ceph device ls

Ceph 跟踪硬件存储设备(HDD、SSD)以查看哪些设备由哪些守护进程管理

1
2
ceph device ls-by-daemon <daemon>  
ceph device ls-by-host <host>

要检索设备存储的运行状况指标(可以选择特定时间戳),请运行以下形式的命令:

1
ceph device get-health-metrics <devid> [sample-timestamp]

mds

1
2
3
4
5
6
7
8
9
10
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 tell mds.0 client ls

多MDS变成单MDS的方法:https://www.cnblogs.com/bandaoyu/p/16752154.html#ceph%20mds

更多MDS运维命令:https://www.jianshu.com/p/fa96b66f2949

rbd

https://www.cnblogs.com/bandaoyu/p/16752154.html#%E5%9D%97%E8%AE%BE%E5%A4%87%7Crbd%E7%9A%84%E4%B8%80%E4%BA%9B%E5%91%BD%E4%BB%A4

ceph-deploy

https://www.cnblogs.com/bandaoyu/p/16752154.html#ceph-deploy

用户认证

https://www.cnblogs.com/bandaoyu/p/16752154.html#%E7%94%A8%E6%88%B7%E5%92%8C%E8%AE%A4%E8%AF%81

服务管理ceph集群

开启、关闭、重启所有ceph服务

1
systemctl { start | stop | restart} ceph.target 

根据 进程 类型 开启、关闭 和 重启 ceph 服务

1
2
3
4
5
6
7
8
9
10
# mon 进程
systemctl { start | stop | restart} ceph-mon.target
# mgr 进程
systemctl { start | stop | restart} ceph-mgr.target
# osd 进程
systemctl { start | stop | restart} ceph-osd.target
# rgw 进程
systemctl { start | stop | restart} ceph-radosgw.target
# mds进程
systemctl { start | stop | restart} ceph-mds.target

根据 进程 实例 开启、关闭 和 重启 所有 ceph 服务

1
2
3
4
5
6
7
8
9
10
# mon 实例
systemctl { start | stop | restart} ceph-mon@{mon_instance}.service
# mgr 实例
systemctl { start | stop | restart} ceph-mgr@{hostname}.service
# osd 实例
systemctl start ceph-osd@${osd_id}.service
# rgw 实例
systemctl { start | stop | restart} ceph-radosgw@rgw.{hostname}.service
# mds 实例
systemctl { start | stop | restart} ceph-mds@{hostname}.service

故障排查

https://cloud.tencent.com/developer/article/1822591

-------------本文结束-------------