3.11. Ceph Object Gateway 데이터 레이아웃
RADOS는 확장 속성(xattrs
) 및 개체 맵(OMAP)을 사용하는 풀 및 개체에 대해서만 알고 있지만 개념적으로 Ceph Object Gateway는 데이터를 세 가지 다른 종류로 구성합니다.
- metadata
- 버킷 인덱스
- data
메타데이터
메타데이터의 세 가지 섹션이 있습니다.
-
사용자
: 사용자 정보를 보유하고 있습니다. -
bucket
: 버킷 이름과 버킷 인스턴스 ID 간의 매핑이 있습니다. -
bucket.instance
: 버킷 인스턴스 정보가 있습니다.
다음 명령을 사용하여 메타데이터 항목을 볼 수 있습니다.
구문
radosgw-admin metadata get bucket:BUCKET_NAME radosgw-admin metadata get bucket.instance:BUCKET:BUCKET_ID radosgw-admin metadata get user:USER radosgw-admin metadata set user:USER
예제
[root@host01 ~]# radosgw-admin metadata list [root@host01 ~]# radosgw-admin metadata list bucket [root@host01 ~]# radosgw-admin metadata list bucket.instance [root@host01 ~]# radosgw-admin metadata list user
모든 메타데이터 항목은 단일 RADOS 오브젝트에 유지됩니다.
Ceph Object Gateway 오브젝트는 여러 RADOS 오브젝트로 구성될 수 있습니다. 첫 번째는 매니페스트, ACL(액세스 제어 목록), 콘텐츠 유형, ETag 및 사용자 정의 메타데이터와 같은 메타데이터를 포함하는 헤드입니다. 메타데이터는 xattrs
에 저장됩니다. 헤드에는 효율성 및 원자성을 위해 최대 512KB의 개체 데이터를 포함할 수도 있습니다. 매니페스트는 RADOS 오브젝트에서 각 오브젝트가 어떻게 구성되는지를 설명합니다.
버킷 인덱스
이는 다른 종류의 메타데이터이며 별도로 유지됩니다. 버킷 인덱스에는 RADOS 오브젝트에 키-값 맵이 있습니다. 기본적으로 버킷당 단일 RADOS 오브젝트이지만 여러 RADOS 오브젝트에서 맵을 분할할 수 있습니다.
맵 자체는 각 RADOS 오브젝트와 관련된 OMAP에 보관됩니다. 각 OMAP의 키는 오브젝트의 이름이고, 값은 버킷을 나열할 때 표시되는 메타데이터인 해당 오브젝트의 몇 가지 기본 메타데이터를 보유합니다. 각 OMAP에는 헤더가 있으며, 오브젝트 수, 총 크기 등과 같은 일부 버킷 계정 메타데이터를 해당 헤더에 보관합니다.
OMAP는 확장 속성이 POSIX 파일과 연결된 방식과 유사한 방식으로 오브젝트와 관련된 키-값 저장소입니다. 오브젝트의 OMAP는 물리적으로 오브젝트의 스토리지에 위치하지 않지만, 정확한 구현에서는 Ceph Object Gateway에 표시되지 않고 비합리적입니다.
data
오브젝트 데이터는 각 Ceph Object Gateway 오브젝트마다 하나 이상의 RADOS 오브젝트에 보관됩니다.
3.11.1. 오브젝트 조회 경로
오브젝트에 액세스할 때 REST API는 다음 세 가지 매개변수를 사용하여 Ceph Object Gateway로 이동합니다.
- Swift에서 S3 또는 계정 이름에 액세스 키가 있는 계정 정보
- 버킷 또는 컨테이너 이름
- 오브젝트 이름 또는 키
현재 Ceph Object Gateway는 계정 정보만 사용하여 사용자 ID와 액세스 제어를 찾습니다. 버킷 이름과 오브젝트 키만 사용하여 풀의 오브젝트를 처리합니다.
계정 정보
Ceph Object Gateway의 사용자 ID는 문자열이며, 일반적으로 사용자 자격 증명의 실제 사용자 이름은 해시 또는 매핑된 식별자가 아닙니다.
사용자 데이터에 액세스할 때 사용자 레코드는 default.rgw.meta
풀의 USER_ID
오브젝트에서 users.uid
네임스페이스를 사용하여 로드됩니다.
버킷 이름
이는 root
네임스페이스가 있는 default.rgw.meta
풀에 표시됩니다. 버킷 ID 역할을 하는 마커를 가져오기 위해 버킷 레코드가 로드됩니다.
오브젝트 이름
오브젝트는 default.rgw.buckets.data
풀에 있습니다. 오브젝트 이름은 MARKER_KEY
(예: default.7593.4_image.png
)입니다. 여기서 마커는 default.7593.4
이고 키는 image.png
입니다. 이러한 연결된 이름은 구문 분석되지 않으며 RADOS로만 전달됩니다. 따라서 구분자 선택이 중요하지 않으며 모호함을 유발하지 않습니다. 동일한 이유로 키와 같은 오브젝트 이름에서 슬래시가 허용됩니다.
3.11.1.1. 다중 데이터 풀
기본적으로 다른 사용자의 버킷이 다른 RADOS 풀에서 생성되도록 여러 데이터 풀을 생성할 수 있으므로 필요한 스케일링을 제공할 수 있습니다. 이러한 풀의 레이아웃 및 이름 지정은 정책
설정으로 제어합니다.