엣지 가이드


Red Hat Ceph Storage 8

Guide on Edge Clusters for Red Hat Ceph Storage

Red Hat Ceph Storage Documentation Team

초록

이 문서에서는 비용 효율적인 오브젝트 스토리지 구성을 위한 솔루션인 에지 클러스터에 대한 정보를 제공합니다.
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 향후 여러 릴리스에 대해 단계적으로 구현될 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지에서 참조하십시오.

1장. 엣지 클러스터

엣지 클러스터는 비용 효율적인 오브젝트 스토리지 구성을 위한 솔루션입니다.

Red Hat은 다음과 같은 Red Hat Ceph Storage 클러스터의 최소 구성을 지원합니다.

  • SSD에 두 개의 복제본이 있는 노드 클러스터 3개
  • HDD에 대한 복제본이 3개인 4-노드 클러스터입니다.
  • EC 풀이 2+2인 4노드 클러스터입니다.
  • 8+6 CRUSH MSR 구성이 있는 4 노드 클러스터

더 작은 클러스터를 사용하면 사용량의 양과 복원력이 손실되어 사용률이 감소합니다.

2장. 풀 개요

Ceph 클라이언트는 데이터를 풀에 저장합니다. 풀을 생성할 때 클라이언트가 데이터를 저장할 I/O 인터페이스를 생성합니다.

Ceph 클라이언트, 즉 블록 장치, 게이트웨이 및 나머지 관점에서 Ceph 스토리지 클러스터와 상호 작용하는 것은 매우 간단합니다.

  • 클러스터 처리 생성.
  • 클러스터 처리를 클러스터에 연결합니다.
  • 오브젝트 및 확장된 속성을 읽고 쓰기 위한 I/O 컨텍스트를 생성합니다.

클러스터 처리 생성 및 클러스터에 연결

Ceph 스토리지 클러스터에 연결하려면 Ceph 클라이언트에 다음 세부 정보가 필요합니다.

  • 클러스터 이름(기본적으로 Ceph) - 모호한 것처럼 표시하므로 일반적으로 사용하지 않습니다.
  • 초기 모니터 주소입니다.

Ceph 클라이언트는 일반적으로 Ceph 구성 파일의 기본 경로를 사용하여 이러한 매개 변수를 검색한 다음 파일에서 읽습니다. 그러나 사용자는 명령줄에서 매개 변수도 지정할 수 있습니다. Ceph 클라이언트는 또한 사용자 이름과 시크릿 키를 제공하며, 인증은 기본적으로 on 입니다. 그런 다음 클라이언트는 Ceph 모니터 클러스터에 연결하여 모니터, OSD 및 풀을 포함하여 최근 클러스터 맵 복사본을 검색합니다.

Handle 생성

풀 I/O 컨텍스트 생성

Ceph 클라이언트는 데이터를 읽고 쓰기 위해 Ceph 스토리지 클러스터의 특정 풀에 대한 I/O 컨텍스트를 생성합니다. 지정된 사용자에게 풀에 대한 권한이 있는 경우 Ceph 클라이언트는 지정된 풀에서 읽고 쓸 수 있습니다.

I/O 컨텍스트

Ceph의 아키텍처를 사용하면 스토리지 클러스터에서 Ceph 클라이언트에 이러한 간단한 인터페이스를 제공할 수 있으므로 풀 이름을 지정하고 I/O 컨텍스트를 생성하여 클라이언트가 간단히 정의한 정교한 스토리지 전략 중 하나를 선택할 수 있습니다. 스토리지 전략은 Ceph 클라이언트에는 모든 용량 및 성능을 볼 수 없습니다. 마찬가지로 오브젝트를 블록 장치 표현에 매핑하거나 S3/Swift RESTful 서비스를 제공하는 등 Ceph 클라이언트의 복잡성은 Ceph 스토리지 클러스터에 표시되지 않습니다.

