ceph recovery 参数调研

目标

ceph recovery 时会占用大量带宽
本文主要调研一下如何控制, 主要降低 ceph recovery 时的速度, IO 能力

查询某个 osd 当前最大读写能力

[root@cephsvr-128214 ~]# ceph tell osd.12 bench
{
	"bytes_written": 1073741824,
	"blocksize": 4194304,
	"bytes_per_sec": 122277678
}

recovery 常见检测

参数调整方法

单个 OSD 参数调整

[root@cephsvr-128214 ~]# ceph daemon osd.12 config set debug_osd 10
{
	"success": ""
}
[root@cephsvr-128214 ~]# ceph --admin-daemon /var/run/ceph/ceph-osd.12.asok config show | grep debug_osd
"debug_osd": "10/10",

针对所有 OSD 进行参数调整

[root@cephsvr-128040 dizzy]# ceph tell osd.\* injectargs '--osd_max_backfills=1'
osd.0: osd_max_backfills = '1'
osd.1: osd_max_backfills = '1'
osd.2: osd_max_backfills = '1'
osd.3: osd_max_backfills = '1'
osd.4: osd_max_backfills = '1'
osd.5: osd_max_backfills = '1'
osd.6: osd_max_backfills = '1'
osd.7: osd_max_backfills = '1'
osd.8: osd_max_backfills = '1'
osd.9: osd_max_backfills = '1'
osd.10: osd_max_backfills = '1'
osd.11: osd_max_backfills = '1'
osd.12: osd_max_backfills = '1'
osd.13: osd_max_backfills = '1'
osd.14: osd_max_backfills = '1'

查询当前参数方法

[root@cephsvr-128040 dizzy]# ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show  | grep backfill
    "mon_osd_backfillfull_ratio": "0.900000",
    "osd_backfill_retry_interval": "30.000000",
    "osd_backfill_scan_max": "512",
    "osd_backfill_scan_min": "64",
    "osd_debug_reject_backfill_probability": "0.000000",
    "osd_debug_skip_full_check_in_backfill_reservation": "false",
    "osd_kill_backfill_at": "0",
    "osd_max_backfills": "1",

IO 能力调整(针对 recovery)

recovery 信息

参考命令获得 recovery 信息

[root@cephsvr-128214 ~]# ceph pg dump|grep recovering
dumped all
3.20        332                  0      650         0       0 1391972352  767      767                        active+recovering+degraded 2017-12-01 17:32:16.343398  392'767  511:1495  [30,13,3]         30  [30,13,3]             30     392'31 2017-11-29 13:09:00.918493          330'12 2017-11-24 16:50:10.749723
3.365       357                  0      721         0       0 1492619264  803      803                        active+recovering+degraded 2017-12-01 17:32:16.603756  392'803  511:1425  [4,15,30]          4  [4,15,30]              4     392'24 2017-11-29 15:07:21.700341          392'24 2017-11-29 15:07:21.700341
3.428       335                485      485         0       0 1400328438 1666     1666                        active+recovering+degraded 2017-12-01 16:54:11.036479 392'1666    510:49  [16,6,31]         16  [16,6,31]             16    392'407 2017-11-30 06:03:19.380038             0'0 2017-11-23 16:34:44.666269
3.524       383                144      144         0       0 1592238097  919      919                        active+recovering+degraded 2017-12-01 16:52:35.565517  392'919   510:817 [15,10,32]         15 [15,10,32]             15    392'397 2017-11-29 23:30:37.556655          391'34 2017-11-26 01:52:22.370744
3.640       315                  0      639         0       0 1321177088  685      685                        active+recovering+degraded 2017-12-01 17:32:18.653057  392'685  511:1340  [2,19,34]          2  [2,19,34]              2    392'311 2017-11-30 08:50:52.272975          392'34 2017-11-28 22:58:28.172339

重要信息如下

[root@cephsvr-128214 ~]# ceph pg dump|grep recovering|awk '{print $1,$2,$4,$10,$15,$16,$17,$18}'
PG_STAT OBJECTS DEGRADED STATE UP_PRIMARY ACTING ACTING_PRIMARY LAST_SCRUB
3.7d0 339 429 active+recovering+degraded [3,29,19] 3 [3,29,19] 3
3.713 320 456 active+recovering+degraded [0,30,15] 0 [0,30,15] 0
3.198 313 419 active+recovering+degraded [6,13,33] 6 [6,13,33] 6
3.428 335 485 active+recovering+degraded [16,6,31] 16 [16,6,31] 16
3.524 383 144 active+recovering+degraded [15,10,32] 15 [15,10,32] 15

