2.4. 장치 클래스

Ceph의 CRUSH 맵은 데이터 배치를 제어하는 데 특별한 유연성을 제공합니다. Ceph의 가장 큰 장점 중 하나입니다. 초기 Ceph 배포에서는 하드 디스크 드라이브를 거의 독점적으로 사용했습니다. 현재 Ceph 클러스터는 종종 HDD, SSD, NVMe 또는 다양한 클래스의 스토리지 장치와 함께 구축됩니다. 예를 들어 Ceph Object Gateway 배포에서는 클라이언트가 속도가 느린 HDD에 데이터를 저장할 수 있는 스토리지 정책 및 빠른 SSD에 데이터를 저장하기 위한 스토리지 정책을 사용하는 것이 일반적입니다. Ceph Object Gateway 배포에는 버킷 인덱스에 대한 빠른 SSD가 지원하는 풀이 있을 수 있습니다. 또한 OSD 노드에는 종종 CRUSH 맵에 표시되지 않는 저널 또는 쓰기 로그에만 사용되는 SSD가 있습니다. 이전에는 이러한 복잡한 하드웨어 시나리오에는 CRUSH 맵을 수동으로 편집해야 하므로 시간이 오래 걸리고 번거롭습니다. RHCS 3에서 Red Hat은 새로운 'device 클래스'를 추가하여 CRUSH 계층 생성을 크게 단순화합니다. RHCS 3 이상에서는 다른 스토리지 장치 클래스에 대해 서로 다른 CRUSH 계층을 사용할 필요가 없습니다.

CRUSH 규칙은 CRUSH 계층 구조 측면에서 작동합니다. 그러나 스토리지 장치의 다른 클래스가 동일한 호스트에 있는 경우 프로세스가 각 장치 클래스에 대해 여러 CRUSH 계층을 생성하기 위해 더 복잡해진 후 CRUSH 계층 구조 관리를 자동화하는 시작 옵션에서 osd crush 업데이트를 비활성화했습니다. 장치 클래스는 CRUSH 규칙에 사용할 장치 클래스를 지시하여 CRUSH 관리 작업을 크게 단순화하여 이러한 번거로움을 제거합니다.

참고

RHCS 3 이상에서는 ceph osd tree 명령에 장치 클래스를 반영하는 열이 있습니다.

다음 섹션에서는 장치 클래스 사용에 대해 자세히 설명합니다. 추가 예는 RHCS 3 및 later 및 CRUSH 스토리지 전략에서 다른 장치 클래스 사용을 참조하십시오.

2.4.1. 장치 클래스 설정

OSD의 장치 클래스를 설정하려면 다음을 실행합니다.

# ceph osd crush set-device-class <class> <osdId> [<osdId>...]

예:

# ceph osd crush set-device-class hdd osd.0 osd.1
# ceph osd crush set-device-class ssd osd.2 osd.3
# ceph osd crush set-device-class bucket-index osd.4
참고

Ceph에서 자동으로 클래스를 장치에 할당할 수 있습니다. 그러나 클래스 이름은 단순히 임의의 문자열입니다. hdd,ssd 또는 nvme 을 준수할 필요는 없습니다. foregoing 예에서 bucket-index 라는 장치 클래스는 Ceph Object Gatway 풀이 독점적 버킷 인덱스 워크로드를 사용한다는 SSD 장치를 나타낼 수 있습니다. 이미 설정된 장치 클래스를 변경하려면 ceph osd crush rm-device-class 를 먼저 사용합니다.

2.4.2. 장치 클래스 제거

OSD의 장치 클래스를 제거하려면 다음을 실행합니다.

# ceph osd crush rm-device-class <class> <osdId> [<osdId>...]

예:

# ceph osd crush rm-device-class hdd osd.0 osd.1
# ceph osd crush rm-device-class ssd osd.2 osd.3
# ceph osd crush rm-device-class bucket-index osd.4

2.4.3. 장치 클래스 이름 변경

해당 클래스를 사용하는 모든 OSD의 장치 클래스의 이름을 변경하려면 다음을 실행합니다.

# ceph osd crush class rename <oldName> <newName>

예:

# ceph osd crush class rename hdd sas15k

2.4.4. 장치 클래스 나열

CRUSH 맵의 장치 클래스를 나열하려면 다음을 실행합니다.

# ceph osd crush class ls

출력은 다음과 같습니다.

[
    "hdd",
    "ssd",
    "bucket-index"
]

2.4.5. 장치 클래스의 OSD 나열

특정 클래스에 속하는 모든 OSD를 나열하려면 다음을 실행합니다.

# ceph osd crush class ls-osd <class>

예:

# ceph osd crush class ls-osd hdd

출력은 단순히 OSD 번호 목록입니다. 예:

0
1
2
3
4
5
6

2.4.6. 클래스별 CRUSH 규칙 나열

동일한 클래스를 참조하는 모든 crush 규칙을 나열하려면 다음을 실행합니다.

# ceph osd crush rule ls-by-class <class>

예:

# ceph osd crush rule ls-by-class hdd