풀은 복원력, 배치 그룹, CRUSH 규칙 및 할당량을 제공합니다.

  • 복원력: 데이터 손실 없이 실패할 수 있는 OSD 수를 설정할 수 있습니다. 복제된 풀의 경우 오브젝트의 복사본 또는 복제본 수를 원하는 수입니다. 일반적인 구성은 오브젝트와 하나의 추가 복사본, 즉 size = 2 를 저장하지만 복사본 또는 복제본 수를 확인할 수 있습니다. 코딩된 풀의 경우 이 풀은 코딩 청크 수이며 삭제 코드 프로파일m=2 입니다.
  • 배치 그룹: 풀의 배치 그룹 수를 설정할 수 있습니다. 일반적인 구성은 OSD당 약 50~100개의 배치 그룹을 사용하여 컴퓨팅 리소스를 너무 많이 사용하지 않고도 최적의 균형을 유지합니다. 여러 풀을 설정할 때는 풀과 클러스터 전체에 대해 적절한 수의 배치 그룹을 설정해야 합니다.
  • CRUSH 규칙: 풀에 데이터를 저장할 때 풀에 매핑된 CRUSH 규칙을 사용하면 CRUSH에서 각 개체와 해당 복제본의 배치 규칙 또는 클러스터에서 코딩된 풀 삭제에 대한 청크를 식별할 수 있습니다. 풀에 대한 사용자 지정 CRUSH 규칙을 생성할 수 있습니다.
  • 할당량: ceph osd pool set-quota 명령을 사용하여 풀에 할당량을 설정하면 최대 오브젝트 수 또는 지정된 풀에 저장된 최대 바이트 수를 제한할 수 있습니다.

3장. 복원력이 뛰어나고 재충전되지 않은 데이터 풀

복원력이 있는 풀과 무관한 풀이란 무엇입니까?

탄력적 데이터 풀을 사용하면 데이터를 복제하거나 인코딩할 수 있습니다.

수신자가 아닌 데이터 풀에서는 데이터를 복제하거나 인코딩할 수 없습니다.

복구되지 않은 풀은 replica1 이라고도 하며 데이터 손실로부터 보호되지 않습니다. 내결함성이 없는 데이터 풀이 있는 소규모 클러스터에서는 자체 복제를 수행하고 자체 복제와 마찬가지로 Red Hat Ceph Storage의 복제가 필요하지 않습니다.

데이터 풀이 있는 클러스터 사용률

구성이 작으면 복원력이 손실되어 클러스터 사용률이 줄어듭니다. 복구는 호스트 사용률에 따라 제한되며 초당 production input/output 작업에 영향을 미칠 수 있습니다. 단일 장애 노드가 있는 경우 세 번째 노드를 추가하여 호스트 사용률을 제한하고 Red Hat Ceph Storage가 전체 복제로 복구되도록 할 수 있습니다.

4장. Ceph 삭제 코딩

Ceph는 많은 삭제 코드 알고리즘 중 하나를 로드할 수 있습니다. 가장 빠르고 일반적으로 사용되는 것은 Reed-Solomon 알고리즘입니다. 삭제 코드는 실제로 FEC(전방향 오류 수정) 코드입니다. FEC 코드는 K 청크의 메시지를 N 청크의 '코드 단어'라는 긴 메시지로 변환하여 Ceph가 N 청크의 하위 집합에서 원래 메시지를 복구할 수 있습니다.

특히, 변수 K 가 데이터 청크의 원래 양인 N = K+M 입니다. 변수 M 은 삭제 코드 알고리즘이 실패로부터 보호하기 위해 추가하는 추가 또는 중복 청크를 나타냅니다. 변수 N 은 삭제 코딩 프로세스 후에 생성된 총 청크 수입니다. M 값은 간단히 N- K 이므로 알고리즘이 K 원래 데이터 청크에서 N-K 중복 청크를 계산합니다. 이 접근 방식을 통해 Ceph는 모든 원본 데이터에 액세스할 수 있습니다. 시스템은 임의의 N-K 오류에 탄력적입니다. 예를 들어, 10 K 의 16 N 구성 또는 삭제 코딩 10/16 에서 삭제 코드 알고리즘은 10 기본 청크 K 에 6 개의 추가 청크를 추가합니다. 예를 들어 M = K-N 또는 16-10 = 6 구성에서 Ceph는 16 OSD에 16 청크 N 을 분배합니다. Red Hat Ceph Storage 클러스터가 데이터를 손실하지 않도록 하는 6개의 OSD가 실패하는 경우에도 10개의 확인된 N 청크에서 원본 파일을 재구성할 수 있으므로 내결함성이 매우 높습니다.

복제 풀과 마찬가지로 삭제 코드 풀의 기본 OSD는 모든 쓰기 작업을 수신합니다. 복제 풀에서 Ceph는 세트의 보조 OSD의 배치 그룹에 있는 각 오브젝트의 깊은 복사본을 만듭니다. 삭제 코딩의 경우 프로세스는 약간 다릅니다. 삭제 코딩 풀은 각 오브젝트를 K+M 청크로 저장합니다. K 데이터 청크와 M 코딩 청크로 나뉩니다. Ceph가 작동 중인 세트의 OSD에 각 청크를 저장할 수 있도록 풀은 크기가 K+M 으로 구성됩니다. Ceph는 청크의 순위를 오브젝트의 속성으로 저장합니다. 기본 OSD는 페이로드를 K+M 청크로 인코딩하여 다른 OSD로 전송합니다. 기본 OSD는 배치 그룹 로그의 권한 있는 버전을 유지 관리해야 합니다.

예를 들어 일반적인 구성에서 시스템 관리자는 6개의 OSD를 사용하고 두 개의 OSD를 유지하기 위해 삭제 코딩 풀을 생성합니다. 즉 (K+M =6) 이러한 (M = 2)입니다.

Ceph가 Cryostat DEFHIJKL 을 포함하는 개체를 풀에 쓸 때, 삭제 인코딩 알고리즘은 단순히 content를 네 부분으로 나누어서 4개의 데이터 청크로 분할합니다. 즉,DEF, DEF , JKL. 블록 길이가 K 의 배수가 아닌 경우 알고리즘은 콘텐츠를 패딩합니다. 이 함수는 또한 두 개의 코딩 청크를 생성합니다: YXY 를 사용한 다섯 번째와 QGC 의 여섯 번째. Ceph는 작동 세트의 OSD에 각 청크를 저장합니다. 여기서 이름이 같은 오브젝트인 object에 청크를 저장하지만 다른 OSD에 있습니다. 알고리즘은 청크를 생성한 순서와 shard_t의 이름 외에도 오브젝트 shard_t 의 특성으로 유지해야 합니다. 예를 들어 Chunk 1에는 Cryostat 및 Ceph가 OSD5 에 저장되어 있고 청크 5에는 YXY 가 포함되어 있고 Ceph가 OSD4 에 저장되어 있습니다.

코드 삭제 IO

복구 시나리오에서 클라이언트는 삭제 코딩된 풀에서 청크 1 에서 6까지의 오브젝트를 읽으려고 합니다. OSD는 청크 2 및 6이 누락되었음을 알고리즘에 알립니다. 이러한 누락된 청크를 'erasures'라고 합니다. 예를 들어 OSD6 이 사용 중이므로 기본 OSD에서 청크 6을 읽을 수 없으며 OSD2 가 가장 느리고 청크를 고려하지 않았기 때문에 청크 2를 읽을 수 없었습니다. 그러나 알고리즘에 4개의 청크가 있는 즉시 4개의 청크를 읽습니다. 즉, Cryostat를 포함하는 청크 1, Cryostat I 를 포함하는 청크 3, JKL 을 포함하는 청크 4, YXY 가 포함된 청크 5. 그런 다음 object Cryostat DEFGHIJKL 의 원본 내용과 QGC 가 포함된 청크 6의 원본 콘텐츠를 다시 빌드합니다.

데이터를 청크로 분할하는 것은 오브젝트 배치와 독립적입니다. CRUSH 규칙 세트는 erasure-coded pool 프로파일과 함께 OSD에서 청크 배치를 결정합니다. 예를 들어 삭제 코드 프로파일에서 로컬 복구 가능한 코드(lrc) 플러그인을 사용하면 추가 청크가 생성되고 복구하기 위해 OSD 수가 줄어듭니다. 예를 들어 lrc 프로파일 구성 K=4 M=2 L=3 에서 알고리즘은 jerasure 플러그인과 마찬가지로 6개의 청크(K+M)를 생성하지만, 지역성 값(L=3)은 알고리즘이 2개의 청크를 로컬에서 생성해야 합니다. 알고리즘은 (K+M)/L 과 같은 추가 청크를 생성합니다. 청크 0이 포함된 OSD가 실패하면 청크 1, 2 및 첫 번째 로컬 청크를 사용하여 이 청크를 복구할 수 있습니다. 이 경우 알고리즘은 5 대신 복구용 청크 3개만 필요합니다.

참고

삭제 코딩된 풀을 사용하면 오브젝트 맵이 비활성화됩니다.

중요

삭제 코드 풀의 경우 2+2 구성의 입력 문자열을 Cryostat DEFGHIJKL 에서 Cryostat DEF 로 교체하고 4 에서 2 로 코딩 청크를 교체합니다.

MSR은 "Multi-Step Retry (MSR)"의 약어입니다. Ceph 클러스터의 CRUSH 규칙으로, 스토리지 장치에 데이터가 분산된 방법을 정의하여 효율적인 데이터 검색, 분산 및 내결함성을 보장합니다.

추가 리소스

5장. 코드 풀 삭제 개요

Ceph는 기본적으로 복제된 풀을 사용하므로 Ceph는 기본 OSD 노드에서 하나 이상의 보조 OSD로 모든 오브젝트를 복사합니다. 삭제 코딩 풀은 데이터 지속성을 보장하는 데 필요한 디스크 공간을 줄일 수 있지만 복제보다 비용이 약간 더 많이 듭니다.

Ceph 스토리지 전략에는 데이터 지속성 요구 사항을 정의하는 작업이 포함됩니다. 데이터 지속성은 데이터 손실 없이 하나 이상의 OSD의 손실을 유지할 수 있는 기능을 의미합니다.

Ceph는 데이터를 풀에 저장하고 다음 두 가지 유형의 풀이 있습니다.

  • 복제됨
  • erasure-coded

삭제 코딩은 Ceph 스토리지 클러스터에 오브젝트를 저장하는 방법으로, 삭제 코드 알고리즘이 오브젝트를k(데이터 청크) 및 코딩 청크(m)로 분할하고 이러한 청크를 다른 OSD에 저장하는 방법입니다.

OSD가 실패하는 경우 Ceph는 다른 OSD에서 나머지 데이터(k) 및 코딩(m) 청크를 검색하고 삭제 코드 알고리즘은 해당 청크에서 오브젝트를 복원합니다.

참고

Red Hat은 쓰기 및 데이터 손실을 방지하기 위해 삭제 코드 풀의 min_sizeK+1 이상을 권장합니다.

삭제 코딩은 복제보다 스토리지 용량을 더 효율적으로 사용합니다. n-replication 접근 방식은 오브젝트의 n 복사본(기본적으로 Ceph에서 3x)을 유지 관리하지만 삭제 코딩은 k + m 청크만 유지합니다. 예를 들어 3 데이터 및 2 코딩 청크는 원래 오브젝트의 저장 공간 1.5x를 사용합니다.

삭제 코딩은 복제보다 스토리지 오버헤드가 적지만 삭제 코드 알고리즘은 개체에 액세스하거나 복구할 때 복제보다 더 많은 RAM과 CPU를 사용합니다. 삭제 코딩은 데이터 스토리지가 지속성 및 내결함성이어야 하지만 빠른 읽기 성능(예: 콜드 스토리지, 기록 레코드 등)이 필요하지 않은 경우 유용합니다.

Ceph에서 코드를 지우는 방법에 대한 수치적이고 자세한 설명은 Red Hat Ceph Storage 8 아키텍처 가이드Ceph Erasure Coding 섹션을 참조하십시오.

Ceph는 k=2m=2 로 클러스터를 초기화할 때 기본 삭제 코드 프로필을 생성합니다. 즉, Ceph에서 오브젝트 데이터를 3개의 OSD(k+m == 4)에 분배하고 Ceph는 데이터 손실 없이 OSD 중 하나를 손실할 수 있습니다. 삭제 코드 프로파일링에 대한 자세한 내용은 Erasure Code Profiles 섹션을 참조하십시오.

중요

.rgw.buckets 풀만 erasure-coded 및 기타 모든 Ceph Object Gateway 풀만 복제된 것으로 구성하십시오. 그렇지 않으면 다음 오류와 함께 새 버킷을 생성하려는 시도가 실패합니다.

set_req_state_err err_no=95 resorting to 500

그 이유는 Desure-coded 풀이 omap 작업을 지원하지 않기 때문에 특정 Ceph Object Gateway 메타데이터 풀에는 omap 지원이 필요하기 때문입니다.

5.1. 샘플 삭제 코드 풀 생성

삭제 코딩 풀을 생성하고 배치 그룹을 지정합니다. 다른 프로필을 지정하지 않는 한 ceph osd pool create 명령은 기본 프로필로 erasure-coded 풀을 생성합니다. 프로필은 두 개의 매개 변수 km 을 설정하여 데이터 중복성을 정의합니다. 이러한 매개변수는 데이터 조각이 분할되고 코딩 청크 수가 생성되는 청크 수를 정의합니다.

가장 간단한 삭제 코딩 풀은 RAID5와 동일하며 최소 4개의 호스트가 필요합니다. 2+2 프로필을 사용하여 삭제 코드 풀을 생성할 수 있습니다.

