PCIe Exported NVM Subsystem
Overview
The PCIe exported NVM subsystem is an in-process NVMe technical proposal that extends the exported NVM subsystem concept — originally designed for NVMe over Fabrics — to PCIe in order to virtualize an SSD. It creates exported controllers and namespaces that abstract the underlying hardware so the host sees only the exported subsystem, which is the foundation for seamless, interoperable live migration of virtual SSDs.
The defining mechanism is that exported NVM subsystems let the host define controller and namespace identifiers — including NQNs and namespace unique IDs that the SSD fixes today — which is essential so that source and destination can present identical identifiers during migration. A proposed unique template ID applied to an exported NVM subsystem statically defines the supported commands, log pages, and features, so capabilities need not be queried at runtime and can differ from the underlying SSD controllers; command support can also be dynamically configured at runtime per command, and the template defines exactly which final-state data is migrated once processing stops on the source and resumes on the destination.
In the worked migration example the underlying and exported resource numbers were deliberately chosen to be unique because the destination's underlying controllers and namespaces may already be in use — a case the earlier TP4159 controller-migration proposal did not cover. Migration commands are NVMe admin commands sent in-band or out-of-band to a controller associated with an orchestrating host (not to the controllers serving VMs), with no NVMe-level requirement on whether the OS or BMC issues them. A known limitation is that migrated final-state data must currently be transported in plaintext — an acknowledged hole in the system — because secure-encryption handling of exported encrypted data (TCG/MEK unwrapping) has not yet been fully worked through.
Sign in to read the full article.
Sign In