watch 脚本

watch -n 1 -d "ceph pg dump|grep recovering|awk '{print \$1,\$2,\$4,\$10,\$15,\$16,\$17,\$18}'"

磁盘当前读写速度

安装软件

yum install -y dstat

监控状态

[root@cephsvr-128214 ~]# dstat -td -D /dev/sdb
 time     | read  writ
01-12 17:37:26| 758B 2382k
01-12 17:37:27|   0  8228k
01-12 17:37:28|   0    16M
01-12 17:37:29|   0    24M

recovery 控制

默认参数

osd_max_backfills = 1
osd_recovery_max_active = 3 
osd_recovery_sleep = 0  

“osd_disk_thread_ioprio_priority”: “-1”,
“osd_disk_threads”: “1”,
“osd_backfill_scan_max”: “512”,
“osd_backfill_scan_min”: “64”,
“osd_recovery_op_priority”: “3”,
“osd_recovery_max_active”: “3”,

默认状态

max recoveryjournal SSD单个 osd SATArecoverying pg
80 ~ 150MB/s50 ~ 180MB/s20 ~ 60MB/s5 ~ 6个

调整参数

osd_max_backfill

osd_max_backfills = 2
max recoveryjournal SSD单个 osd SATArecoverying pg
120 ~ 350MB/s180 ~ 340MB/s12 ~ 70MB/s20 ~ 22个

osd_recovery_max_active

osd_recovery_max_active = 10
max recoveryjournal SSD单个 osd SATArecoverying pg
80 ~ 250MB/s50 ~ 260MB/s20 ~ 60MB/s5 ~ 10个

只调整这个参数, 效果不大, 必须配合 osd_max_backfills 进行调整

osd_recovery_sleep

osd_recovery_sleep = 0.5

这个主要用于降速

max recoveryjournal SSD单个 osd SATArecoverying pg
30 ~ 50MB/s20 ~ 55MB/s12 ~ 40MB/s5 ~ 10个
### ceph-fuse命令参数解析 #### 基本语法 `ceph-fuse` 是用于将 Ceph 文件系统通过 FUSE (Filesystem in Userspace) 接口挂载至本地系统的工具。基本使用格式如下: ```bash ceph-fuse [options...] <mountpoint> ``` 其中 `<mountpoint>` 表示目标挂载点路径。 #### 主要选项解释 - `-m mon_addr[:port], --mon_host=mon_addr[:port]` 指定监视器节点地址及其端口号,默认情况下Ceph集群中的Monitor服务监听于6789端口。此参数允许用户连接特定的监控服务器实例[^2]。 - `--name=name, -n name` 设置客户端名称,通常形式为`type.id`,例如`client.admin`表示管理员身份登录。这有助于权限管理和认证过程[^4]。 - `-k keyfile, --key=keyfile` 提供包含访问密钥的文件位置给客户端程序,以便完成鉴权操作。该文件应遵循Keyring格式并妥善保管安全。 - `--no-mon-config` 不自动加载来自Monitors的服务配置信息。当希望完全控制启动行为而不依赖默认设置时可启用此项。 - `-r root[,root...], --rados-root=root[,root...]` 定义RADOS对象存储层次结构下的根目录路径,可以有多个逗号分隔的不同路径作为参数传递。 - `-f, --foreground` 让进程保持在前台运行而不是后台守护模式下工作,便于调试期间查看日志输出。 - `-d, --debug` 启用更详细的诊断消息打印功能,对于排查问题非常有用。 #### 实际应用案例展示 下面给出一段完整的命令行例子来说明如何利用上述提到的各种开关组合实现具体需求: ```bash ceph-fuse \ -m 10.10.10.237:6789,10.10.10.238:6789 \ -n client.admin \ -k /var/cephfs_keyring \ -r /testcase \ /mnt/cephfs/ ``` 这段脚本实现了向两台位于不同IP地址上的监视器发起请求,并以管理账户的身份携带预存好的秘钥文件进行验证,最终把远程共享空间映射到了宿主机内的 `/mnt/cephfs/` 路径之下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值