NDCTL-ENABLE-NAMESPACE(1)
π NDCTL-ENABLE-NAMESPACE π
okay bestie, gather round, because we're talking about ndctl-enable-namespace(1) β the little command that flips your namespace from "asleep" to "awake" β¨. It lives in the ndctl manual, and it's genuinely so much simpler than its β¨theoryβ¨ section makes it look. iykyk.
β¨ NAME β¨
ndctl-enable-namespace β enable the given namespace(s) π«Ά
πΈ SYNOPSIS πΈ
ndctl enable-namespace <namespace> [<options>]
π§ THEORY OF OPERATION π§
ok so real talk, this part is the lore dump and you do need it.
The capacity of an NVDIMM REGION (a contiguous span of persistent memory) is accessed via one or more NAMESPACE devices. And like β REGION is just the Linux word for what ACPI and UEFI call a DIMM-interleave-set, or a system-physical-address-range that's striped (by the memory controller, bestie, not by us) across one or more memory modules. π
The UEFI specification defines the NVDIMM Label Protocol as the combo of label area access methods plus a data format for provisioning one or more NAMESPACE objects from a REGION. Important thing though: label support is optional. If Linux doesn't detect the label capability, it will automatically instantiate a "label-less" namespace per region. Examples of label-less namespaces are the ones created by the kernel's memmap=ss!nn command line option (see the nvdimm wiki on kernel.org), or NVDIMMs without a valid namespace index in their label area. π
Note β Label-less namespaces lack many of the features of their label-rich cousins. For example, their size cannot be modified, or they cannot be fully destroyed (i.e. the space reclaimed). A destroy operation will zero any mode-specific metadata. Finally, forcreate-namespaceoperations on label-less namespaces,ndctlbypasses the region capacity availability checks, and always satisfies the request using the full region capacity. The only reconfiguration operation supported on a label-less namespace is changing its mode. π
A namespace can be provisioned to operate in one of 4 modes: fsdax, devdax, sector, and raw. Here are the expected usage models for these modes:
fsdaxβ Filesystem-DAX mode is the default mode of a namespace when you specifyndctl create-namespacewith no options. It creates a block device (/dev/pmemX[.Y]) that supports the DAX capabilities of Linux filesystems (xfsandext4to date). DAX removes the page cache from the I/O path and allowsmmap(2)to establish direct mappings to persistent memory media. The DAX capability enables workloads / working-sets that would exceed the capacity of the page cache to scale up to the capacity of persistent memory. Workloads that fit in page cache or perform bulk data transfers may not see benefit from DAX. When in doubt, pick this mode. πdevdaxβ Device-DAX mode enables similarmmap(2)DAX mapping capabilities as Filesystem-DAX. However, instead of a block-device that can support a DAX-enabled filesystem, this mode emits a single character device file (/dev/daxX.Y). Use this mode to assign persistent memory to a virtual-machine, register persistent memory for RDMA, or when gigantic mappings are needed. π₯sectorβ Use this mode to host legacy filesystems that do not checksum metadata or applications that are not prepared for torn sectors after a crash. Expected usage for this mode is for small boot volumes. This mode is compatible with other operating systems. πrawβ Raw mode is effectively just a memory disk that does not support DAX. Typically this indicates a namespace that was created by tooling or another operating system that did not know how to create a Linuxfsdaxordevdaxmode namespace. This mode is compatible with other operating systems, but again, does not support DAX operation. π
π OPTIONS π
<namespace>β anamespaceX.Ydevice name. The keywordallcan be specified to carry out the operation on every namespace in the system, optionally filtered by region (see the--region=option). π-r,--region=β aregionXdevice name, or a region id number. Restrict the operation to the specified region(s). The keywordallcan be specified to indicate the lack of any restriction, however this is the same as not supplying a--regionoption at all. β¨-b,--bus=β a bus id number, or a provider string (e.g."ACPI.NFIT"). Restrict the operation to the specified bus(es). The keywordallcan be specified to indicate the lack of any restriction, however this is the same as not supplying a--busoption at all. π¦-v,--verboseβ Emit debug messages for the namespace operation. (the way i love a verbose flag, no notes) π
π COPYRIGHT π
Copyright Β© 2016 - 2022, Intel Corporation. License GPLv2: GNU GPL version 2 http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
no cap, that NO WARRANTY is in all caps for a reason, bestie. π
π SEE ALSO π
ndctl-disable-namespace(1)β the inverse. the situationship. the "ok turning you off now" to this page's "ok turning you on now". π
and that's the whole vibe β¨ β this was ndctl, version dated 2026-07-07, page NDCTL-ENABLE-NAMESPACE(1). go enable something, bestie, you got this ππ«ΆπΈ
π¦ where this page comes from
- fedora 43: ndctl 85-1.fc43 Β· GPL-2.0-only AND LGPL-2.1-only AND CC0-1.0 AND MIT
- fedora 44: ndctl 85-1.fc44 Β· GPL-2.0-only AND LGPL-2.1-only AND CC0-1.0 AND MIT
- ubuntu stonking: ndctl 82-1ubuntu1 Β· LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms