2.4. 장치 클래스
Ceph의 CRUSH 맵은 데이터 배치를 제어하는 데 뛰어난 유연성을 제공합니다. 이는 Ceph의 가장 큰 강점 중 하나입니다. 이전의 Ceph 배포에서는 하드 디스크 드라이브를 거의 독점적으로 사용했습니다. 현재 Ceph 클러스터는 HDD, SSD, NVMe 또는 다양한 종류의 스토리지 장치로 자주 빌드됩니다. 예를 들어, Ceph Object Gateway 배포에서는 클라이언트가 느린 HDD 및 빠른 SSD에 데이터를 저장하기 위한 기타 스토리지 정책에 대한 스토리지 정책을 사용하는 것이 일반적입니다. Ceph Object Gateway 배포에는 버킷 인덱스에 대해 빠른 SSD에서 지원하는 풀이 있을 수 있습니다. 또한 OSD 노드에는 CRUSH 맵에 표시되지 않는 저널 또는 write-ahead 로그에만 사용되는 SSD도 자주 있습니다. 이러한 복잡한 하드웨어 시나리오는 이전에 CRUSH 맵을 수동으로 편집해야 했으며 시간이 오래 걸릴 수 있습니다. 스토리지 장치 클래스마다 다른 CRUSH 계층 구조가 있을 필요는 없습니다.
CRUSH 규칙은 CRUSH 계층 구조 측면에서 작동합니다. 그러나 다른 스토리지 장치 클래스가 동일한 호스트에 있으면 프로세스는 각 장치 클래스에 대해 여러 CRUSH 계층 구조를 만드는 사용자가 더 복잡해지며 CRUSH 계층 관리 작업을 대부분 자동화하는 시작 옵션에서 osd crush 업데이트를
비활성화합니다. 장치 클래스는 사용할 장치 클래스가 어떤 장치 클래스를 크게 단순화하여 CRUSH 관리 작업을 크게 단순화함으로써 이러한 번거 로움을 제거합니다.
ceph osd tree
명령에는 장치 클래스를 반영하는 열이 있습니다.
다음 섹션에서는 장치 클래스 사용에 대해 자세히 설명합니다. 추가 예제 는 다른 장치 클래스 및 CRUSH 스토리지 전략 사용을 참조하십시오.
2.4.1. 장치 클래스 설정
OSD의 장치 클래스를 설정하려면 다음을 실행합니다.
ceph osd crush set-device-class <class> <osdId> [<osdId>...]
# 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 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 Gateway 풀이 버킷 인덱스 워크로드를 독점적으로 사용한다는 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 <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
# 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 <oldName> <newName>
예를 들어 다음과 같습니다.
ceph osd crush class rename hdd sas15k
# ceph osd crush class rename hdd sas15k
2.4.4. 장치 클래스 나열
CRUSH 맵의 장치 클래스를 나열하려면 다음을 실행합니다.
ceph osd crush class ls
# ceph osd crush class ls
출력은 다음과 같이 표시됩니다.
[ "hdd", "ssd", "bucket-index" ]
[
"hdd",
"ssd",
"bucket-index"
]
2.4.5. 장치 클래스의 OSD 나열
특정 클래스에 속하는 모든 OSD를 나열하려면 다음을 실행합니다.
ceph osd crush class ls-osd <class>
# ceph osd crush class ls-osd <class>
예를 들어 다음과 같습니다.
ceph osd crush class ls-osd hdd
# ceph osd crush class ls-osd hdd
출력은 간단히 OSD 번호 목록입니다. 예를 들어 다음과 같습니다.
0 1 2 3 4 5 6
0
1
2
3
4
5
6
2.4.6. 클래스별 CRUSH 규칙 나열
동일한 클래스를 참조하는 모든 크러쉬 규칙을 나열하려면 다음을 실행합니다.
ceph osd crush rule ls-by-class <class>
# ceph osd crush rule ls-by-class <class>
예를 들어 다음과 같습니다.
ceph osd crush rule ls-by-class hdd
# ceph osd crush rule ls-by-class hdd