2.6.2. CRUSH 맵에서 논리 호스트 이름 사용

RHCS 3 이상 릴리스에서 CRUSH는 RHCS 2 및 이전 릴리스에서 지원되지 않는 스토리지 장치 "class"의 개념을 지원합니다. NVMe, SSD 또는 HDD와 같은 스토리지 장치의 여러 클래스가 포함된 호스트 또는 노드가 포함된 RHCS 3 클러스터에서는 장치 클래스와 단일 CRUSH 계층 구조를 사용하여 다양한 스토리지 장치 클래스를 구분합니다. 이렇게 하면 논리 호스트 이름을 사용할 필요가 없습니다. RHCS 2 이전 릴리스에서는 각 장치 클래스에 하나씩 여러 CRUSH 계층 구조를 사용하고 논리적 호스트 이름을 사용하여 CRUSH 계층 구조에서 호스트 또는 노드를 구분합니다.

CRUSH 맵에서 호스트 이름은 고유해야 하며 한 번만 사용해야 합니다. 호스트가 여러 CRUSH 계층 구조 및 사용 사례를 제공하는 경우 CRUSH 맵은 실제 호스트 이름이 한 번만 사용되는지 확인하기 위해 논리 호스트 이름을 사용할 수 있습니다. 예를 들어 노드에는 SSD, SSD 저널이 있는 SAS 드라이브, 공동 배치된 저널이 있는 SATA 드라이브와 같은 여러 개의 드라이브 클래스가 있을 수 있습니다. RHCS 2 및 이전 릴리스에서 동일한 호스트에 대해 여러 CRUSH 계층 구조를 생성하려면 계층 구조에서 실제 호스트 이름 대신 논리 호스트 이름을 사용해야 버킷 이름이 CRUSH 계층 구조 내에서 고유합니다. 예를 들어 호스트 이름이 data2인 경우 CRUSH 계층에서 data 2-sas-ssd 및 data2- index 와 같은 논리 이름을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

host data2-sas-ssd {
  id -11   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item osd.0 weight 1.000
  item osd.1 weight 1.000
  item osd.2 weight 1.000
  item osd.3 weight 1.000
}

앞서 언급한 예에서 호스트 data2 는 논리 이름 data2-ssd 를 사용하여 SSD의 저널과 SAS 드라이브를 하나의 계층 구조로 매핑합니다. 이전 예에서 osd. 3을 통해 OSD ID osd. 0 은 처리량이 높은 하드웨어 구성에서 SSD 저널을 사용하여 SAS 드라이브를 나타냅니다. 이러한 OSD ID는 다음 예의 OSD ID와 다릅니다.

다음 예에서 호스트 data2-index는 논리 이름 data2-index 를 사용하여 버킷 색인의 SSD 드라이브를 두 번째 계층 구조에 매핑합니다. 다음 예에서 OSD ID osd.4 는 버킷 인덱스 풀에만 사용되는 SSD 드라이브 또는 기타 고속 스토리지 미디어를 나타냅니다.

host data2-index {
  id -21   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item osd.4 weight 1.000
}
중요

논리 호스트 이름을 사용하는 경우 OSD 시작 스크립트가 시작 시 실제 호스트 이름을 사용하지 못하도록 다음 설정 중 하나가 Ceph 구성 파일에 있는지 확인합니다. 따라서 CRUSH 맵에서 데이터를 찾지 못합니다.

CRUSH 맵에서 앞의 예와 같이 논리 호스트 이름을 사용하는 경우 OSD 시작 스크립트가 초기화 시 실제 호스트 이름에 따라 호스트를 식별하지 못하도록 합니다. Ceph 구성 파일의 [global] 섹션에 다음 설정을 추가합니다.

osd_crush_update_on_start = false

논리적 호스트 이름을 정의하는 또 다른 방법은 Ceph 구성 파일의 [osd.<ID>] 섹션에 있는 각 OSD에 대한 CRUSH 맵의 위치를 정의하는 것입니다. OSD 시작 스크립트에서 정의하는 모든 위치를 재정의합니다. 앞서 언급한 예제에서 항목은 다음과 같을 수 있습니다.

[osd.0]
osd crush location = "host=data2-sas-ssd"

[osd.1]
osd crush location = "host=data2-sas-ssd"

[osd.2]
osd crush location = "host=data2-sas-ssd"

[osd.3]
osd crush location = "host=data2-sas-ssd"

[osd.4]
osd crush location = "host=data2-index"
중요

CRUSH 맵에서 실제 호스트 이름이 아닌 논리적 호스트 이름을 사용하는 경우 권장 접근법 중 하나가 사용되지 않는 경우, 재시작 시 Ceph Storage Cluster는 OSD가 실제 호스트 이름에 매핑되고 실제 호스트 이름은 CRUSH 맵에 표시되지 않으며 Ceph 스토리지 클러스터 클라이언트는 OSD와 해당 데이터를 찾지 못합니다.