{
  "slug": "nvme-namespace-identifiers",
  "term": "NVMe namespace identifiers",
  "aliases": [
    "NVMe NGUID",
    "NVMe EUI64",
    "NVMe namespace UUID"
  ],
  "definition": "NVMe namespace identifiers are the NGUID, EUI64 and namespace UUID values used to distinguish a namespace independently of its command-addressing NSID.",
  "note": "NGUID is 128-bit and EUI64 is 64-bit; Identify Namespace reports both fields [nvme-nvm-1-0c]. Namespace identification descriptors distinguish EUI64, NGUID and 128-bit UUID types [libnvme-types]. These protocol identifiers are not filesystem UUIDs or partition GUIDs.\n\nLinux v6.12 compares UUID, NGUID, EUI64 and the command-set identifier before accepting another path for a shared NSID in a subsystem [linux-v6-12]. This identity check is separate from deciding which path can serve I/O [hesela-ana].\n\nNGUID and EUI64 remain stable during the namespace lifetime, including controller reset and namespace format; zero means that field provides no identifier [nvme-nvm-1-0c]. NSFEAT.UIDREUSE=0 permits nonzero NGUID/EUI64 reuse after deletion; UIDREUSE=1 prohibits it [nvme-base-2-0e]. This rule does not describe UUID reuse.\n\nFor dispersed namespaces, NSIDs may differ between participating subsystems; the common identifier is NGUID or namespace UUID, not EUI64, with NGUID selected when both exist [nvme-base-2-3]. This does not establish support in a particular host implementation.",
  "status": "shipping",
  "advantages": [
    "Allows namespace recognition without relying only on an NSID or an operating-system device name."
  ],
  "limitations": [
    "Not all three forms must be populated.",
    "Duplicate or inconsistent identifiers require investigation, not forced path merging."
  ],
  "related": [
    "namespace-nvme",
    "nvme-nsid",
    "nvme-subsystem-nqn",
    "multipath-nvme"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "nvme-nvm-1-0c",
      "title": "NVM Express NVM Command Set Specification 1.0c, Figure 97; copyright 2008-2022 NVM Express, Inc., all rights reserved",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-1.0c-2022.10.03-Ratified.pdf",
      "accessed": "2026-10-16"
    },
    {
      "id": "nvme-base-2-0e",
      "title": "NVM Express Base Specification 2.0e, section 4.5.1; copyright 2008-2024 NVM Express, Inc., all rights reserved",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0e-2024.07.29-Ratified.pdf",
      "accessed": "2026-10-16"
    },
    {
      "id": "libnvme-types",
      "title": "libnvme upstream types: nvme_ns_id_desc and nvme_ns_id_desc_nidt",
      "url": "https://github.com/linux-nvme/libnvme/blob/master/doc/rst/types.rst",
      "accessed": "2026-10-16"
    },
    {
      "id": "linux-v6-12",
      "title": "Linux v6.12 NVMe host core: nvme_ns_ids_equal and nvme_init_ns_head",
      "url": "https://github.com/torvalds/linux/blob/v6.12/drivers/nvme/host/core.c",
      "accessed": "2026-10-16"
    },
    {
      "id": "hesela-ana",
      "title": "NVMe multipath: ANA access states and Linux path policies",
      "url": "https://hesela.com/analyses/nvme-multipath-ana-path-selection/",
      "accessed": "2026-10-16"
    },
    {
      "id": "nvme-base-2-3",
      "title": "NVM Express Base Specification 2.3, section 8.1.10.2: dispersed namespace identity; copyright NVM Express, Inc.",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-Revision-2.3-2025.08.01-Ratified.pdf",
      "accessed": "2026-10-16"
    }
  ],
  "updated": "2026-10-16"
}
