A.4. 블록 장치 캐싱 옵션
Ceph 블록 장치인 librbd
의 사용자 공간 구현은 Linux 페이지 캐시를 활용할 수 없으므로 RBD
캐싱이라는 자체 메모리 내 캐싱이 포함되어 있습니다. Ceph 블록 장치 캐싱은 잘 사용된 하드 디스크 캐싱과 동일하게 작동합니다. 운영 체제가 장벽 또는 플러시 요청을 보내면 모든 더티 데이터가 Ceph OSD에 작성됩니다. 즉, 플러시를 올바르게 보내는 가상 머신, 즉 Linux 커널 버전 2.6.32 이상과 함께 잘 작동하는 물리적 하드 디스크를 사용하는 것과 마찬가지로 나중 쓰기 캐싱을 사용하는 것이 안전합니다. 이 캐시는 Least Recently Used(LRU) 알고리즘을 사용하며 나중 쓰기 모드에서는 처리량 향상을 위해 연속 요청을 병합할 수 있습니다.
Ceph 블록 장치는 나중 쓰기 캐싱을 지원합니다. 나중 쓰기 캐싱을 활성화하려면 Ceph 구성 파일의 [client]
섹션에 rbd_cache = true
를 설정합니다. 기본적으로 librbd
는 캐싱을 수행하지 않습니다. 쓰기 및 읽기는 스토리지 클러스터에 직접 이동하고 쓰기는 데이터가 모든 복제본의 디스크에 있을 때만 반환됩니다. 캐시가 활성화된 상태에서 rbd_cache_max_dirty
이외의 바이트가 없으면 쓰기가 즉시 반환됩니다. 이 경우 쓰기는 쓰기를 트리거하고 충분한 바이트가 플러시될 때까지 차단됩니다.
Ceph 블록 장치는 동시 쓰기 캐싱을 지원합니다. 캐시 크기를 설정할 수 있으며 나중 쓰기 캐싱에서 쓰기 캐싱으로 전환할 대상 및 제한을 설정할 수 있습니다. write-through 모드를 활성화하려면 rbd_cache_max_dirty
를 0으로 설정합니다. 즉, 쓰기는 모든 복제본에서 데이터가 디스크에 있을 때만 반환되지만 읽기는 캐시에서 가져올 수 있습니다. 캐시는 클라이언트의 메모리에 있으며 각 Ceph 블록 장치 이미지에는 자체 가 있습니다. 캐시는 클라이언트에 로컬이므로 다른 사용자가 이미지에 액세스하는 경우 일관성이 유지되지 않습니다. Ceph 블록 장치 상단에 GFS 또는 OCFS와 같은 다른 파일 시스템을 실행하면 활성화된 캐싱에서 작동하지 않습니다.
Ceph 블록 장치의 Ceph 구성 설정은 기본적으로 /etc/ceph/ceph.conf
의 Ceph 구성 파일의 [client]
섹션에 설정해야 합니다.
설정은 다음과 같습니다.
- rbd_cache
- 설명
- RADOS Block Device(RBD)의 캐싱을 활성화합니다.
- 유형
- 부울
- 필수 항목
- 없음
- 기본값
-
true
- rbd_cache_size
- 설명
- RBD 캐시 크기(바이트)입니다.
- 유형
- 64비트 Integer
- 필수 항목
- 없음
- 기본값
-
32 MiB
- rbd_cache_max_dirty
- 설명
-
캐시
가 나중 쓰기를 트리거하는 더티
(바이트)입니다.0
인 경우 동시 쓰기 캐싱을 사용합니다. - 유형
- 64비트 Integer
- 필수 항목
- 없음
- 제약 조건
-
rbd 캐시 크기
보다 작아야 합니다. - 기본값
-
24 MiB
- rbd_cache_target_dirty
- 설명
-
캐시가 데이터 스토리지에 데이터 쓰기를 시작하기 전 더
티 대상입니다
. 캐시 쓰기를 차단하지 않습니다. - 유형
- 64비트 Integer
- 필수 항목
- 없음
- 제약 조건
-
rbd 캐시 최대 더티 캐시보다 작아야
합니다. - 기본값
-
16 MiB
- rbd_cache_max_dirty_age
- 설명
- writeback을 시작하기 전에 더티 데이터가 캐시에 있는 시간(초)입니다.
- 유형
- float
- 필수 항목
- 없음
- 기본값
-
1.0
- rbd_cache_max_dirty_object
- 설명
-
개체의 더티 제한 -
rbd_cache_size
에서 자동 계산에 대해0
으로 설정합니다. - 유형
- 정수
- 기본값
-
0
- rbd_cache_block_writes_upfront
- 설명
-
true
인 경우aio_write
호출이 완료되기 전에 캐시에 쓰기를 차단합니다.false
인 경우aio_completion
이 호출되기 전에 차단됩니다. - 유형
- 부울
- 기본값
-
false
- rbd_cache_writethrough_until_flush
- 설명
- 동시 쓰기 모드로 시작되고 첫 번째 플러시 요청이 수신된 후 나중 쓰기로 전환합니다. 이 기능을 활성화하면 rbd에서 실행되는 VM이 2.6.32 이전의 Linux의 virtio 드라이버와 같이 플러시를 보낼 수 없는 경우 안전한 설정입니다.
- 유형
- 부울
- 필수 항목
- 없음
- 기본값
-
true