3.6. Ceph 클라이언트 데이터 스트리핑
스토리지 장치에는 처리량 제한이 있으며 이는 성능 및 확장성에 영향을 미칩니다. 따라서 스토리지 시스템은 여러 스토리지 장치에 걸쳐 연속 정보를 스트라이핑하여 처리량과 성능을 향상시키는 경우가 많습니다. 가장 일반적인 형태의 데이터 스트라이핑은 RAID에서 가져온 것입니다. Ceph의 스트리핑과 가장 유사한 RAID 유형은 RAID 0 또는 'striped volume'입니다. Ceph의 스트라이핑은 n-way RAID 미러링의 신뢰성과 빠른 복구 방법인 RAID 0 스트라이핑의 처리량을 제공합니다.
Ceph는 Ceph 블록 장치, Ceph 파일 시스템 및 Ceph Object Storage의 세 가지 유형의 클라이언트를 제공합니다. Ceph Client는 해당 데이터를 블록 장치 이미지, RESTful 오브젝트, CephFS 파일 시스템 디렉터리와 같은 표현 형식에서 Ceph Storage 클러스터의 스토리지 오브젝트로 변환합니다.
Ceph Storage Cluster의 Ceph 저장소가 제거되지 않습니다. Ceph Object Storage, Ceph 블록 장치 및 Ceph Filesystem은 여러 Ceph Storage Cluster 오브젝트에 걸쳐 데이터를 스트라이프합니다. librados
를 사용하여 Ceph 스토리지 클러스터에 직접 쓰는 Ceph 클라이언트는 이러한 이점을 얻기 위해 스트립링 및 병렬 I/O를 수행해야 합니다.
가장 간단한 Ceph 스트리핑 형식에는 개체의 스트라이프 수가 1개 포함됩니다. Ceph Client는 개체가 최대 용량에 있을 때까지 Ceph Storage Cluster 오브젝트에 스트라이프 단위를 작성한 다음 추가 데이터 스트라이프를 위해 다른 오브젝트를 만듭니다. 가장 간단한 형태의 스트라이핑은 작은 블록 장치 이미지, S3 또는 Swift 오브젝트에 충분할 수 있습니다. 그러나 이 간단한 양식에서는 배치 그룹 간에 데이터를 배포할 수 있는 Ceph의 기능을 최대한 활용하지 않으므로 성능이 크게 향상되지 않습니다. 다음 다이어그램은 가장 간단한 스트라이핑 양식을 보여줍니다.

큰 이미지 크기, 큰 S3 또는 Swift 오브젝트를 예상하는 경우 오브젝트 세트 내의 여러 오브젝트에 대한 클라이언트 데이터를 제거하여 상당한 읽기/쓰기 성능 향상을 볼 수 있습니다. 클라이언트가 스트라이프 단위를 병렬로 해당 개체에 쓸 때 상당한 쓰기 성능이 발생합니다. 오브젝트는 다른 배치 그룹에 매핑되고 다른 OSD에 추가로 매핑되므로 각 쓰기 속도는 최대 쓰기 속도에서 병렬로 수행됩니다. 단일 디스크에 대한 쓰기는 검색당 6ms, 예를 들어 100MB/s와 같은 하나의 장치의 대역폭에 의해 헤드 이동에 의해 제한됩니다. Ceph는 다양한 배치 그룹과 OSD에 매핑되는 여러 오브젝트를 통해 쓰기를 분산하여 드라이브당 검색 수를 줄이고 여러 드라이브의 처리량을 결합하여 쓰기 또는 읽기 속도를 훨씬 빠르게 수행할 수 있습니다.
스트라이핑은 오브젝트 복제본과는 독립적입니다. CRUSH가 OSD에서 오브젝트를 복제하므로 스트라이프가 자동으로 복제됩니다.
다음 다이어그램에서 클라이언트 데이터는 4개의 오브젝트로 구성된 개체 집합(다음 다이어그램의 개체 세트
1)에 걸쳐 스트라이핑됩니다. 여기서 첫 번째 스트라이프 단위는 0 개체 0의 스트라이프 단위
이고, 네 번째 스트라이프 단위는 개체 3의
입니다. 스트라이프 단위 3
네 번째 스트라이프를 작성한 후 클라이언트는 개체 세트가 가득 찼는지 여부를 결정합니다. 개체 세트가 가득 차 있지 않으면 클라이언트가 첫 번째 개체에 다시 스트라이프 작성을 시작하고 다음 다이어그램에서
개체 0
을 참조하십시오. 개체 세트가 가득 차면 클라이언트는 새 개체 세트를 만들고 다음 다이어그램에서 오브젝트 세트 2
를 참조하며 다음 다이어그램에서 첫 번째 개체의 스트라이프 단위 16을 사용하여 첫 번째 스트라이프 단위로 쓰기를 시작합니다. 아래 다이어그램에서 4
를 참조하십시오.

Ceph 스트라이프 데이터 방법을 결정하는 세 가지 중요한 변수는 다음과 같습니다.
오브젝트 크기: Ceph Storage 클러스터의 개체에는 2MB 또는 4MB와 같은 최대 구성 가능한 크기가 있습니다. 개체 크기는 많은 스트라이프 단위를 수용할 수 있을 만큼 커야 하며 스트라이프 단위의 여러 개여야 합니다.
중요Red Hat은 안전한 16MB의 값을 권장합니다.
- 스트라이프 Width: 스트립 에는 구성 가능한 단위 크기(예: 64KB)가 있습니다. Ceph Client는 마지막 스트라이프 단위를 제외하고 개체에 쓰는 데이터를 동일한 크기의 스트라이프 단위로 나눕니다. 스트라이프 너비는 개체가 많은 스트라이프 단위를 포함할 수 있도록 오브젝트 크기의 일부여야 합니다.
- 스트라이프 수: Ceph Client는 스트라이프 수로 결정되는 일련의 오브젝트에 대한 스트라이프 단위 시퀀스를 작성합니다. 일련의 개체를 개체 집합이라고 합니다. Ceph Client가 오브젝트 세트의 마지막 오브젝트에 기록한 후 오브젝트 세트의 첫 번째 오브젝트로 돌아갑니다.
클러스터를 프로덕션 환경에 배치하기 전에 구성 스트립의 성능을 테스트합니다. 이러한 스트라이핑 매개 변수를 변경하고 데이터를 개체에 쓸 수 없습니다.
Ceph Client가 데이터를 스트라이프 단위에 제거하고 개체에 스트라이프 단위를 매핑하면 Ceph의 CRUSH 알고리즘은 개체를 배치 그룹에 매핑하고, 오브젝트가 스토리지 디스크에 파일로 저장되기 전에 배치 그룹을 Ceph OSD 데몬에 매핑합니다.
클라이언트는 단일 풀에 쓰기 때문에 개체에 스트립된 모든 데이터가 동일한 풀의 배치 그룹에 매핑됩니다. 따라서 동일한 CRUSH 맵과 동일한 액세스 제어를 사용합니다.