Technical guide
NVMe Namespaces vs Partitions Explained
Understand NVMe namespaces, NSIDs, controllers, partitions, NVM Sets, endurance groups, and why a namespace is a different storage layer from a partition.
On this page
- An NVMe namespace is a host-addressable logical block space
- A partition is created inside a host-visible block device
- NSID identifies the namespace through a controller
- Namespace Management and Namespace Attachment are optional capabilities
- Namespace size and physical NAND placement are not the same thing
- NVM Sets and Endurance Groups are separate optional resource layers
- Namespaces can be useful without replacing normal partitioning
- The durable mental model is controller → namespace → partition → filesystem
An NVMe namespace is a host-addressable logical block space
NVM Express defines a namespace as a collection of logical block addresses, or LBAs, that host software can access. A controller uses a namespace identifier, or NSID, to identify the namespace being addressed. The important boundary is logical: NVM Express explicitly says a namespace is not physical isolation of NAND blocks.
A single NVMe subsystem can expose one namespace or multiple namespaces, depending on the device, controller capabilities, configuration, and platform. To host software, an attached namespace can appear as its own block device. That is why namespaces can look superficially similar to separate disks even though they may be backed by capacity inside the same NVMe subsystem.
| Term | What it represents | What it does not automatically mean |
|---|---|---|
| NVMe controller | Controller interface that accepts NVMe commands and provides access to attached namespaces | One physical SSD always equals exactly one controller |
| Namespace | Host-addressable logical storage made from a range of logical block addresses | A filesystem partition or physically isolated NAND region |
| NSID | Identifier a controller uses to address a namespace | A partition number or drive letter |
| Partition | Host-defined region recorded in a partitioning scheme on a block device | A separately managed NVMe namespace |
| Volume / filesystem | Operating-system storage structure built on an available block-storage layer | An NVMe protocol object |
| NVM Set | Optional NVMe grouping of NVM resources with which namespaces may be associated | A synonym for a namespace or partition |
| Endurance Group | Optional NVMe grouping used to manage endurance across one or more NVM Sets | A guarantee that each namespace has physically separate NAND |
A partition is created inside a host-visible block device
Partitioning happens above the NVMe namespace abstraction. Once an operating system sees a namespace as a block device, that device can be partitioned using the normal storage model. Microsoft DiskPart, for example, treats disks, partitions, and volumes as distinct manageable objects and can list the partitions recorded on a selected disk.
That means one namespace can contain multiple partitions. Conversely, creating another partition does not create another NVMe namespace, allocate a new NSID, or invoke NVMe Namespace Management. A partition changes how the host organizes the logical address space it already sees; a namespace defines an addressable storage object at the NVMe protocol layer.
NSID identifies the namespace through a controller
The NSID is the controller-facing handle used to select a namespace for commands. NVM Express also defines globally unique namespace identifiers such as NGUID, EUI-64, and UUID mechanisms for identifying namespaces beyond a simple controller-local NSID. Those identifiers solve different identity problems and should not be collapsed into the partition identifiers used by GPT or other host partitioning schemes.
NVM Express also distinguishes private and shared namespaces. A private namespace is attached to one controller, while a shared namespace can be attached to two or more controllers in an NVMe subsystem. That architecture is especially relevant to enterprise and multipath designs; it does not imply that a normal consumer M.2 SSD exposes user-configurable shared namespaces.
Namespace Management and Namespace Attachment are optional capabilities
The NVMe Base Specification defines Namespace Management operations for creating, modifying, and deleting namespaces, and Namespace Attachment operations for attaching or detaching namespaces from controllers. The specification makes support for Namespace Management conditional: a controller that supports the capability advertises it and implements the associated commands.
This is an important practical limit. The existence of namespaces in NVMe does not mean every retail SSD, firmware interface, operating-system utility, or motherboard exposes a supported way for the owner to create several of them. Device capabilities and vendor/platform tooling have to be checked for the exact system instead of assuming namespace management is universally available.
Namespace size and physical NAND placement are not the same thing
A namespace defines logical capacity visible through its LBA space. The controller is responsible for mapping that logical storage onto underlying non-volatile memory. NVM Express explicitly warns against interpreting a namespace as physical block isolation, and the Base Specification leaves aspects of how namespace characteristics map to NVM capacity outside the generic host-visible abstraction.
As a result, splitting capacity into namespaces is not evidence that each namespace owns a physically separate NAND package, channel, die, or fixed performance slice. Any claim about physical isolation, quality of service, bandwidth, endurance behavior, or failure domains needs support from the specific device architecture and features rather than from namespace count alone.
NVM Sets and Endurance Groups are separate optional resource layers
Modern NVMe specifications define NVM Sets and Endurance Groups as additional resource-management concepts. When NVM Sets are supported, a namespace can be associated with an NVM Set, and each NVM Set is associated with an Endurance Group. The Base Specification describes endurance as being managed within one NVM Set or across a collection of NVM Sets that share an Endurance Group.
These objects are not alternate names for partitions. They describe controller/subsystem resource organization below the host filesystem and partitioning layer, and their support is explicitly capability-dependent. A system that exposes one ordinary namespace can still be a perfectly valid NVMe device without giving a desktop user controls for NVM Sets or Endurance Groups.
Namespaces can be useful without replacing normal partitioning
Multiple namespaces can provide distinct host-visible logical devices and can support NVMe-level policies or attachment behavior where the controller implements those features. NVM Express lists use cases including logical isolation, multi-tenancy, namespace-specific formatting, write protection, and provisioning choices. The exact available controls still depend on the device and environment.
Partitions remain useful for the much more common job of organizing an operating system, applications, recovery data, or filesystems inside a block device. If the requirement is simply to divide one Windows-visible SSD into C: and another volume, ordinary partitioning is the relevant layer. Creating additional NVMe namespaces is a different controller-management operation and should not be treated as a more advanced form of the same task.
The durable mental model is controller → namespace → partition → filesystem
For a conventional block-storage path, the simplest useful model is that an NVMe controller exposes one or more namespaces; the operating system sees an attached namespace as block storage; a partition table can divide that block storage into partitions; and filesystems or volumes can then be created on top. More advanced NVMe subsystems may add NVM Sets, Endurance Groups, multiple controllers, and shared namespace attachment beneath that host storage layout.
Keeping those layers separate prevents several common mistakes: an NSID is not a partition number, a namespace is not proof of physically isolated NAND, a partition does not create a new NVMe protocol object, and multiple namespaces do not by themselves guarantee more performance or endurance. The exact capabilities come from the controller and subsystem implementation, not from the namespace concept alone.
Sources
Primary and technical sources
Technical details can vary by exact model, firmware, and platform. These are the sources used for the factual claims in this article.
01 NVM Express
NVMe Namespaces02 NVM Express
NVM Express Base Specification 2.0e03 NVM Express
Base NVM Express – Part One04 Microsoft Learn
DiskPart command interpreter05 Microsoft Learn
DiskPart list command
Related
Continue from here
Useful next steps selected from the same technical reference and publication system.
Technical guide
DRAM vs DRAM-Less NVMe SSDs: HMB and Tradeoffs Explained
Understand SSD controller DRAM, DRAM-less NVMe designs, Host Memory Buffer (HMB), cache boundaries, and why exact drive design and workload matter more than one label.
Compatibility & upgrades
NVMe vs SATA SSD for a Gaming PC: Interface Limits, Load Times, DirectStorage, Thermals, and Upgrade Value
Compare SATA and NVMe SSDs for PC gaming by interface limits, latency and queue behavior, game loading, DirectStorage, thermals, capacity, compatibility, and evidence-based upgrade value.
Compatibility & upgrades
Microsoft DirectStorage Explained: NVMe, GPU Decompression, Windows 11 Requirements, and Game Support
Source-backed guide to Microsoft DirectStorage on Windows PCs: NVMe requirements, GPU decompression, GDeflate, fallbacks, game implementation, and performance limits.