6.3. scrubbing
Ceph는 여러 오브젝트 복사본을 생성하는 것 외에도 배치 그룹을 스크럽하여 데이터 무결성을 보장합니다. Ceph 스크러빙은 오브젝트 스토리지 계층에서 fsck
명령과 유사합니다.
각 배치 그룹에 대해 Ceph는 모든 개체의 카탈로그를 생성하고 각 기본 오브젝트와 복제본을 비교하여 개체가 누락되거나 일치하지 않도록 합니다.
light scrubbing (daily)은 오브젝트 크기 및 특성을 확인합니다. 딥 스크럽(주)은 데이터를 읽고 체크섬을 사용하여 데이터 무결성을 보장합니다.
데이터 무결성을 유지하는 데는 스크럽이 중요하지만 성능을 저하시킬 수 있습니다. 다음 설정을 조정하여 스크럽 작업을 늘리거나 줄입니다.
- osd_max_scrubs
- 설명
- Ceph OSD의 최대 동시 스크럽 작업 수입니다.
- 유형
- 32비트 Int
- 기본값
-
1
- osd_scrub_thread_timeout
- 설명
- scrub 스레드를 제한하기 전 최대 시간(초)입니다.
- 유형
- 32비트 정수
- 기본값
-
60
- osd_scrub_finalize_thread_timeout
- 설명
- scrub 종료 스레드를 시간 초과하기 전의 최대 시간(초)입니다.
- 유형
- 32비트 정수
- 기본값
-
60*10
- osd_scrub_begin_hour
- 설명
-
가장 빨리 또는 깊은 스크럽을 시작할 수 있습니다.
osd scrub end hour
매개변수와 함께 사용하여 스크럽 시간 창을 정의하고 교육 스크럽을 사용하지 않는 시간으로 제한할 수 있습니다. 설정은 정수를 사용하여 24시간 동안 시간을 지정합니다. 여기서0
은 12:01 a.m. ~ 1:00 a.m., 13은 1:01 p.m. ~ 2:00 p.m.까지의 시간을 나타냅니다. - 유형
- 32비트 정수
- 기본값
-
0
:01 ~ 1:00.m.
- osd_scrub_end_hour
- 설명
-
가장 최근의 시간 동안 또는 깊은 스크럽을 시작할 수 있습니다.
osd scrub start hour
매개변수와 함께 사용하여 스크럽 시간 창을 정의하고 교육 스크럽을 사용하지 않는 시간으로 구성할 수 있습니다. 설정은 정수를 사용하여 24시간 동안 시간을 지정합니다. 여기서0
은 12:01 a.m. ~ 1:00 a.m., 13은 1:01 p.m. ~ 2:00 p.m.까지의 시간을 나타냅니다.종료
시간은시작
시간보다 커야 합니다. - 유형
- 32비트 정수
- 기본값
-
24
:01 p.m. ~ 12:00 a.m.
- osd_scrub_load_threshold
- 설명
-
최대 로드입니다. 시스템 로드(
getloadavg()
함수에 정의된 대로)가 이 수보다 크면 Ceph가 스크럽되지 않습니다. 기본값은0.5
입니다. - 유형
- float
- 기본값
-
0.5
- osd_scrub_min_interval
- 설명
- Red Hat Ceph Storage 클러스터 로드가 부족할 때 Ceph OSD를 스크럽하는 최소 간격(초)입니다.
- 유형
- float
- 기본값
-
하루에 한 번.
60*60*24
- osd_scrub_max_interval
- 설명
- 클러스터 로드와 관계없이 Ceph OSD를 스크럽하는 최대 간격(초)입니다.
- 유형
- float
- 기본값
-
일주일에 한 번.
7*60*60*24
- osd_scrub_interval_randomize_ratio
- 설명
-
비율을 사용하고
osd scrub min interval
과osd scrub max 간격 사이에 예약된 scrub를 무작위로 설정합니다
. - 유형
- float
- 기본값
-
0.5
.
- mon_warn_not_scrubbed
- 설명
-
osd_scrub_interval
이 스크럽되지 않은 모든 PG에 대해 경고하라는 시간(초)입니다. - 유형
- 정수
- 기본값
-
0
(경고 없음).
- osd_scrub_chunk_min
- 설명
-
오브젝트 저장소는 해시 경계로 끝나는 청크로 분할됩니다. 청크 스크럽의 경우 Ceph scrubs 개체는 해당 청크에 대해 차단된 쓰기가 한 번에 하나씩 청크입니다.
osd scrub chunk min
설정은 scrub에 대한 최소 청크 수를 나타냅니다. - 유형
- 32비트 정수
- 기본값
-
5
- osd_scrub_chunk_max
- 설명
- scrub에 대한 최대 청크 수입니다.
- 유형
- 32비트 정수
- 기본값
-
25
- osd_scrub_sleep
- 설명
- 딥 스크럽 작업 간에 잠자는 시간입니다.
- 유형
- float
- 기본값
-
0
(또는 끄기).
- osd_scrub_during_recovery
- 설명
- 복구 중에 스크럽을 허용합니다.
- 유형
- bool
- 기본값
-
false
- osd_scrub_invalid_stats
- 설명
- 추가 스크럽이 잘못된 것으로 표시된 통계를 수정하도록 강제 적용합니다.
- 유형
- bool
- 기본값
-
true
- osd_scrub_priority
- 설명
- scrub 작업의 대기열 우선 순위와 클라이언트 I/O를 제어합니다.
- 유형
- 서명되지 않은 32비트 정수
- 기본값
-
5
- osd_scrub_cost
- 설명
- 큐 스케줄링 목적으로 스크럽 작업 수가 메가바이트입니다.
- 유형
- 서명되지 않은 32비트 정수
- 기본값
-
50 << 20
- osd_deep_scrub_interval
- 설명
-
모든 데이터를 완전히 읽는 딥 스크럽을 위한 간격입니다.
osd scrub 로드 임계값
매개변수는 이 설정에 영향을 미치지 않습니다. - 유형
- float
- 기본값
-
일주일에 한 번.
60*60*24*7
- osd_deep_scrub_stride
- 설명
- 딥 스크럽을 수행할 때 크기를 읽습니다.
- 유형
- 32비트 정수
- 기본값
-
512KB.
524288
- mon_warn_not_deep_scrubbed
- 설명
-
osd_deep_scrub_interval
이 스크럽되지 않은 모든 PG에 대해 경고하기 위해 osd_deep_scrub_interval 이후의 초입니다. - 유형
- 정수
- 기본값
-
0
(경고 없음).
- osd_deep_scrub_randomize_ratio
- 설명
-
스크럽이 무작위로 딥 스크럽이 되는 속도가 (
osd_deep_scrub_interval
이 지난 경우에도)입니다. - 유형
- float
- 기본값
-
0.15
또는 15 %.
- osd_deep_scrub_update_digest_min_age
- 설명
- scrub에서 전체 오브젝트 다이제스트를 업데이트하기 전에 몇 초의 이전 오브젝트가 있어야 합니다.
- 유형
- 정수
- 기본값
-
120
시간(시간).