2장. crush 관리자 개요


CRUSH(Controlled Replication Under Scalable Hashing) 알고리즘은 컴퓨팅 데이터 스토리지 위치를 통해 데이터를 저장하고 검색하는 방법을 결정합니다.

 

충분히 발전된 기술은 매직과 구별할 수 없습니다.

 
 -- Arthur C. Clarke

2.1. crush introduction

스토리지 클러스터의 CRUSH 맵은 CRUSH 계층 구조 내의 장치 위치와 Ceph가 데이터를 저장하는 방법을 결정하는 각 계층 구조의 규칙을 설명합니다.

CRUSH 맵에는 하나 이상의 노드 계층 구조가 포함되어 있습니다. Ceph에서 "buckets"라는 계층 구조의 노드는 해당 유형에 정의된 스토리지 위치를 모두 집계합니다. 예를 들어 행, 랙, 섀시, 호스트 및 장치가 있습니다. 계층 구조의 각 리프는 기본적으로 스토리지 장치 목록에 있는 스토리지 장치 중 하나로 구성됩니다. 리프는 항상 하나의 노드 또는 "bucket"에 포함됩니다. CRUSH 맵에는 CRUSH가 데이터를 저장하고 검색하는 방법을 결정하는 규칙 목록도 있습니다.

참고

클러스터에 OSD를 추가할 때 스토리지 장치가 CRUSH 맵에 추가됩니다.

CRUSH 알고리즘은 장치별 가중치 값에 따라 스토리지 장치 간에 데이터 개체를 분배하여 균일한 확률 분배를 조정합니다. CRUSH는 관리자가 정의하는 계층적 클러스터 맵에 따라 오브젝트와 복제본 또는 삭제 코딩 청크를 배포합니다. CRUSH 맵은 규칙에 대해 포함하는 사용 가능한 스토리지 장치 및 논리 버킷을 나타내며 규칙을 사용하는 각 풀을 확장합니다.

장애 도메인 또는 성능 도메인에서 배치 그룹을 OSD에 매핑하기 위해 CRUSH 맵은 생성된 CRUSH 맵의 유형에서 계층적 버킷 유형 목록을 정의합니다. 버킷 계층 구조를 생성하는 목적은 리프 노드를 장애 도메인 또는 성능 도메인 또는 둘 다로 분리하는 것입니다. 장애 도메인에는 호스트, 섀시, 랙, 전원 분배 단위, Pod, 행, 방, 데이터 센터가 포함됩니다. 성능 도메인에는 장애 도메인과 특정 구성의 OSD가 포함됩니다. 예를 들어 SSD, SAS 드라이브 및 SSD 저널이 있는 SATA 드라이브 등이 있습니다. 장치에는 장치 클래스 가 있는 CRUSH 계층 구조를 더 빠르게 구축하기 위해 hdd,ssdnvme 와 같은 클래스 개념이 있습니다.

OSD를 나타내는 리프 노드를 제외하고 나머지 계층 구조는 임의의 것이며 기본 유형이 요구 사항에 맞지 않는 경우 자체 요구에 따라 정의할 수 있습니다. CRUSH 맵 버킷 유형을 조직의 하드웨어 이름 지정 규칙에 조정하고 물리적 하드웨어 이름을 반영하는 인스턴스 이름을 사용하는 것이 좋습니다. 이름 지정 관행을 사용하면 OSD 또는 기타 하드웨어 오류와 관리자가 호스트 또는 기타 하드웨어에 대한 원격 또는 물리적 액세스 권한이 필요한 경우 클러스터를 더 쉽게 관리하고 문제를 해결할 수 있습니다.

다음 예에서 버킷 계층 구조에는 4개의 리프 버킷(osd 1-4), 두 개의 노드 버킷(호스트 1-2) 및 1개의 랙 노드(랙 1)가 있습니다.

CRUSH 계층 구조

리프 노드는 CRUSH 맵 시작 시 장치 목록에 선언된 스토리지 장치를 반영하므로 버킷 인스턴스로 선언할 필요가 없습니다. 계층 구조에서 두 번째로 가장 낮은 버킷 유형은 일반적으로 장치를 집계합니다. 즉, 일반적으로 스토리지 미디어를 포함하는 컴퓨터이며 관리자가 "node", "computer", "server", "host", "machine" 등과 같이 이를 설명하는 데 선호하는 용어를 사용합니다. 밀도가 높은 환경에서는 카드 및 섀시당 여러 호스트/노드를 확인하는 것이 점점 더 일반적입니다. 예를 들어 노드가 실패하면 카드 및 섀시 오류를 고려해야 합니다. 예를 들어 노드가 실패하면 여러 호스트/노드와 OSD가 중단될 수 있습니다.

