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 을 참조하십시오.
절차
시스템의 모든 네임스페이스를 나열합니다.
# 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 } ]
네임스페이스를 재구성합니다.
# 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
인 경우 장치에서 레이블을 지원하지 않음을 나타냅니다.
절차
사용 가능한 공간이 있는 시스템의
pmem
지역을 나열합니다. 다음 예제에서는 region1 및 region0 리전에서 공간을 사용할 수 있습니다.# 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" } ]
사용 가능한 리전 중 하나에 하나 이상의 네임스페이스를 할당합니다.
# 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)
도움말 페이지