프로세스

  1. 2+2 구성이 있는 4개의 노드에서 삭제 코딩된 풀에 대해 다음 구성을 설정합니다.

    구문

    ceph config set mon mon_osd_down_out_subtree_limit host
    ceph config set osd osd_async_recovery_min_cost 1099511627776

    중요

    이는 일반적으로 삭제 코딩된 풀에는 필요하지 않습니다.

    중요

    비동기 복구 비용은 복제본의 뒤에 있는 PG 로그 항목 수와 누락된 오브젝트 수입니다. osd_target_pg_log_entries_per_osd30000 입니다. 따라서 하나의 PG가 있는 OSD에는 30000 개의 항목이 있을 수 있습니다. osd_async_recovery_min_cost 는 64비트 정수이므로 2+2 구성이 있는 EC 풀의 경우 osd_async_recovery_min_cost 값을 1099511627776 으로 설정합니다.

    참고

    4개의 노드가 있는 EC 클러스터의 경우 K+M 값은 2+2입니다. 노드가 완전히 실패하면 4개의 청크로 복구되지 않으며 3개의 노드만 사용할 수 있습니다. 호스트 다운 시나리오에서 mon_osd_down_out_subtree_limit 값을 host로 설정하면 OSD가 표시되지 않으므로 데이터가 재조정되지 않고 노드가 다시 가동될 때까지 대기합니다.

  2. 2+2 구성을 사용하는 삭제 코드 풀의 경우 프로필을 설정합니다.

    구문

    ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host

    [ceph: root@host01 /]# ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host
    
    Pool : ceph osd pool create test-ec-22 erasure ec22

  3. erasure-coded 풀을 생성합니다.

    [ceph: root@host01 /]# ceph osd pool create ecpool 32 32 erasure
    
    pool 'ecpool' created
    $ echo ABCDEFGHI | rados --pool ecpool put NYAN -
    $ rados --pool ecpool get NYAN -
    ABCDEFGHI

    32는 배치 그룹의 수입니다.

6장. 백엔드 압축

압축 옵션을 사용하여 더 작은 용량의 에지 클러스터를 압축합니다.

BlueStore는 두 가지 유형의 압축을 허용합니다.

  • 일반 워크로드에 대한 BlueStore 압축 수준입니다.
  • S3 워크로드에 대한 Ceph Object Gateway 압축 수준입니다.

압축 알고리즘에 대한 자세한 내용은 풀 값을 참조하십시오.

압축을 활성화하고 풀에서 압축을 활성화할 때 클러스터에서 충돌이 발생하지 않도록 해야 합니다.

다음과 같은 방법으로 엣지 클러스터 풀에서 압축을 활성화할 수 있습니다.

  • snappy, zlib 및 zstd와 같은 지원되는 압축 알고리즘을 활성화하고 다음 명령을 사용하여 None,passive,aggressiveforce 와 같은 지원되는 압축 모드를 활성화합니다.

    구문

    ceph osd pool set POOL_NAME compression_algorithm ALGORITHM
    ceph osd pool set POOL_NAME compression_mode MODE

  • 다음 명령을 사용하여 다양한 압축 비율을 활성화합니다.

    구문

    ceph osd pool set POOL_NAME compression_required_ratio RATIO
    ceph osd pool set POOL_NAME compression_min_blob_size SIZE
    ceph osd pool set POOL_NAME compression_max_blob_size SIZE

  • 세 개의 풀을 생성하고 해당 풀에서 다른 압축을 활성화하여 풀에서 IO stoppage가 발생하지 않도록 합니다.
  • 풀에서 압축이 생성되지 않은 네 번째 풀을 만듭니다. 압축이 있는 풀과 동일한 양의 데이터를 작성합니다. 압축 풀은 압축하지 않은 풀에 더 적은 RAW 공간을 사용합니다.

이러한 알고리즘이 설정되었는지 확인하려면 ceph osd pool get POOL_NAME OPTION_NAME 명령을 사용합니다.

이러한 알고리즘을 설정 해제하려면 적절한 옵션과 함께 ceph osd pool unset POOL_NAME OPTION_NAME 명령을 사용합니다.

7장. 클러스터 토폴로지 및 공동 배치

필요한 토폴로지와 에지 클러스터의 배치에 대해 고려해야 할 요소를 파악합니다.

클러스터 토폴로지, OpenStack과의 하이퍼 통합, OpenStack에서 노드 배치 및 OpenStack 최소 구성의 제한에 대한 자세한 내용은 HCI의 Ceph 구성 덮어쓰기를 참조하십시오.

colocation에 대한 자세한 내용은 Colocation 을 참조하십시오.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.