ceph를 사용하다보면 scruubed, deep-scrruubed 상태로 health 가 warn으로 노출될 때가 있습니다.
$ sudo ceph -s
cluster:
id: db897dc7-85a1-43ec-81f2-d6d29566e5b7
health: HEALTH_WARN
307 pgs not deep-scrubbed in time
282 pgs not scrubbed in time
services:
mon: 1 daemons, quorum beta-ceph-01 (age 90m)
mgr: beta-ceph-01(active, since 90m)
osd: 3 osds: 3 up (since 40m), 3 in (since 8m)
rgw: 1 daemon active (1 hosts, 1 zones)
data:
pools: 12 pools, 353 pgs
objects: 1.67k objects, 4.4 GiB
usage: 9.0 GiB used, 291 GiB / 300 GiB avail
pgs: 353 active+clean
io:
client: 46 KiB/s rd, 9.4 KiB/s wr, 45 op/s rd, 31 op/s wr
그렇다면 이 scrrubed이 무엇일지 확인해보면 좋을 것 같습니다.
Ref ::
Placement Group(PG)의 데이터 일관성을 검사하는 기본검사로 deep-scrubbed 에 비하여 상대적으로 시간소요가 짧습니다.
osd의 버그나, ceph 파일시스템에 대한 오류를 잡습니다.
일반적인 scruubed 작업보다 더 deep한 작업으로 scruubed에서 검사하지않는 객체, 메타데이터까지 검사하며 이에 따라 기본 scruubed보다 시간소요가 큽니다.
제 환경의 deep-scrubbged는 default한 설정으로 들어가 있습니다.
$ sudo ceph config get osd osd_deep_scrub_interval
604800.000000
scruubed job은 어떨까?
$ sudo ceph config get osd osd_scrub_begin_hour
0
$ sudo ceph config get osd osd_scrub_end_hour
0
$ sudo ceph config get osd osd_scrub_begin_week_day
0
$ sudo ceph config get osd osd_scrub_end_week_day
0
deep-scruubed의 작업은 어떻게 결정될까?
$ sudo ceph config get osd osd_deep_scrub_randomize_ratio
0.150000
"* pgs not deep-scrubbed in time"
이 발생하면 어떻게 해야할까?
scrubbed job은 일정 시간안에 수행이 되어야하나, 그 시간안에 수행이되지 못하여 발생한 것으로 수동으로 작업을 진행하거나 혹은 다시 돌게되는 시간까지 모니터링만해도 상관은 없다.
수동으로 진행하는 방법은 아래와같다.
$ sudo ceph health detail
HEALTH_WARN 316 pgs not deep-scrubbed in time; 284 pgs not scrubbed in time
[WRN] PG_NOT_DEEP_SCRUBBED: 316 pgs not deep-scrubbed in time
pg 12.11 not deep-scrubbed since 2024-11-12T15:44:49.902271+0900
pg 6.1b not deep-scrubbed since 2024-11-12T16:30:50.284405+0900
pg 5.18 not deep-scrubbed since 2024-11-12T16:30:28.771097+0900
pg 4.19 not deep-scrubbed since 2024-11-12T16:03:34.433523+0900
pg 2.1f not deep-scrubbed since 2024-11-12T16:30:07.137002+0900
pg 3.1e not deep-scrubbed since 2024-11-12T15:49:34.003736+0900
pg 7.1a not deep-scrubbed since 2024-11-12T16:29:58.422816+0900
pg 8.15 not deep-scrubbed since 2024-11-12T16:30:40.518990+0900
...
pg deep-scrrubed 실행
$ sudo ceph pg deep-scrub 6.1b
instructing pg 6.1b on osd.0 to deep-scrub
진행되는 동안 pg에 대한 모니터링은 이렇게 하면 되지않을까 싶습니다.
$ sudo ceph pg 6.1b query
{
"snap_trimq": "[]",
"snap_trimq_len": 0,
"state": "active+clean",
"epoch": 923,
...
"stats": {
"version": "0'0",
"reported_seq": 668,
"reported_epoch": 923,
...
"last_deep_scrub_stamp": "2024-11-12T16:52:16.313918+0900",
"last_clean_scrub_stamp": "2024-11-12T16:52:16.313918+0900",
"last_deep_scrub_stamp": "2024-11-12T16:52:16.313918+0900",
...