Red Hat Training

A Red Hat training course is available for RHEL 8

7.7. NVDIMM에 장치 DAX 네임스페이스 생성

직접 액세스 기능을 사용하여 문자 스토리지를 지원하도록 시스템에 연결된 NVDIMM 장치를 장치 DAX 모드에서 구성합니다.

다음 옵션을 고려하십시오.

  • 장치 DAX 모드로 기존 네임스페이스를 재구성합니다.
  • 사용 가능한 공간이 있는 경우 새 장치 DAX 네임스페이스를 만듭니다.Create a new device DAX namespace, if there is space available.

7.7.1. 장치 직접 액세스 모드의 NVDIMM

장치 직접 액세스(device DAX, devdax)는 애플리케이션이 파일 시스템을 사용하지 않고 스토리지에 직접 액세스할 수 있는 수단을 제공합니다. 장치 DAX의 이점은 ndctl 유틸리티의 --align 옵션을 사용하여 구성할 수 있는 보장된 내결함성을 제공하는 것입니다.

Intel 64 및 AMD64 아키텍처의 경우 다음과 같은 오류 세분화가 지원됩니다.

  • 4 KiB
  • 2 MiB
  • 1GiB

장치 DAX 노드는 다음 시스템 호출만 지원합니다.

  • open()
  • close()
  • mmap()

ndctl list --human --capabilities 명령을 사용하여 NVDIMM 장치의 지원되는 정렬을 볼 수 있습니다. 예를 들어 region0 장치에 대해 보려면 ndctl list --human --capabilities -r region0 명령을 사용합니다.

참고

장치 DAX 사용 사례가 SNIA 비Volatile 메모리 프로그래밍 모델에 연결되어 있기 때문에 read()write() 시스템 호출이 지원되지 않습니다.

7.7.2. 기존 NVDIMM 네임스페이스를 장치 DAX 모드로 재구성

기존 NVMe(Non-Volatile Dual In-line Memory Modules) 네임스페이스를 장치 DAX 모드로 재구성할 수 있습니다.

주의

네임스페이스를 다시 구성하면 네임스페이스에 이전에 저장된 데이터가 삭제됩니다.

사전 요구 사항

  • The ndctl 유틸리티가 설치되어 있습니다. 자세한 내용은 Installing ndctl 을 참조하십시오.

절차

  1. 시스템의 모든 네임스페이스를 나열합니다.

    # ndctl list --namespaces --idle
    
    [
      {
        "dev":"namespace1.0",
        "mode":"raw",
        "size":34359738368,
        "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4"
        "state":"disabled",
        "numa_node":1
      },
      {
        "dev":"namespace0.0",
        "mode":"raw",
        "size":38615912448,
        "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817",
        "state":"disabled",
        "numa_node":0
      }
    ]
  2. 네임스페이스를 재구성합니다.

    # ndctl create-namespace --force --mode=devdax --reconfig=namespace-ID

    예 7.3. 네임스페이스를 장치 DAX로 재구성

    다음 명령은 DAX를 지원하는 데이터 저장을 위해 namespace0.1 을 재구성합니다. 운영 체제가 한 번에 2MiB 페이지에 오류가 있는지 확인하기 위해 2MiB 오류 세분에 맞게 조정됩니다.

    # ndctl create-namespace --force --mode=devdax  --align=2M --reconfig=namespace0.1
    {
      "dev":"namespace0.1",
      "mode":"devdax",
      "map":"dev",
      "size":"35.44 GiB (38.05 GB)",
      "uuid":"426d6a52-df92-43d2-8cc7-046241d6d761",
      "daxregion":{
        "id":0,
        "size":"35.44 GiB (38.05 GB)",
        "align":2097152,
        "devices":[
          {
            "chardev":"dax0.1",
            "size":"35.44 GiB (38.05 GB)",
            "target_node":4,
            "mode":"devdax"
          }
        ]
      },
      "align":2097152
    }

    이제 /dev/dax0.1 경로에서 네임스페이스를 사용할 수 있습니다.

