NVME(4D) Devices NVME(4D)

NAME


nvme - Intel NVMe compliant storage driver

DESCRIPTION


The nvme driver uses the blkdev(4D) framework to provide access to NVMe
compliant solid-state storage devices. All NVMe version 1.x and 2.X
devices are supported.

NVMe devices supporting multiple namespaces will present each namespace
as its own blkdev(4D) instance in the system.

CONFIGURATION


The nvme driver can be configured by defining properties in the
nvme.conf file. The parameters are considered an unstable interface,
subject to change without notice. The following properties are
currently supported:

strict-version
This can be set to 0 to allow nvme to attach to devices
supporting newer version of the NVMe specification. The
default value is 1, limiting nvme to work with devices
that support major version 1 or 2.

ignore-unknown-vendor-status
This can be set to 1 to allow nvme to continue operating
even if it receives an unknown vendor command status.

admin-queue-len
This is the number of entries in the admin command queue.
Legal values are between 16 and 4096, the default value
is 256.

io-squeue-len
This is the number of entries in each I/O submission
queue. Legal values are between 16 and 65536, the
default value is 1024.

io-cqueue-len
This is the number of entries in each I/O completion
queue. Legal values are between 16 and 65536, the
default value is 2048. When the number of submission and
completion queues are the same, the queue lengths will be
both set to the lesser of io-squeue-len and
io-cqueue-len.

async-event-limit
This is the maximum number of asynchronous event requests
issued by the driver. Asynchronous events are used to
report error conditions. The driver will never use more
asynchronous events than this value, or what the hardware
supports if it is less, or 1/10th of the admin queue
length if it is less.

volatile-write-cache-enable
This property can be set to 0 to disable the volatile
write cache, if the hardware supports it. The default
setting is 1, which enables the volatile write cache.

min-phys-block-size
This is the minimum physical block size that is reported
to blkdev(4D). This value must be a power of 2 greater
than or equal to 512. If the device reports a best block
size larger than what is specified here the driver will
ignore the value specified here.

max-submission-queues
This is the maximum number of submission queues the
driver will create per device. Legal values are between
1 and 65535, the default is to match the number for
max-completion-queues. The number of queues created will
not be allowed to exceed the drive's hardware limitation.
If the number of submission queues is larger than
max-completion-queues the completion queues will be
shared across the submission queues.

max-completion-queues
This is the maximum number of completion queues the
driver will create per device. Legal values are between
1 and 65535, the default is to match the number of
interrupt vectors allocated to the drive. The number of
queues created will not exceed the number of interrupt
vectors, max-submission-queues, or the drive's hardware
limitation.

In addition to the above properties, some device-specific tunables can
be configured in nvme.conf using the nvme-config-list global property.
The value of this property is a list of triplets. The formal syntax
is:

nvme-config-list ::= <triplet> [, <triplet>]* ;
<triplet> ::= "<model>" , "<rev-list>" , "<tuple-list>"
<rev-list> ::= [<fwrev> [, <fwrev>]*]
<tuple-list> ::= <tunable> [, <tunable>]*
<tunable> ::= "<name>" : "<value>"

The <model> and <fwrev> are the strings that are returned in the "Model
Number" and "Firmware Revision" fields, respectively, in the "Identify
Controller" data structure as returned by the "IDENTIFY" command.
Specifying a <rev-list> is optional, an empty string ("") may be used
instead.

The <tuple-list> contains one or more tunables to apply to all
controllers that match the specified model number and optional firmware
revisions. Each <tunable> is a <name> : <value> pair. Supported
tunable names are:

ignore-unknown-vendor-status
Similar to the global property, this property accepts a
boolean value specified as either "on", "off", "true", or
"false" to enable or disable the driver continuing
operation even if it receives an unknown vendor command
status from a controller.

min-phys-block-size
Same as the global property, this is the minimum physical
block size that is reported to blkdev(4D). This value
must be a power of 2 greater than or equal to 512. If
the device reports a best block size larger than what is
specified here the driver will ignore the value specified
here.

volatile-write-cache
Similar to the global property
volatile-write-cache-enable, this property accepts a
boolean value specified as either "on", "off", "true", or
"false" to enable or disable the volatile write cache, if
the hardware supports it. By default the volatile write
cache is enabled.

FILES


/dev/dsk/cntnd0sn Block device minor nodes.
/dev/rdsk/cntnd0sn Raw block device minor nodes.

In the device minor nodes, the following substitutions may occur:

cn A controller number, typically one for each nvme
device found. Controller numbers are dynamically
assigned by the system.

tn The target number. This is the namespace EUI64 if
available, or the namespace ID used by the
hardware. Namespace ID 0 is reserved, hence target
numbers start with 1.

sn This is the slice number, representing a subset of
the disk. See dkio(4I).

SEE ALSO


blkdev(4D)

illumos August 27, 2023 illumos

tribblix@gmail.com :: GitHub :: Privacy