버킷 인스턴스를 선언할 때 해당 유형을 지정하고, 고유한 이름을 문자열로 지정하고, 음수 정수로 표시되는 선택적 고유 ID를 할당하고, 항목의 총 용량 또는 기능을 기준으로 가중치를 지정하고, straw2 와 같은 버킷 알고리즘을 지정하고, 일반적으로 0 을 반영하는 해시 알고리즘을 지정합니다. 버킷에는 하나 이상의 항목이 있을 수 있습니다. 항목은 노드 버킷 또는 휴가로 구성될 수 있습니다. 항목에는 항목의 상대적 가중치를 반영하는 가중치가 있을 수 있습니다.

2.1.1. 동적 데이터 배치

Ceph 클라이언트 및 Ceph OSD는 모두 CRUSH 맵과 CRUSH 알고리즘을 사용합니다.

  • Ceph 클라이언트: CRUSH를 Ceph 클라이언트에 매핑하여 CRUSH를 통해 Ceph 클라이언트가 OSD와 직접 통신할 수 있습니다. 즉, Ceph 클라이언트는 단일 장애 지점, 성능 병목, 중앙 집중식 조회 서버의 연결 제한 및 스토리지 클러스터 확장성에 대한 물리적 제한으로 작동할 수 있는 중앙 집중식 개체 조회 테이블을 방지합니다.
  • Ceph OSD: CRUSH 맵을 Ceph OSD에 배포함으로써 OSD는 복제, 백필링 및 복구를 처리할 수 있습니다. 즉, Ceph OSD는 Ceph 클라이언트를 대신하여 오브젝트 복제본(또는 코딩 청크)의 스토리지를 처리합니다. 또한 Ceph OSD는 클러스터를 재조정하고 장애로부터 동적으로 복구할 수 있는 클러스터에 대해 충분히 알고 있음을 의미합니다.

2.1.2. CRUSH 장애 도메인

여러 오브젝트 복제본 또는 M 삭제 코딩 청크가 있으면 데이터 손실을 방지할 수 있지만 고가용성을 해결하기에는 충분하지 않습니다. CRUSH는 Ceph Storage 클러스터의 기본 물리적 조직을 반영하여 관련 장치 장애의 잠재적 소스를 모델링할 수 있습니다. 클러스터의 토폴로지를 클러스터 맵에 인코딩하여 CRUSH 배치 정책은 원하는 의사 무작위 배포를 유지 관리하면서 다른 장애 도메인에서 오브젝트 복제본 또는 삭제 코딩 청크를 분리할 수 있습니다. 예를 들어 동시 오류 가능성을 해결하기 위해 데이터 복제본 또는 삭제 코딩 청크가 서로 다른 보류, 랙, 전원 공급 장치, 컨트롤러 또는 물리적 위치를 사용하는 장치에 있는지 확인하는 것이 바람직할 수 있습니다. 이렇게 하면 데이터 손실을 방지하고 클러스터가 성능 저하된 상태로 작동할 수 있습니다.

2.1.3. CRUSH 성능 도메인

Ceph는 여러 계층을 지원하여 한 가지 유형의 하드웨어 성능 프로필을 다른 유형의 하드웨어 성능 프로파일과 분리할 수 있습니다. 예를 들어 CRUSH는 하드 디스크 드라이브에 대해 하나의 계층 구조와 SSD의 다른 계층 구조를 생성할 수 있습니다. 성능 도메인 - 기본 하드웨어의 성능 프로파일을 고려한 계층 구조에서는 다양한 성능 특성을 지원해야 하므로 점점 더 인기가 있습니다. 운영적으로는 root 유형 버킷이 두 개 이상인 CRUSH 맵일 뿐입니다. 사용 사례 예는 다음과 같습니다.

  • Object Storage: S3 및 Swift 인터페이스의 오브젝트 스토리지 백엔드 역할을 하는 Ceph 호스트는 VM에 적합하지 않을 수 있는 SATA 드라이브와 같이 비용이 적게 드는 스토리지 미디어를 활용할 수 있습니다. 이는 개체 스토리지의 경우 기가바이트당 비용이 절감되는 반면, 더 경제적인 스토리지 호스트를 클라우드 플랫폼에서 볼륨 및 이미지를 저장하기 위한 성능 이상으로 분리할 수 있습니다. HTTP는 오브젝트 스토리지 시스템에서 병목 현상이 발생하는 경향이 있습니다.
  • 콜드 스토리지( Cold Storage ): 드물게 액세스 가능한 데이터 또는 편안한 성능 요구 사항으로 데이터 검색을 위해 설계된 시스템 - 저렴한 스토리지 미디어 및 삭제 코딩을 활용할 수 있습니다. 그러나 삭제 코딩에는 약간의 추가 RAM 및 CPU가 필요할 수 있으므로 개체 스토리지 또는 VM에 사용되는 호스트와 RAM 및 CPU 요구 사항이 다를 수 있습니다.
  • SSD 지원 풀: SSD는 비용이 많이 들지만 하드 디스크 드라이브보다 상당한 이점을 제공합니다. SSD는 검색 시간이 없으며 높은 총 처리량을 제공합니다. 저널링에 SSD를 사용하는 것 외에도 클러스터는 SSD 지원 풀을 지원할 수 있습니다. 일반적인 사용 사례에는 고성능 SSD 풀이 포함됩니다. 예를 들어 Ceph Object Gateway의 .rgw.buckets.index 풀을 SATA 드라이브 대신 SSD에 매핑할 수 있습니다.

