nvme-copy · shipping · also NVMe Simple Copy

NVMe Copy

NVMe Copy is an optional command that asks a controller to copy specified source data into a contiguous destination logical-block range.

Related Observatory article: NVMe Copy on hesela.com

The host submits range descriptors instead of moving the copied payload through a host buffer. [1] nvme-cli exposes source ranges, destination address and descriptor format. [2]

In NVM Command Set 1.2, block-addressed formats 0h/1h stay within one namespace; 2h/3h can name other source namespaces, subject to advertised support, host enablement and format compatibility. MSRC, MSSRL and MCL bound range count, individual length and total length. [1]

A failed command can leave destination data changed. Its completion identifies the lowest-numbered unsuccessful range, not total copied bytes; later ranges can also have been copied. A zero result does not prove that the destination remained unchanged. [1]

This is not the filesystem-level FICLONE interface. Fast-copy implementations may nevertheless use copy-on-write, so command completion does not prove physically independent allocation. [3] [1]

With formats 2h/3h, Fast Copy Only (FCO) can require the fast method for a source range. If it is unavailable, the command fails with Fast Copy Not Possible. For that status, DNR=0 permits retry; DNR=1 advises against retrying that Copy command, while host Read/Write copying remains an alternative. [1]

Relations

related
NVMe namespace, Reflink, copy_file_range, Copy-on-write (storage)

Advantages

  • Avoids a host read-then-write payload round trip. [1]

Limitations

  • Copy atomicity still depends on write-unit and boundary rules; support does not promise an unlimited transaction. [1]
  • Fast-copy support does not guarantee that every operation is faster than host copying. [1]

Citations

  1. NVM Command Set 1.2: sections 3.3.2 and 4.1.5.1. Copyright 2008-2025 NVM Express, Inc. All rights reserved. (accessed 2026-11-08)
  2. nvme-cli v2.15: Copy command, source ranges and descriptor format (accessed 2026-11-08)
  3. Linux man-pages: FICLONE and filesystem extent-sharing semantics (accessed 2026-11-08)

Further reading

  1. Hesela: Fast file clones and deferred copying costs (accessed 2026-11-08)
Sources & caveats
  • The NVM 1.2 review covers block-addressed formats 0h-3h, not the byte-addressed format 4h. The edition is pinned, not a latest-version claim.
  • Source review only; no raw-device command, physical-allocation measurement or performance benchmark was run.

JSON: /data/terms/nvme-copy.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. NVMe Copy. Hesela. 2026-11-08. https://hesela.dev/terms/nvme-copy/