NVMe list Usage: Zero or Partial Utilization Does Not Mean Lost Capacity

Reported concern

The source reports an NVMe device whose nvme list Usage numerator is smaller than the denominator or zero. Replacing/formatting the drive did not make the values equal. Its original output includes:

Original English nvme list output highlighting1.13GBused versus3.84TBnamespace size
Original English nvme list output highlighting0.00B versus3.84TB on the replacement example

What the fields mean

Namespace Size (NSZE), Capacity (NCAP) and Utilization (NUSE) are different Identify Namespace fields. NUSE is the number of logical blocks currently allocated; it is not a lifetime write counter or the filesystem’s free-space reading. Writes may allocate blocks and supported deallocation/TRIM may release them. A zero/partial numerator alone therefore does not prove lost namespace capacity.

Original English NUSE specification excerpt explicitly allowing deallocation and some always-NCAP implementations

The source says utilization is the cumulative amount ever written since format and only increases. That conflicts with both its own English excerpt and the official NVM Express explanation. Rewriting an already allocated block does not necessarily increase allocated capacity; deallocation can decrease it. Reporting rules also depend on namespace features/controller implementation, not simply “old protocol wrong, new protocol precise.”

Original English NUSE-1 example:0GBaftererase,1GBafterwrite,200GBfull,190GBafter10GBdeallocation

This source image itself illustrates the decrease: a 200 GB example becomes 190 GB after a 10 GB deallocation. Its label NUSE-1 is reproduced as source material; the originating document/version is not identified in the stored article, so it is not asserted as a universal current requirement for every controller.

Check capacity without forcing the display full

Compare the namespace’s actual Identify data and OS block-device size. lsblk describes block devices/partitions, while df -hT reports mounted filesystem sizes/usage; a filesystem can be smaller than its namespace. Neither filesystem free space nor the Usage numerator is a substitute for the namespace capacity fields.

The source proposes writing all sectors with fio to make utilization appear full. That is not needed to validate these fields, can overwrite data and adds writes; do not use a fill test as a cosmetic fix on a live drive. Investigate actual capacity discrepancies, I/O errors or health faults separately. A zero numerator alone does not justify replacement, and a full numerator alone does not prove health.

Official English references: NVM Express namespace field explanation and NVM Command Set specification 1.0d.

Can't find an answer?

Upload a log for AI diagnosis, or ask the AI assistant directly in the console.