2.4. 장치 클래스
Ceph의 CRUSH 맵은 데이터 배치를 제어할 수 있는 유연성을 제공합니다. 이는 Ceph의 가장 큰 강점 중 하나입니다. 초기 Ceph 배포에서는 하드 디스크 드라이브를 거의 독점적으로 사용했습니다. 현재 Ceph 클러스터는 HDD, SSD, NVMe 또는 다양한 클래스의 다양한 클래스와 같은 여러 유형의 스토리지 장치로 자주 빌드됩니다. 예를 들어 Ceph Object Gateway 배포에서 클라이언트가 느린 HDD에 데이터를 저장할 수 있는 스토리지 정책과 빠른 SSD에 데이터를 저장하기 위한 기타 스토리지 정책을 사용하는 것이 일반적입니다. Ceph Object Gateway 배포에는 버킷 인덱스에 대해 fast SSD에서 지원하는 풀이 있을 수 있습니다. 또한 OSD 노드에는 CRUSH 맵에 표시되지 않는 저널 또는 쓰기 로그에만 사용되는 SSD가 자주 있습니다. 이러한 복잡한 하드웨어 시나리오에서는 CRUSH 맵을 수동으로 편집해야 하는데, 이는 시간이 오래 걸리며 번거로울 수 있습니다. 스토리지 장치의 다른 클래스에 대해 다른 CRUSH 계층 구조가 있을 필요는 없습니다.
CRUSH 규칙은 CRUSH 계층 구조에서 작동합니다. 그러나 스토리지 장치의 다른 클래스가 동일한 호스트에 있는 경우 프로세스는 각 장치 클래스에 대해 여러 CRUSH 계층 구조를 생성하는 사용자가 더 복잡해지고 CRUSH 계층 구조 관리를 자동화하는 start 옵션에서 osd crush 업데이트를 비활성화해야 합니다. 장치 클래스는 CRUSH 규칙에 사용할 장치 클래스를 알려주고 CRUSH 관리 작업을 크게 단순화하여 이러한 번거로움을 제거합니다.
ceph osd tree 명령에는 장치 클래스를 반영하는 열이 있습니다.
2.4.1. 장치 클래스 설정 링크 복사링크가 클립보드에 복사되었습니다!
OSD의 장치 클래스를 설정하려면 다음을 실행합니다.
구문
ceph osd crush set-device-class CLASS OSD_ID [OSD_ID..]
ceph osd crush set-device-class CLASS OSD_ID [OSD_ID..]
예제
[ceph: root@host01 /]# ceph osd crush set-device-class hdd osd.0 osd.1 [ceph: root@host01 /]# ceph osd crush set-device-class ssd osd.2 osd.3 [ceph: root@host01 /]# ceph osd crush set-device-class bucket-index osd.4
[ceph: root@host01 /]# ceph osd crush set-device-class hdd osd.0 osd.1
[ceph: root@host01 /]# ceph osd crush set-device-class ssd osd.2 osd.3
[ceph: root@host01 /]# ceph osd crush set-device-class bucket-index osd.4
Ceph는 장치에 클래스를 자동으로 할당할 수 있습니다. 그러나 클래스 이름은 단순히 임의의 문자열입니다. hdd,ssd 또는 nvme 를 준수할 필요가 없습니다. 위 예제에서 bucket-index 라는 장치 클래스는 Ceph Object Gateway 풀에서 버킷 인덱스 워크로드를 독점적으로 사용하는 SSD 장치를 나타낼 수 있습니다. 이미 설정된 장치 클래스를 변경하려면 ceph osd crush rm-device-class 를 먼저 사용합니다.
2.4.2. 장치 클래스 제거 링크 복사링크가 클립보드에 복사되었습니다!
OSD의 장치 클래스를 제거하려면 다음을 실행합니다.
구문
ceph osd crush rm-device-class CLASS OSD_ID [OSD_ID..]
ceph osd crush rm-device-class CLASS OSD_ID [OSD_ID..]
예제
[ceph: root@host01 /]# ceph osd crush rm-device-class hdd osd.0 osd.1 [ceph: root@host01 /]# ceph osd crush rm-device-class ssd osd.2 osd.3 [ceph: root@host01 /]# ceph osd crush rm-device-class bucket-index osd.4
[ceph: root@host01 /]# ceph osd crush rm-device-class hdd osd.0 osd.1
[ceph: root@host01 /]# ceph osd crush rm-device-class ssd osd.2 osd.3
[ceph: root@host01 /]# ceph osd crush rm-device-class bucket-index osd.4
2.4.3. 장치 클래스 이름 변경 링크 복사링크가 클립보드에 복사되었습니다!
해당 클래스를 사용하는 모든 OSD의 장치 클래스 이름을 변경하려면 다음을 실행합니다.
구문
ceph osd crush class rename OLD_NAME NEW_NAME
ceph osd crush class rename OLD_NAME NEW_NAME
예제
[ceph: root@host01 /]# ceph osd crush class rename hdd sas15k
[ceph: root@host01 /]# 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: root@host01 /]# ceph osd crush class ls-osd hdd
[ceph: root@host01 /]# ceph osd crush class ls-osd hdd
출력은 OSD 번호 목록일 뿐입니다. 예를 들면 다음과 같습니다.
2.4.6. 클래스별 CRUSH 규칙 나열 링크 복사링크가 클립보드에 복사되었습니다!
동일한 클래스를 참조하는 모든 CRUSH 규칙을 나열하려면 다음을 실행합니다.
구문
ceph osd crush rule ls-by-class CLASS
ceph osd crush rule ls-by-class CLASS
예제
[ceph: root@host01 /]# ceph osd crush rule ls-by-class hdd
[ceph: root@host01 /]# ceph osd crush rule ls-by-class hdd