검증

  • 시스템의 기존 네임스페이스가 재구성되었는지 확인합니다.

    # ndctl list --namespace namespace0.1
    [
      {
        "dev":"namespace0.1",
        "mode":"devdax",
        "map":"dev",
        "size":38048628736,
        "uuid":"426d6a52-df92-43d2-8cc7-046241d6d761",
        "chardev":"dax0.1",
        "align":2097152
      }
    ]

추가 리소스

  • the ndctl-create-namespace(1) 도움말 페이지

7.7.3. 장치 DAX 모드에서 새 NVDIMM 네임스페이스 생성

이 리전에 사용 가능한 공간이 있는 경우 NVMe(Non-Volatile Dual In-line Memory Modules) 장치에서 새 장치 DAX 네임스페이스를 만들 수 있습니다.

사전 요구 사항

  • The ndctl 유틸리티가 설치되어 있습니다. 자세한 내용은 Installing ndctl 을 참조하십시오.
  • NVDIMM 장치는 라벨을 지원하여 하나의 리전에 여러 네임스페이스를 생성합니다. 다음 명령을 사용하여 확인할 수 있습니다.

    # ndctl read-labels nmem0 >/dev/null
    read 1 nmem

    이는 하나의 NVDIMM 장치의 라벨을 읽을 수 있음을 나타냅니다. 값이 0 인 경우 장치에서 레이블을 지원하지 않음을 나타냅니다.

절차

  1. 사용 가능한 공간이 있는 시스템의 pmem 지역을 나열합니다. 다음 예제에서는 region1region0 리전에서 공간을 사용할 수 있습니다.

    # ndctl list --regions
    [
      {
        "dev":"region1",
        "size":2156073582592,
        "align":16777216,
        "available_size":2117418876928,
        "max_available_extent":2117418876928,
        "type":"pmem",
        "iset_id":-9102197055295954944,
        "badblock_count":1,
        "persistence_domain":"memory_controller"
      },
      {
        "dev":"region0",
        "size":2156073582592,
        "align":16777216,
        "available_size":2143188680704,
        "max_available_extent":2143188680704,
        "type":"pmem",
        "iset_id":736272362787276936,
        "badblock_count":3,
        "persistence_domain":"memory_controller"
      }
    ]
  2. 사용 가능한 리전 중 하나에 하나 이상의 네임스페이스를 할당합니다.

    # ndctl create-namespace --mode=devdax --region=region_N_ --size=namespace-size

    예 7.4. 리전에서 네임스페이스 생성

    다음 명령은 region0에 36-GiB 장치 DAX 네임스페이스를 생성합니다. 운영 체제가 한 번에 2MiB 페이지에 오류가 있는지 확인하기 위해 2MiB 오류 세분에 맞게 조정됩니다.

    # ndctl create-namespace --mode=devdax --region=region0 --align=2M --size=36G
    {
      "dev":"namespace0.2",
      "mode":"devdax",
      "map":"dev",
      "size":"35.44 GiB (38.05 GB)",
      "uuid":"89d13f41-be6c-425b-9ec7-1e2a239b5303",
      "daxregion":{
        "id":0,
        "size":"35.44 GiB (38.05 GB)",
        "align":2097152,
        "devices":[
          {
            "chardev":"dax0.2",
            "size":"35.44 GiB (38.05 GB)",
            "target_node":4,
            "mode":"devdax"
          }
        ]
      },
      "align":2097152
    }

    이제 네임스페이스를 /dev/dax0.2 로 사용할 수 있습니다.

검증

  • 새 네임스페이스가 섹터 모드에서 생성되었는지 확인합니다.

    # ndctl list -RN -n namespace0.2
    {
      "regions":[
        {
          "dev":"region0",
          "size":2156073582592,
          "align":16777216,
          "available_size":2065879269376,
          "max_available_extent":2065879269376,
          "type":"pmem",
          "iset_id":736272362787276936,
          "badblock_count":3,
          "persistence_domain":"memory_controller",
          "namespaces":[
            {
              "dev":"namespace0.2",
              "mode":"devdax",
              "map":"dev",
              "size":38048628736,
              "uuid":"89d13f41-be6c-425b-9ec7-1e2a239b5303",
              "chardev":"dax0.2",
              "align":2097152
            }
          ]
        }
      ]
    }

추가 리소스

  • the ndctl-create-namespace(1) 도움말 페이지