假设!在一个阳光明媚的日子,你收到投诉说你的 Ceph 存储集群的性能不如昨天。在检查集群状态后,你发现正在进行放置组 scrubbing,根据你的场景,你可能希望降低其优先级。以下是如何操作。
注意: OSD 磁盘线程 I/O 优先级只能在磁盘调度器为 cfq 时更改。
- 检查磁盘调度器,如果不是 cfq,你可以动态地将其更改为 cfq。
1
2
3
| $ sudo cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
$ sudo echo cfq > /sys/block/sda/queue/scheduler
|
- 接下来,检查 OSD 磁盘线程 io 优先级的当前值,默认值应如下所示。
1
2
| $ sudo ceph daemon osd.0 config get osd_disk_thread_ioprio_class
{ "osd_disk_thread_ioprio_class": ""}
|
1
2
| $ sudo ceph daemon osd.0 config get osd_disk_thread_ioprio_priority
{ "osd_disk_thread_ioprio_priority": "-1"}
|
- 通过执行以下命令降低 osd_disk_thread_ioprio
1
2
| $ sudo ceph tell osd.* injectargs '--osd_disk_thread_ioprio_priority 7'
$ sudo ceph tell osd.* injectargs '--osd_disk_thread_ioprio_class idle'
|
- 最后,重新检查 osd_disk_thread_ioprio
1
2
| $ sudo ceph daemon osd.0 config get osd_disk_thread_ioprio_class
{ "osd_disk_thread_ioprio_class": "idle"}
|
1
2
| $ sudo ceph daemon osd.0 config get osd_disk_thread_ioprio_priority
{ "osd_disk_thread_ioprio_priority": "7"}
|
这应该降低 OSD scrubbing 优先级,并且对于减慢繁忙处理客户端操作的 OSD 上的 scrubbing 非常有用。一旦万事俱备,最好恢复更改。