Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NVMECONTROL(8)		    System Manager's Manual		NVMECONTROL(8)

NAME
       nvmecontrol -- NVM Express control utility

SYNOPSIS
       nvmecontrol devlist [-h]
       nvmecontrol identify [-v] [-x] [-n nsid]	<device-id | namespace-id>
       nvmecontrol    perftest	 <-n   num_threads>   <-o   read|write>	  [-p]
		   <-s size_in_bytes> <-t time_in_sec> <namespace-id>
       nvmecontrol reset <device-id>
       nvmecontrol logpage <-p page_id>	[-x] [-v vendor-string]	[-b] [-f  LSP]
		   [-i LSI] [-r] <device-id | namespace-id>
       nvmecontrol ns active <device-id>
       nvmecontrol ns allocated	<device-id>
       nvmecontrol ns attach <-n nsid> <-c cntid> <device-id>
       nvmecontrol ns attached <-n nsid> <device-id>
       nvmecontrol ns controllers <device-id>
       nvmecontrol ns create <-s nsze> [-c ncap] [-f lbaf] [-m mset] [-n nmic]
		   [-p pi] [-l pil] [-L	flbas] [-d dps]	<device-id>
       nvmecontrol ns delete <-n nsid> <device-id>
       nvmecontrol ns detach <-n nsid> <-c cntid> <device-id>
       nvmecontrol ns identify [-v] [-x] <-n nsid> <device-id>
       nvmecontrol nsid	<device-id | namespace-id>
       nvmecontrol  resv  acquire  <-c crkey> [-p prkey] <-t rtype> <-a	racqa>
		   <namespace-id>
       nvmecontrol resv	 register  [-i]	 [-c  crkey]  <-k  nrkey>  <-r	rrega>
		   [-p cptpl] <namespace-id>
       nvmecontrol   resv   release   <-c   crkey>   <-t   rtype>  <-a	rrela>
		   <namespace-id>
       nvmecontrol resv	report [-e] [-v] [-x] <namespace-id>
       nvmecontrol firmware [-s	slot] [-f path_to_firmware] [-a] <device-id>
       nvmecontrol format [-f fmt] [-m	mset]  [-p  pi]	 [-l  pil]  [-E]  [-C]
		   <device-id |	namespace-id>
       nvmecontrol sanitize <-a	sanact>	[-c owpass] [-d] [-p ovrpat] [-r] [-I]
		   [-U]	<device-id>
       nvmecontrol power [-l] [-p -power_state]	[-w -workload_hint]
       nvmecontrol selftest <-c	code> <device-id | namespace-id>
       nvmecontrol wdc cap-diag	[-o -path_template] <device-id>
       nvmecontrol wdc drive-log [-o -path_template] <device-id>
       nvmecontrol wdc get-crash-dump [-o -path_template] <device-id>
       nvmecontrol admin-passthru [args] <device-id>
       nvmecontrol io-passthru [args] <namespace-id>

