NVMe NVM Set
An NVMe NVM Set is a logical collection of non-volatile storage within which formatted namespaces inherit the set's attributes.
NVM Sets separate storage logically and may also separate it physically. A namespace containing formatted storage stays wholly within one set. Capacity may remain unallocated to any namespace. A set belongs to exactly one Endurance Group, but several sets may share that group's endurance management. [1]
Identify CNS 04h returns the NVM Set List with identifiers, associated ENDGID, total and unallocated capacity in bytes, and optimal write size. The list contains up to 31 entries accessible through the queried controller, starting at the first supported identifier equal to or greater than the requested identifier. One response need not enumerate the subsystem. [2]
NVMSETID is 16-bit and unique within the subsystem. Zero is reserved. If NVM Sets are not supported, NVMSETID fields are zero. Support is advertised in Identify Controller CTRATT and requires Endurance Group support. Do not interpret an unsupported zero as a real set. [1]
NVM Sets and Endurance Groups were optional additions in NVMe 1.4. NVMe 2.0 added an interoperable management interface; creation and deletion are not inherently restricted to private commands. [3] [4]
Relations
Limitations
- Distinct set identifiers do not establish independent controllers, power supplies or failure-independent replicas. [1]
Citations
- NVM Express Base 2.3: sections 3.2.2-3.2.3, printed pp. 79-82
- NVM Express Base 2.3: section 5.2.13.2.4, Figures 332-334, printed pp. 358-359
- NVM Express: Changes in NVMe Revision 1.4, optional NVM Sets and Endurance Groups
- NVM Express: Changes in Revision 2.0, NVM Set and Endurance Group Management
Sources & caveats
- Semantics are pinned to NVMe Base 2.3; physical isolation and workload interference require implementation-specific evidence.