13장. 인스턴스에 영구 메모리를 제공하도록 NVDIMM 컴퓨팅 노드 구성

비발성 듀얼 인라인 메모리 모듈(NVDIMM)은 DRAM에 PMEM(영구 메모리)을 제공하는 기술입니다. 표준 컴퓨터 메모리는 전기 전력 손실 후 데이터를 손실합니다. NVDIMM은 전기 전력 손실 후에도 데이터를 유지 관리합니다. PMEM을 사용하는 인스턴스는 전원 주기 동안 애플리케이션 데이터를 유지하는 대규모 연속 메모리 세그먼트를 로드할 수 있는 기능을 애플리케이션에 제공할 수 있습니다. 이 기능은 대량의 메모리를 요청하는 HPC(고성능 컴퓨팅)에 유용합니다.

클라우드 관리자는 NVDIMM 하드웨어가 있는 컴퓨팅 노드에서 PMEM 네임스페이스를 생성하고 구성하여 가상 PMEM(vPMEM)으로 인스턴스에서 PMEM을 사용할 수 있습니다. 그런 다음 클라우드 사용자는 종료 후 인스턴스 콘텐츠를 유지해야 할 때 vPMEM을 요청하는 인스턴스를 생성할 수 있습니다.

클라우드 사용자가 PMEM을 사용하는 인스턴스를 생성할 수 있도록 하려면 다음 절차를 완료해야 합니다.

  1. PMEM을 위한 컴퓨팅 노드 지정.
  2. NVDIMM 하드웨어가 있는 PMEM의 컴퓨팅 노드를 구성합니다.
  3. Overcloud를 배포합니다.
  4. vPMEM이 있는 인스턴스를 시작하기 위한 PMEM 플레이버를 만듭니다.
작은 정보

NVDIMM 하드웨어가 제한된 경우 PMEM 컴퓨팅 노드에 예약을 최적화하도록 호스트 집계를 구성할 수도 있습니다. PMEM 계산 노드에서 vPMEM을 요청하는 인스턴스만 예약하려면 NVDIMM 하드웨어가 있는 컴퓨팅 노드의 호스트 집계를 생성하고 호스트 집계에 PMEM 인스턴스만 배치하도록 Compute 스케줄러를 구성합니다. 자세한 내용은 호스트 집계를 격리 하여 호스트 집계 및 필터링 생성 및 관리를 참조하십시오.

사전 요구 사항

  • 컴퓨팅 노드에는 Intel® Optane™ DC Persistent Memory와 같은 영구 메모리 하드웨어가 있습니다.
  • PMEM 하드웨어 장치에서 backend NVDIMM 리전에 PMEM 네임스페이스를 생성하도록 구성했습니다. Intel에서 제공하는 ipmctl 도구를 사용하여 PMEM 하드웨어를 구성할 수 있습니다.

PMEM 장치 사용 시 제한 사항

  • vPMEM을 사용하는 인스턴스를 콜드 마이그레이션, 실시간 마이그레이션, 크기 조정 또는 일시 중단할 수 없습니다.
  • RHEL8이 실행되는 인스턴스만 vPMEM을 사용할 수 있습니다.
  • vPMEM 인스턴스를 다시 빌드할 때 인스턴스의 초기 상태를 복원하도록 영구 메모리 네임스페이스가 제거됩니다.
  • 새 플레이버를 사용하여 인스턴스 크기 조정 시 원래 가상 영구 메모리의 콘텐츠가 새 가상 영구 메모리에 복사되지 않습니다.
  • 가상 영구 메모리 핫플러그는 지원되지 않습니다.
  • vPMEM 인스턴스의 스냅샷을 생성할 때 가상 영구 이미지가 포함되지 않습니다.

13.1. PMEM을 위한 컴퓨팅 노드 지정

