검색

12.2. Crimson과 Classic Ceph OSD 아키텍처의 차이점

download PDF

클래식 ceph-osd 아키텍처에서는 전달자 스레드가 OP 큐에 메시지를 배치하는 유선에서 클라이언트 메시지를 읽습니다. 그런 다음 osd-op thread-pool은 메시지를 선택하고 트랜잭션을 생성하고 현재 기본 ObjectStore 구현인 BlueStore에 대기열에 넣습니다. BlueStore의 kv_queue 는 이 트랜잭션과 큐의 다른 항목을 선택하고, 동시에 rocksdb 가 트랜잭션을 커밋할 때까지 기다린 다음 완료 콜백을 완료자 큐에 배치합니다. 그런 다음 완료자 스레드는 완료 콜백 및 큐를 선택하여 보낼 enger 스레드를 대체합니다.

이러한 각 작업에는 큐의 콘텐츠에 대한 스레드 간 협업이 필요합니다. pg 상태 의 경우 하나 이상의 스레드가 경합을 잠그려면 모든 PG의 내부 메타데이터에 액세스해야 할 수 있습니다.

프로세서 사용량이 증가한 이러한 잠금 경합은 작업 및 코어 수에 따라 빠르게 확장되며 모든 잠금 지점이 특정 시나리오에서 확장 병목 현상이 될 수 있습니다. 또한 이러한 잠금 및 큐는 조정되지 않은 경우에도 대기 시간 비용이 발생합니다. 이 대기 시간으로 인해 예약 유지 작업이 작업자 스레드와 잠금 간의 작업을 위임하면 컨텍스트가 강제될 수 있으므로 스레드 풀과 작업 대기열이 저하됩니다.

Ceph OSD 아키텍처

ceph-osd 아키텍처와 달리 Crimson은 컨텍스트 전환 없이 단일 I/O 작업을 완료할 수 있으며 기본 스토리지 작업에 필요하지 않은 경우 차단하지 않고 단일 I/O 작업을 완료할 수 있습니다. 그러나 일부 작업은 복구 또는 기본 장치와 같은 시스템의 상태에 따라 비동기 프로세스가 완료될 때까지 기다릴 수 있어야 합니다.

Crimson은 일반적으로 각 코어에 고정된 하나의 스레드를 사전 할당하는 고도의 비동기 엔진인 Seastar라는 C++ 프레임워크를 사용합니다. 이러한 분할 작업은 코어와 잠금 간에 상태를 분할할 수 있도록 코어 간에 분할되는 것을 방지할 수 있습니다. Seastar를 사용하면 대상 개체를 기반으로 한 스레드 그룹으로 I/O 작업이 분할됩니다. I/O 작업을 서로 다른 스레드 그룹으로 분할하는 대신 단일 스레드 내에서 모든 파이프라인 단계를 실행합니다. 작업을 차단해야 하는 경우 코어의 Seastar reactor가 다른 동시 작업으로 전환되고 진행됩니다.

이상적으로는 모든 잠금 및 context-switches는 실행 중인 비차단 작업이 완료되거나 공동으로 발생할 때까지 CPU를 소유하므로 더 이상 필요하지 않습니다. 다른 스레드가 동시에 작업을 선점할 수 없습니다. 데이터 경로의 다른 shard와의 통신이 필요하지 않은 경우 이상적인 성능은 I/O 장치가 제한에 도달할 때까지 코어 수와 함께 선형으로 확장됩니다. OSD 수준에서 PG shard 모든 IO가 있기 때문에 이 설계는 Ceph OSD에 적합합니다.

ceph-osd 와 달리crimson-osd 는 daemonize 옵션이 활성화된 경우에도 자체적으로 데몬링하지 않습니다. 지원되는 Linux 배포판 이후 crimson-osd 를 데몬화하지 마십시오. 이 경우 애플리케이션을 데몬화할 수 있는 systemd 를 사용합니다. sysvinit 에서는 start-stop-daemon 을 사용하여 crimson-osd 를 데몬화합니다.

Crimson OSD 아키텍처

ObjectStore 백엔드

crimson-osd 는 네이티브 및 무관한 오브젝트 저장소 백엔드를 모두 제공합니다. 네이티브 오브젝트 저장소 백엔드는 Seastar 반응기를 사용하여 I/O를 수행합니다.

Crimson에서 세 가지 ObjectStore 백엔드가 지원됩니다.

  • AlienStore - 이전 버전의 오브젝트 저장소, 즉 BlueStore와의 호환성을 제공합니다.
  • CyanStore - volatile 메모리에 의해 구현되는 테스트를 위한 더미 백엔드입니다. 이 오브젝트 저장소는 클래식 OSD의 memstore 후에 모델링됩니다.
  • SeaStore - Crimson OSD를 위해 특별히 설계된 새 오브젝트 저장소입니다. 여러 shard 지원을 위한 경로는 백엔드의 특정 목표에 따라 다릅니다.

다음은 다른 두 가지 일반 OSD ObjectStore 백엔드입니다.

  • MemStore - 백엔드 오브젝트 저장소의 메모리입니다.
  • BlueStore - 클래식 ceph-osd 에서 사용하는 오브젝트 저장소입니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.