CRUSH 맵은 장치 클래스의 개념을 지원합니다. Ceph는 스토리지 장치의 측면을 검색하고 hdd,ssd 또는 nvme 와 같은 클래스를 자동으로 할당할 수 있습니다. 그러나 CRUSH는 이러한 기본값으로 제한되지 않습니다. 예를 들어 CRUSH 계층 구조를 사용하여 다양한 유형의 워크로드를 분리할 수도 있습니다. 예를 들어, SSD는 저널 또는 쓰기 로그, 버킷 인덱스 또는 원시 오브젝트 스토리지에 사용할 수 있습니다. CRUSH는 ssd-bucket-index 또는 ssd-object-storage 와 같은 다양한 장치 클래스를 지원할 수 있으므로 Ceph는 다른 워크로드에 동일한 스토리지 미디어를 사용하지 않으므로 성능을 예측 가능하고 일관되게 만들 수 있습니다.

백그라운드에서 Ceph는 각 장치 클래스에 대한 CRUSH 루트를 생성합니다. 이러한 루트는 OSD에서 장치 클래스를 설정하거나 변경하는 경우에만 수정해야 합니다. 다음 명령을 사용하여 생성된 루트를 볼 수 있습니다.

[ceph: root@host01 /]# ceph osd crush tree --show-shadow
ID   CLASS  WEIGHT    TYPE NAME
-24    ssd   4.54849  root default~ssd
-19    ssd   0.90970      host ceph01~ssd
  8    ssd   0.90970          osd.8
-20    ssd   0.90970      host ceph02~ssd
  7    ssd   0.90970          osd.7
-21    ssd   0.90970      host ceph03~ssd
  3    ssd   0.90970          osd.3
-22    ssd   0.90970      host ceph04~ssd
  5    ssd   0.90970          osd.5
-23    ssd   0.90970      host ceph05~ssd
  6    ssd   0.90970          osd.6
 -2    hdd  50.94173  root default~hdd
 -4    hdd   7.27739      host ceph01~hdd
 10    hdd   7.27739          osd.10
-12    hdd  14.55478      host ceph02~hdd
  0    hdd   7.27739          osd.0
 12    hdd   7.27739          osd.12
 -6    hdd  14.55478      host ceph03~hdd
  4    hdd   7.27739          osd.4
 11    hdd   7.27739          osd.11
-10    hdd   7.27739      host ceph04~hdd
  1    hdd   7.27739          osd.1
 -8    hdd   7.27739      host ceph05~hdd
  2    hdd   7.27739          osd.2
 -1         55.49022  root default
 -3          8.18709      host ceph01
 10    hdd   7.27739          osd.10
  8    ssd   0.90970          osd.8
-11         15.46448      host ceph02
  0    hdd   7.27739          osd.0
 12    hdd   7.27739          osd.12
  7    ssd   0.90970          osd.7
 -5         15.46448      host ceph03
  4    hdd   7.27739          osd.4
 11    hdd   7.27739          osd.11
  3    ssd   0.90970          osd.3
 -9          8.18709      host ceph04
  1    hdd   7.27739          osd.1
  5    ssd   0.90970          osd.5
 -7          8.18709      host ceph05
  2    hdd   7.27739          osd.2
  6    ssd   0.90970          osd.6

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.