PMEM 워크로드에 대해 컴퓨팅 노드를 지정하려면 새 역할 파일을 생성하여 PMEM 역할을 구성하고, PMEM의 새 오버클라우드 플레이버 및 리소스 클래스를 구성하여 NVDIMM 컴퓨팅 노드를 태그해야 합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  3. Controller,Compute 및 Compute PMEM 역할이 포함된 roles_data_pmem.yaml 이라는 새 역할 데이터 파일을 생성합니다.

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_pmem.yaml \
     Compute:ComputePMEM Compute Controller
  4. roles_data_pmem.yaml 을 열고 다음 매개변수 및 섹션을 편집하거나 추가합니다.

    섹션/패랜드현재 값새 값

    역할 설명

    역할: 컴퓨팅

    역할: ComputePMEM

    역할 이름

    name: 컴퓨팅

    name: ComputePMEM

    description

    기본 컴퓨팅 노드 역할

    PMEM 계산 노드 역할

    HostnameFormatDefault

    %stackname%-novacompute-%index%

    %stackname%-novacomputepmem-%index%

    deprecated_nic_config_name

    compute.yaml

    compute-pmem.yaml

  5. 노드 정의 템플릿 node. json 또는 node. yaml에 추가하여 오버클라우드에 NVDIMM 컴퓨팅 노드를 등록합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 오버클라우드 노드 등록을 참조하십시오.
  6. 노드 하드웨어를 검사합니다.

    (undercloud)$ openstack overcloud node introspect --all-manageable --provide

    자세한 내용은 Director 설치 및 사용 가이드 의 베어 메탈 노드 하드웨어 인벤토리 생성을 참조하십시오.

  7. PMEM 컴퓨팅 노드의 compute-pmem 오버클라우드 플레이버를 생성합니다.

    (undercloud)$ openstack flavor create --id auto \
     --ram <ram_size_mb> --disk <disk_size_gb> \
     --vcpus <no_vcpus> compute-pmem
    • <ram_size_mb> 를 베어 메탈 노드의 RAM(MB)으로 바꿉니다.
    • <disk_size_gb> 를 베어 메탈 노드의 디스크 크기(GB)로 바꿉니다.
    • <no_vcpus> 를 베어 메탈 노드의 CPU 수로 바꿉니다.

      참고

      이러한 속성은 인스턴스를 예약하는 데 사용되지 않습니다. 그러나 계산 스케줄러는 디스크 크기를 사용하여 루트 파티션 크기를 결정합니다.

  8. 사용자 정의 PMEM 리소스 클래스를 사용하여 PMEM 워크로드를 지정하려는 각 베어 메탈 노드에 태그를 지정합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.PMEM <node>

    <node> 를 베어 메탈 노드의 ID로 바꿉니다.

  9. compute-pmem 플레이버를 사용자 지정 PMEM 리소스 클래스와 연결합니다.

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_PMEM=1 \
      compute-pmem

    베어 메탈 서비스 노드의 리소스 클래스에 해당하는 사용자 지정 리소스 클래스의 이름을 확인하려면 리소스 클래스를 대문자로 변환하려면 모든 문장 부호를 밑줄로 바꾸고 접두사는 CUSTOM_ 로 바꿉니다.

    참고

    플레이버는 베어 메탈 리소스 클래스의 인스턴스 하나만 요청할 수 있습니다.

  10. Compute 스케줄러가 베어 메탈 플레이버 속성을 사용하여 인스턴스를 예약하지 못하도록 다음 플레이버 속성을 설정합니다.

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 compute-pmem
  11. 다음 매개변수를 node-info.yaml 파일에 추가하여 PMEM 컴퓨팅 노드 수와 PMEM 지정 컴퓨팅 노드에 사용할 플레이버를 지정합니다.

    parameter_defaults:
      OvercloudComputePMEMFlavor: compute-pmem
      ComputePMEMCount: 3 #set to the no of NVDIMM devices you have
  12. 역할이 생성되었는지 확인하려면 다음 명령을 입력합니다.

    (undercloud)$ openstack overcloud profiles list