DESCRIPTION
       NVM  Express  (NVMe) is a storage protocol standard, for	SSDs and other
       high-speed storage devices over PCI Express.

   devlist
       List all	NVMe controllers and namespaces	along with their device	nodes.
       With the	-h argument, use  unit	suffixes:  Byte,  Kibibyte,  Mebibyte,
       Gibibyte,  Tebibyte and Pebibyte	(based on powers of 1024) when showing
       the disk	space.	By default, uses Mebibyte.

   identify
       The  identify   commands	  reports   information	  from	 the   drive's
       IDENTIFY_CONTROLLER   if	  a   device-id	  is  specified.   It  reports
       IDENTIFY_NAMESPACE data if a namespace-id is specified.	When used with
       disk names, the IDENTIFY_NAMESPACE data is reported, unless  the	 name-
       space  nsid is overridden with the -n flag.  Then that namespace's data
       is reported, if it exists.  The command accepts the  following  parame-
       ters:

       -n      The namespace <nsid> to use instead of the namespace associated
	       with  the  device.   A  nsid  of	 "0"  is  used to retrieve the
	       IDENTIFY_CONTROLLER data	associated with	that drive.

   logpage
       The logpage command knows how to	print log pages	of various types.   It
       also  knows  about vendor specific log pages from hgst/wdc, samsung and
       intel.  Note that some vendors use the same log page numbers  for  dif-
       ferent data.

       Page 0x01  Drive	Error Log
       Page 0x02  Health/SMART Data
       Page 0x03  Firmware Information
       Page 0x04  Changed Namespace List
       Page 0x05  Commands Supported and Effects
       Page 0x06  Device Self-test
       Page 0x80  Reservation Notification
       Page 0x81  Sanitize Status
       Page 0xc1  Advanced SMART information (WDC/HGST)
       Page 0xc1  Read latency stats (Intel)
       Page 0xc2  Wite latency stats (Intel)
       Page 0xc5  Temperature stats (Intel)
       Page 0xca  Advanced SMART information (Intel)
       Page 0xca  Extended SMART information (Samsung)

       Specifying  -v  help  will  list	 all valid vendors and pages.  -x will
       print the page as hex.  -b will print the binary	data for the page.  -s
       will set	Log Specific Field.  -i	will set Log Specific Identifier.   -r
       will set	Retain Asynchronous Event.

   ns
       Various namespace management commands.  If namespace management is sup-
       ported  by  device, allow list, create and delete namespaces, list, at-
       tach and	detach controllers to namespaces.  Each	NVM device consists of
       one or more NVM subsystems.  Each NVM subsystem has  one	 or  more  NVM
       ports.	Each  NVM  port	 is  attached  to  one or more NVM controllers
       (though typically 1).  Each NVM controller is attached to one  or  more
       namespaces.

       After  a	namespace is created, it is considered "allocated".  All name-
       spaces that have	not been created are unallocated.  An allocated	 name-
       space  may  be  active or inactive.  An active namespace	is attached to
       the controller and may be interacted with.  A namespace can  move  from
       active  to  inactive  when  detached.   An  allocated  namespace	may be
       deleted to become unallocated.  For more	details	on the nuances of  NVM
       namespaces,  please see section 2 Theory	of Operation and section 3 NVM
       Express Architecture of the latest NVM standard.

   ns active
       Provide a list of active	namespace identifiers for the givne  NVM  con-
       troller.

   ns allocated
       Provide	a  list	 of  allocated namespace identifiers for the givne NVM
       controller.

   ns attach
       Attach an nsid to a controller.	The primary controller is used if  one
       is not specified.

   ns attached
       Provide	a list of controllers attached to a nsid.  If only a nvme con-
       troller argument	is provided, a nsid must also be specified.

   ns controllers
       Provide a list of all controllers in the	NVM subsystem.

   ns create
       Creates a new namespace.

   ns delete
       Delete a	namespace.  It must be currently inactive.

   ns detach
       Detach a	namespace from a controller.  The namespace will become	 inac-
       cessible, but its contents will remain if it is activated again.

   ns identify
       Print detailed information about	the namespace.

   nsid
       Reports	the  namespace	id  and	 controller device associated with the
       <namespace-id> or <device-id> argument.

   resv	acquire
       Acquire or preempt namespace reservation, using specified parameters:

       -a      Acquire action:
	       0       Acquire
	       1       Preempt
	       2       Preempt and abort

       -c      Current reservation key.

       -p      Preempt reservation key.

       -t      Reservation type:
	       1       Write Exclusive
	       2       Exclusive Access
	       3       Write Exclusive - Registrants Only
	       4       Exclusive Access	- Registrants Only
	       5       Write Exclusive - All Registrants
	       6       Exclusive Access	- All Registrants

   resv	register
       Register, unregister or replace reservation key,	using specified	 para-
       meters:

       -c      Current reservation key.

       -k      New reservation key.

       -r      Register	action:
	       0       Register
	       1       Unregister
	       2       Replace

       -i      Ignore Existing Key

       -p      Change Persist Through Power Loss State:
	       0       No change to PTPL state
	       2       Set  PTPL  state	 to  0.	 Reservations are released and
		       registrants are cleared on a power on.
	       3       Set PTPL	state to 1.  Reservations and registrants per-
		       sist across a power loss.

   resv	release
       Release or clear	reservation, using specified parameters:

       -c      Current reservation key.

       -t      Reservation type.

       -a      Release action:
	       0       Release
	       1       Clean

   resv	report
       Print reservation status, using specified parameters:

       -x      Print reservation status	in hex.

       -e      Use Extended Data Structure.

   format
       Format either specified namespace, or all namespaces of specified  con-
       troller,	using specified	parameters:

       -f fmt	 The  index  fmt  of  the parameters to	use.  LBA Format #, as
		 specified  in	the  identification  of	 the  namespace	 using
		 "nvmecontrol  identify"  command  with	 a namespace specified
		 maps this index into these parameters.

       -m mset	 Metadata Setting.  mset
		 0	 do not	transfer metadata with LBA information
		 1	 Transfer the metadata as part of the extended LBA in-
			 formation.

       -p pi	 Protection Information.
		 0	 Protection Information	not enabled.
		 1	 Type 1	information protection enabled.
		 2	 Type 2	information protection enabled.
		 3	 Type 3	information protection enabled.

       -l pil	 Protection Information	Location.
		 0	 Transfer the protection metadata as the last N	 bytes
			 of the	transfer.
		 1	 Transfer the protection metadata as the first N bytes
			 of the	transfer.

       -E	 Enables  User	Data  Erase  during format.  All users data is
		 erased	and subsequent reads are indeterminate.	 The drive may
		 implement this	as a cryptographic erase or it may  physically
		 erase the underlying media.

       -C	 Enables  Cryptographic	Erase during format.  All user data is
		 erased	 cryptographically by  deleting	 the  encryption  key,
		 rendering it unintelligible.

       When  formatting	 specific  namespace,  existing	values are used	as de-
       faults.	When formatting	all namespaces,	all parameters should be spec-
       ified.  Some controllers	may not	support	formatting or erasing specific
       or all namespaces.  The nvme(4) driver does not currently support meta-
       data and	protection information transfers.

   sanitize
       Sanitize	NVM subsystem of specified controller, using specified parame-
       ters:

       -a operation
	       Specify the sanitize operation to perform.

	       overwrite	 Perform an overwrite operation	by  writing  a
				 user  supplied	data pattern to	the device one
				 or more times.	 The pattern is	given  by  the
				 -p argument.  The number of times is given by
				 the -c	argument.

	       block		 Perform a block erase operation.  All the de-
				 vice's	 blocks	 are  set  to a	vendor defined
				 value,	typically zero.

	       crypto		 Perform a cryptographic erase operation.  The
				 encryption keys are changed  to  prevent  the
				 decryption of the data.

	       exitfailure	 Exits a previously failed sanitize operation.
				 A  failed  sanitize operation can only	be ex-
				 ited if it was	run in the  unrestricted  com-
				 pletion mode, as provided by the -U argument.

       -c passes
	       The  number of passes when performing an	`overwrite' operation.
	       Valid values are	between	1 and 16.  The default is 1.

       -d      No Deallocate After Sanitize.

       -I      When performing an `overwrite' operation, the  pattern  is  in-
	       verted between consecutive passes.

       -p pattern
	       32 bits of pattern to use when performing an `overwrite'	opera-
	       tion.  The pattern is repeated as needed	to fill	each block.

       -U      Perform	the  sanitize in the unrestricted completion mode.  If
	       the  operation  fails,  it  can	later  be  exited   with   the
	       `exitfailure' operation.

       -r      Run  in "report only" mode.  This will report status on a sani-
	       tize that is already running on the drive.

   power
       Manage the power	modes of the NVMe controller.

       -l      List all	supported power	modes.

       -p mode
	       Set the power mode to mode.  This must be a  mode  listed  with
	       the
		     nvmecontrol power -l
	       command.

       -w hint
	       Set the workload	hint for automatic power mode control.
	       0       No workload hint	is provided.
	       1       Extended	 idle  period  workload.   The device is often
		       idle for	minutes	at a time.  A burst of write  commands
		       comes in	over a period of seconds.  Then	the device re-
		       turns to	being idle.
	       2       Heavy  sequential  writes.  A huge number of sequential
		       writes  will  be	 submitted,  filling  the   submission
		       queues.
	       Other   All  other  values  are	reserved  and have no standard
		       meaning.
	       Please see the "NVM Subsystem Workloads"	section	of  the	 rele-
	       vant NVM	Express	Base Standard for details.

   selftest
       Start the specified device self-test:

       -c code
	       Specify the device self-test command code.  Common codes	are:
	       0x1     Start a short device self-test operation
	       0x2     Start an	extended device	self-test operation
	       0xe     Start a vendor specific device self-test	operation
	       0xf     Abort the device	self-test operation

   wdc
       The  various  wdc  command  retrieve log	data from the wdc/hgst drives.
       The -o flag specifies a path template to	use to output the files.  Each
       file takes the path template (which defaults to nothing),  appends  the
       drive's	serial	number	and  the  type of dump it is followed by .bin.
       These logs must be sent to the vendor for  analysis.   This  tool  only
       provides	a way to extract them.

   passthru
       The  "admin-passthru"  and "io-passthru"	commands send NVMe commands to
       either the administrative or the	data part of the device.   These  com-
       mands  are expected to be compatible with nvme-cli.  Please see the NVM
       Express Base Standard for details.

       -o --opcode opcode
			 Opcode	to send.

       -2 --cdw2 value	 32-bit	value for CDW2.

       -3 --cdw3 value	 32-bit	value for CDW3.

       -4 --cdw10 value	 32-bit	value for CDW10.

       -5 --cdw11 value	 32-bit	value for CDW11.

       -6 --cdw12 value	 32-bit	value for CDW12.

       -7 --cdw13 value	 32-bit	value for CDW13.

       -8 --cdw14 value	 32-bit	value for CDW14.

       -9 --cdw15 value	 32-bit	value for CDW15.

       -l --data-len	 Length	of the data for	I/O (bytes).

       -m --metadata-len
			 Length	of the metadata	segment	for  command  (bytes).
			 This is ignored and not implemented in	nvme(4).

       -f --flags	 Nvme command flags.

       -n --namespace-id
			 Namespace ID for command (Ignored).

       -p --prefill	 Value to prefill payload with.

       -b --raw-binary	 Output	in binary format (otherwise a hex dump is pro-
			 duced).

       -d --dry-run	 Do not	actually execute the command, but perform san-
			 ity checks on it.

       -r --read	 Command reads data from the device.

       -s --show-command
			 Show all the command values on	stdout.

       -w --write	 Command writes	data to	the device.

       Send  arbitrary	commands to the	device.	 Can be	used to	extract	vendor
       specific	logs.  Transfers to/from the device possible, but  limited  to
       MAXPHYS	bytes.	 Commands  either read data or write it, but not both.
       Commands	needing	metadata are not supported by the nvme(4) drive.

