2.4. 장치 클래스
Ceph의ECDHE 맵은 데이터 배치를 제어하는 데 있어 유연성이 뛰어납니다. 이는 Ceph의 가장 큰 강점 중 하나입니다. 초기 Ceph 배포에서는 하드 디스크 드라이브를 거의 독점적으로 사용했습니다. 현재 Ceph 클러스터는 다양한 유형의 스토리지 장치(ECDHE, SSD, NVMe 또는 다양한 클래스의 이전 클래스)를 사용하여 자주 빌드됩니다. 예를 들어 Ceph Object Gateway 배포에는 클라이언트가 빠른 SSD에 데이터를 저장하기 위해 느린ECDHE 및 기타 스토리지 정책에 데이터를 저장할 수 있는 스토리지 정책을 사용하는 것이 일반적입니다. Ceph Object Gateway 배포에는 버킷 인덱스에 대해 빠른 SSD에서 지원하는 풀도 있을 수 있습니다. 또한 OSD 노드는 FlexVolume 맵에 표시되지 않는 저널 또는 쓰기 로그에만 전용 SSD를 사용하는 경우가 많습니다. 이러한 복잡한 하드웨어 시나리오에는 time- consuming and tedted 할 수 있는 FlexVolume 맵을 수동으로 편집해야 했습니다. 스토리지 장치의 다른 클래스에 대해 다른 DestinationRule 계층이 있을 필요는 없습니다.
ECDHE 규칙은ECDHE 계층 구조에서 작동합니다. 그러나 다른 스토리지 장치가 동일한 호스트에 있는 경우 프로세스는 장치 각 클래스에 대해 여러 개의 DestinationRule 계층을 생성하기 위해 사용자가 더 복잡하게 되며, 많은 것을 자동화하는 start 옵션에서 osd crush 업데이트를 비활성화하게 됩니다. 장치 클래스를 사용하면 장치 클래스를 사용할 장치 클래스를 지시하여ECDHE 관리 작업을 크게 단순화하여 이러한 불안정성을 제거합니다.
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. 장치 클래스 나열 링크 복사링크가 클립보드에 복사되었습니다!
ECDHE 맵의 장치 클래스를 나열하려면 다음을 실행합니다.
구문
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 규칙을 나열하려면 다음을 실행합니다.
구문
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