18.7. NVDIMM에서 파일 시스템 DAX 네임스페이스 생성


직접 액세스 기능이 있는 파일 시스템을 지원하도록 시스템에 연결된 NVDIMM 장치를 파일 시스템 DAX 모드에서 구성합니다.

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

  • 기존 네임스페이스를 파일 시스템 DAX 모드로 재구성합니다.
  • 사용 가능한 공간이 있는 경우 새 파일 시스템 DAX 네임스페이스 만들기.

18.7.1. 파일 시스템의 직접 액세스 모드의 NVDIMM

NVDIMM 장치가 파일 시스템에 직접 액세스(파일 시스템 DAX, fsdax) 모드로 구성된 경우 그 위에 파일 시스템을 생성할 수 있습니다. 이 파일 시스템의 파일에서 mmap() 작업을 수행하는 모든 애플리케이션은 해당 스토리지에 직접 액세스할 수 있습니다. 이를 통해 NVDIMM에서 직접 액세스 프로그래밍 모델을 사용할 수 있습니다.

이제 다음과 같은 새로운 -o dax 옵션을 사용할 수 있으며 필요한 경우 file 속성을 통해 직접 액세스 동작을 제어할 수 있습니다.

-o dax=inode

이는 파일 시스템을 마운트하는 동안 dax 옵션을 지정하지 않는 경우 기본 옵션입니다. 이 옵션을 사용하면 파일에 속성 플래그를 설정하여 dax 모드를 활성화할 수 있는지 제어할 수 있습니다. 필요한 경우 개별 파일에 이 플래그를 설정할 수 있습니다.

디렉터리에 이 플래그를 설정할 수도 있으며 해당 디렉터리의 모든 파일은 동일한 플래그로 생성됩니다. xfs_io -c 'chattr +x' directory-name 명령을 사용하여 이 속성 플래그를 설정할 수 있습니다.

-o dax=never
이 옵션을 사용하면 dax 플래그가 inode 모드로 설정된 경우에도 dax 모드가 활성화되지 않습니다. 즉, per-inode dax 속성 플래그가 무시되고 이 플래그를 사용하여 설정된 파일은 직접 액세스가 활성화되지 않습니다.
-O dax=always

이 옵션은 이전 -o dax 동작과 동일합니다. 이 옵션을 사용하면 dax 특성 플래그와 관계없이 파일 시스템의 모든 파일에 대해 직접 액세스 모드를 활성화할 수 있습니다.

주의

추가 릴리스에서는 -o dax 가 지원되지 않을 수 있으며 필요한 경우 -o dax=always 를 대신 사용할 수 있습니다. 이 모드에서는 모든 파일이 직접 액세스 모드에 있을 수 있습니다.

페이지별 메타데이터 할당

이 모드에서는 시스템 DRAM 또는 NVDIMM 장치의 페이지별 메타데이터를 할당해야 합니다. 이 데이터 구조의 오버헤드는 4-KiB 페이지당 64바이트입니다.

  • 소규모 장치의 경우, DRAM에 문제 없이 사용할 수 있을 만큼의 오버헤드의 양이 작아집니다. 예를 들어, 16GiB의 네임스페이스는 페이지 구조에 256MiB만 필요합니다. NVDIMM 장치는 일반적으로 작고 비용이 많이 들기 때문에 페이지 추적 데이터 구조를 DRAM에 저장하는 것이 좋습니다.
  • 테라바이트 크기 이상인 NVDIMM 장치에서 페이지 추적 데이터 구조를 저장하는 데 필요한 메모리 양이 시스템에서 DRAM 양을 초과할 수 있습니다. NVDIMM의 TiB 1개에는 페이지 구조에 16GiB가 필요합니다. 따라서 이러한 경우 NVDIMM 자체에 데이터 구조를 저장하는 것이 좋습니다.

    네임스페이스를 구성할 때 --map 옵션을 사용하여 페이지별 메타데이터가 저장되는 위치를 구성할 수 있습니다.

  • 시스템 RAM에 할당하려면 --map=mem 을 사용합니다.
  • NVDIMM에 할당하려면 --map=dev 를 사용합니다.

18.7.2. 기존 NVDIMM 네임스페이스를 파일 시스템 DAX 모드로 재구성

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

주의

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

사전 요구 사항

  • ndctl 유틸리티가 설치되어 있습니다. 자세한 내용은 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
      }
    ]
    Copy to Clipboard Toggle word wrap
  2. 네임스페이스를 재구성합니다.

    # ndctl create-namespace --force --mode=fsdax --reconfig=namespace-ID
    Copy to Clipboard Toggle word wrap

    예 18.3. 네임스페이스를 파일 시스템 DAX로 재구성

    DAX를 지원하는 파일 시스템에 namespace0.0 을 사용하려면 다음 명령을 사용합니다.

    # ndctl create-namespace --force --mode=fsdax --reconfig=namespace0.0
    {
      "dev":"namespace0.0",
      "mode":"fsdax",
      "map":"dev",
      "size":"11.81 GiB (12.68 GB)",
      "uuid":"f8153ee3-c52d-4c6e-bc1d-197f5be38483",
      "sector_size":512,
      "align":2097152,
      "blockdev":"pmem0"
    }
    Copy to Clipboard Toggle word wrap

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