DEVICE NAMES
       Where <namespace-id> is required, you can use either the	 nvmeXnsY  de-
       vice,  or  the disk device such as ndaZ or nvdZ.	 The leading /dev/ may
       be omitted.  Where <device-id> is required,  you	 can  use  either  the
       nvmeX  device,  or  the disk device such	as ndaZ	or nvdZ.  For commands
       that take an optional <nsid> you	can use	it to get information on other
       namespaces, or to query the drive itself.  A <nsid> of "0" means	 query
       the drive itself.

EXAMPLES
	     nvmecontrol devlist

       Display	a list of NVMe controllers and namespaces along	with their de-
       vice nodes.

	     nvmecontrol identify nvme0
	     nvmecontrol identify -n 0 nvd0

       Display a human-readable	summary	of the nvme0 IDENTIFY_CONTROLLER data.
       In this example,	nvd0 is	connected to nvme0.

	     nvmecontrol identify -x -v	nvme0ns1
	     nvmecontrol identify -x -v	-n 1 nvme0

       Display an hexadecimal dump of the nvme0	 IDENTIFY_NAMESPACE  data  for
       namespace 1.

	     nvmecontrol perftest -n 32	-o read	-s 512 -t 30 nvme0ns1

       Run  a performance test on nvme0ns1 using 32 kernel threads for 30 sec-
       onds.  Each thread will issue a single 512 byte read command.   Results
       are printed to stdout when 30 seconds expires.

	     nvmecontrol reset nvme0
	     nvmecontrol reset nda4

       Perform	a controller-level reset of the	nvme0 controller.  In this ex-
       ample, nda4 is wired to nvme0.

	     nvmecontrol logpage -p 1 nvme0

       Display a human-readable	summary	of the nvme0 controller's Error	Infor-
       mation Log.  Log	pages defined by the NVMe specification	include	 Error
       Information  Log	 (ID=1),  SMART/Health	Information  Log  (ID=2),  and
       Firmware	Slot Log (ID=3).

	     nvmecontrol logpage -p 0xc1 -v wdc	nvme0

       Display a human-readable	summary	of the nvme0's	wdc-specific  advanced
       SMART data.

	     nvmecontrol logpage -p 1 -x nvme0

       Display	a hexadecimal dump of the nvme0	controller's Error Information
       Log.

	     nvmecontrol logpage -p 0xcb -b nvme0 > /tmp/page-cb.bin

       Print the contents of vendor specific page 0xcb as binary data on stan-
       dard out.  Redirect it to a temporary file.

	     nvmecontrol firmware -s 2 -f /tmp/nvme_firmware nvme0

       Download	the firmware image contained in	"/tmp/nvme_firmware" to	slot 2
       of the nvme0 controller,	but do not activate the	image.

	     nvmecontrol firmware -s 4 -a nvme0

       Activate	the firmware in	slot 4 of the nvme0 controller on the next re-
       set.

	     nvmecontrol firmware -s 7 -f /tmp/nvme_firmware -a	nvme0

       Download	the firmware image contained in	"/tmp/nvme_firmware" to	slot 7
       of the nvme0 controller and activate it on the next reset.

	     nvmecontrol power -l nvme0

       List all	the current power modes.

	     nvmecontrol power -p 3 nvme0

       Set the current power mode.

	     nvmecontrol power nvme0

       Get the current power mode.

	     nvmecontrol identify -n 0 nda0

       Identify	the drive data associated with the nda0	 device.   The	corre-
       sponding	nvmeX devices is used automatically.

	     nvmecontrol identify nda0

       Get the namespace parameters associated with the	nda0 device.  The cor-
       responding nvmeXnsY device is used automatically.

	     nvmecontrol format	-f 2 -m	0 -p 0 -l 0 -C nvme2

       Format  all  the	name spaces on nvme2 using parameters from "LBA	Format
       #2" with	no metadata or protection data using cryptographic erase.   If
       the "nvmecontrol	identify -n 1 nvme2" command ended with

       LBA  Format  #00:  Data Size:   512  Metadata Size:     0  Performance:
       Good LBA	Format #01: Data Size:	 512  Metadata	Size:	   8   Perfor-
       mance:  Good  LBA  Format  #02:	Data Size:  4096  Metadata Size:     0
       Performance: Good LBA Format #03:  Data	Size:	4096   Metadata	 Size:
       8   Performance:	 Good LBA Format #04: Data Size:  4096	Metadata Size:
       64  Performance:	Good

     then this would give a 4k data format for at least	namespace 1,  with  no
     metadata.

DYNAMIC	LOADING
       The  directories	 /lib/nvmecontrol  and	/usr/local/lib/nvmecontrol are
       scanned for any .so files.  These files are loaded.  The	members	of the
       top linker set are added	to the top-level commands.  The	members	of the
       logpage linker set are added to the logpage parsers.

SEE ALSO
       The  NVM	  Express   Base   Specification,   https://nvmexpress.org/wp-
       content/uploads/NVM-Express-1_4-2019.06.10-Ratified.pdf,	June 10, 2019.

HISTORY
       The nvmecontrol utility appeared	in FreeBSD 9.2.

AUTHORS
       nvmecontrol was developed by Intel and originally written by Jim	Harris
       <jimharris@FreeBSD.org>.

       This man	page was written by Jim	Harris <jimharris@FreeBSD.org>.

FreeBSD	13.2			  May 3, 2024			NVMECONTROL(8)

NAME | SYNOPSIS | DESCRIPTION | DEVICE NAMES | EXAMPLES | DYNAMIC LOADING | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nvmecontrol&sektion=8&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help