검증

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

    # ndctl list --namespace namespace0.0
    [
      {
        "dev":"namespace0.0",
        "mode":"fsdax",
        "map":"dev",
        "size":12681478144,
        "uuid":"f8153ee3-c52d-4c6e-bc1d-197f5be38483",
        "sector_size":512,
        "align":2097152,
        "blockdev":"pmem0"
      }
    ]
    Copy to Clipboard Toggle word wrap

18.7.3. 파일 시스템 DAX 모드에서 새 NVDIMM 네임스페이스 생성

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

사전 요구 사항

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

    # ndctl read-labels nmem0 >/dev/null
    read 1 nmem
    Copy to Clipboard Toggle word wrap

    이는 하나의 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"
      }
    ]
    Copy to Clipboard Toggle word wrap
  2. 사용 가능한 리전에서 하나 이상의 네임스페이스를 할당합니다.

    # ndctl create-namespace --mode=fsdax --region=regionN --size=namespace-size
    Copy to Clipboard Toggle word wrap

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

    다음 명령은 region0 에 36GiB 파일 시스템 DAX 네임스페이스를 생성합니다.

    # ndctl create-namespace --mode=fsdax --region=region0 --size=36G
    {
      "dev":"namespace0.3",
      "mode":"fsdax",
      "map":"dev",
      "size":"35.44 GiB (38.05 GB)",
      "uuid":"99e77865-42eb-4b82-9db6-c6bc9b3959c2",
      "sector_size":512,
      "align":2097152,
      "blockdev":"pmem0.3"
    }
    Copy to Clipboard Toggle word wrap

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

검증

  • 파일 시스템 DAX 모드에서 새 네임스페이스가 생성되었는지 확인합니다.

    # ndctl list -RN -n namespace0.3
    {
      "regions":[
        {
          "dev":"region0",
          "size":2156073582592,
          "align":16777216,
          "available_size":2027224563712,
          "max_available_extent":2027224563712,
          "type":"pmem",
          "iset_id":736272362787276936,
          "badblock_count":3,
          "persistence_domain":"memory_controller",
          "namespaces":[
            {
              "dev":"namespace0.3",
              "mode":"fsdax",
              "map":"dev",
              "size":38048628736,
              "uuid":"99e77865-42eb-4b82-9db6-c6bc9b3959c2",
              "sector_size":512,
              "align":2097152,
              "blockdev":"pmem0.3"
            }
          ]
        }
      ]
    }
    Copy to Clipboard Toggle word wrap

18.7.4. 파일 시스템 DAX 장치에서 파일 시스템 만들기

파일 시스템 DAX 장치에서 파일 시스템을 만들고 파일 시스템을 마운트할 수 있습니다. 파일 시스템을 생성한 후 애플리케이션은 영구 메모리를 사용하여 마운트 지점 디렉터리에 파일을 생성하고 파일을 열고 mmap 작업을 사용하여 직접 액세스를 위해 파일을 매핑할 수 있습니다.

프로세스

  1. 선택 사항: 파일 시스템 DAX 장치에 파티션을 만듭니다. 자세한 내용은 parted를 사용하여 파티션 생성 을 참조하십시오.

    참고

    fsdax 장치에서 파티션을 생성할 때 파티션은 페이지 경계에 맞춰야 합니다. Intel 64 및 AMD64 아키텍처에서는 파티션 시작 및 종료에는 최소 4KiB의 정렬이 필요합니다. 2MiB가 선호되는 정렬입니다.

    기본적으로 parted 툴은 1MiB 경계에 파티션을 조정합니다. 첫 번째 파티션의 경우 파티션 시작으로 2MiB를 지정합니다. 파티션 크기가 2MiB의 배수인 경우 다른 모든 파티션도 정렬됩니다.

  2. 파티션 또는 NVDIMM 장치에 XFS 또는 ext4 파일 시스템을 생성합니다.

    # mkfs.xfs -d su=2m,sw=1 fsdax-partition-or-device
    Copy to Clipboard Toggle word wrap
    참고

    이제 dax 가능 및 reflinked 파일이 파일 시스템에서 공존할 수 있습니다. 그러나 개별 파일의 경우 dax 및 reflink는 함께 사용할 수 없습니다.

    또한 페이지 매핑이 발생할 가능성을 높이려면 스트라이프 단위와 스트라이프 너비를 설정합니다.

  3. 파일 시스템을 마운트합니다.

    # mount f_sdax-partition-or-device mount-point_
    Copy to Clipboard Toggle word wrap

    직접 액세스 모드를 활성화하기 위해 dax 옵션으로 파일 시스템을 마운트할 필요가 없습니다. 마운트하는 동안 dax 옵션을 지정하지 않으면 파일 시스템은 dax=inode 모드에 있습니다. 직접 액세스 모드가 활성화되기 전에 파일에서 dax 옵션을 설정합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat