TrueNAS
Products
Support & Resources
Solutions
Company
Sign In
TrueNASTrueNAS Development Documentation
This content follows experimental development changes in TrueNAS 27, a future version of TrueNAS.
Use the Product and Version selectors above to view content specific to a stable software release.

NVMe-oF Share Screens

The NVMe-oF screens provide access to screens, cards, settings, and dialogs to add, manage, or delete NVMe over Fabric subsystems (targets). NVMe-oF (NVMe over Fabric) is a specification that extends NVMe storage access over network fabrics like Ethernet, Fibre Channel, and InfiniBand. It allows hosts to access NVMe storage remotely while maintaining the high performance and low latency benefits of NVMe.

NVMe-oF Subsystems Card

The NVMe-oF Subsystems card shows on the Shares screen. The header shows the status of the NVMe service as Stopped or Running, and opens the NVMe-oF screen.

Add opens the Add Subsystem screen.

The more_vert dropdown menu options are:

  • Turn Service On/Off toggle - Turns the service on or off. You can also turn the service on/off from the System > Services screen or set it to automatically restart after a system restart.
  • Config Service - Opens the NVMe-oF Global Configuration screen. You can access this configuration screen by going to System > Services or using the Global Configuration button on the NVMe-oF screen.
NVMe-oF Screen without Subsystems
Figure 1: NVMe-oF Screen without Subsystems

The NVMe-oF Subsystems card table lists subsystems added in TrueNAS. Each table row shows the subsystem name, the number of namespaces associated with the subsystem, the number of ports available through the subsystem, and the number of hosts allowed or restricted from accessing the subsystem.

The subsystem more_vert dropdown menu options are:

  • View - Opens the NVMe-oF screen showing the cards for the selected subsystem.
  • Delete - Opens Delete Subsystem dialog.

Delete Subsystem Dialog

The Delete Subsystem dialog shows the name of the subsystem and asks for confirmation before it deletes the subsystem from TrueNAS.

Delete Subsystem Dialog
Figure 2: Delete Subsystem Dialog

Force forces the delete operation if the subsystem has a port or host associated with it.

Cancel closes the dialog without deleting the subsystem.

Delete removes the subsystem from the TrueNAS system.

NVMe-oF Screen

The NVMe-oF screen shows a table listing subsystems (targets) added to Truenas, and a set of Details cards for the subsystem selected in the table. The screen opens with the first subsystem in the table selected and showing the cards for that subsystem. Subsystem cards show the information for the table row selected.

Shares on top breadcrumb returns you to the Shares screen.

Before adding an NVMe-oF subsystem, the NVMe-oF screen shows a general card with information about subsystems and a basic comparison to iSCSI.

NVMe-oF Screen without Subsystems
Figure 3: NVMe-oF Screen without Subsystems

Global Configuration opens the NVMe-oF Global Configuration screen.

Add Subsystem opens the Add Subsystem screen.

Subsystems Table

The NVMe-oF screen Subsystem table lists subsystems added to TrueNAS.

Search in the Subsystems table header row filters the subsystems listed in the table to match the entered text.

Each row shows the subsystem name, the number of namespaces associated with the subsystem, the number of ports available through the subsystem, and the number of hosts allowed or restricted from accessing the subsystem.

NVMe-oF Screen with Subsystems
Figure 4: NVMe-oF Screen with Subsystems

TrueNAS allows adding a subsystem without configuring a namespace, port, or host, which can be added later. An report_problem alert icon shows beside the namespace name in the table and on the Ports and Namespaces cards until these are added.

Details Cards

Each subsystem shows a group of Details for subsystemName cards on the right side of the screen, subsystemName is the name given to the subsystem (i.e., test). Subsystem cards are:

Details Card

The Details card shows the name and NQN ID associated with the TrueNAS subsystem. The NQN shows an edit edit icon that changes the NQN to a text-entry field.

Subsystem Details Card
Figure 5: Subsystem Details Card
Settings
SettingDescription
NameSpecifies an identifier using alphanumeric and allowed special characters with no spaces. Shows the name given to the subsystem at creation. The edit edit icon opens an edit field. Names can consist of upper and lower case alphabetic, numeric, and special characters such as the dash (-), underscore (_), etc.
NQNShows the NVMe Qualified Name (NQN) genterated by TrueNAS that identifies the subsystem. It includes the base NQN and the name of the subsystem. The edit edit icon changes the NQN ID to a text-entry field that accepts copy/paste of a new properly formatted NQN ID number.

Namespaces Card

The Namespaces card lists namespaces (zvol or file) added to the subsystem and the path to it. Namespaces are similar to iSCSI extents.

Subsystem Namespaces Card
Figure 6: Subsystem Namespaces Card

Add opens the Add Namespace screen.

Delete opens a confirmation dialog for the namespace.

Ports Card

The Ports card shows the port type and ID associated with the subsystem.

Subsystem Ports Card
Figure 7: Subsystem Ports Card

The Add button to the right of Ports shows a dropdown list of options:

  • TCP - xx.xxx.x.xxx:#### if a TCP port is assigned this does not show on the list. If a port is not assigned, any available port IP address:port number for a host shows on the list.
  • Create New - Opens the Add Ports screen.
  • Manage Ports - Opens the Ports dialog.

The RemoveFromSubsystem Remove this port from the subsystem icon removes the port from the subsystem but does not delete the port from TrueNAS.

Associated Hosts Card

The Associated Hosts card shows a list of hosts associated with the subsystem. Shows All hosts are allowed if a host is not specified.

Subsystem Associated Hosts Card
Figure 8: Subsystem Associated Hosts Card

After adding a host, the card shows the NQN identification number for the client host and the RemoveFromSubsystem Removes this host from the subsystem icon that only removes the host from the subsystem but does not delete it from TrueNAS.

Associated Hosts Card with a Host
Figure 9: Associated Hosts Card with a Host

Add shows a dropdown list of options:

  • Create New - Opens the Add Host screen.
  • Manage Hosts - opens the Hosts window
  • Allow all hosts - Removes the host from the subsystem but does not delete it. It toggles the Add dropdown list to show the available host NQN hidden by selecting Allow all hosts and removes Allow all hosts from the dropdown list.

NVMe-oF Global Configuration Screen

Configures system-wide NVMe-oF settings. Config Service on the NVMe-oF Subsystem card dropdown menu, Global Configuration on the NVMe-oF screen, and the edit edit icon on the NVMe-oF row on the System > Services screen open the NVMe-oF Global Configuration screen.

NVMe-oF Global Configuration Screen
Figure 10: NVMe-oF Global Configuration Screen
TrueNAS Enterprise

Enterprise systems equipped with the right hardware and license show the SPDK (userspace) and Linux Kernel options that change the NVMe backend. These experimental implementation functions are geared toward experimentation with client compatibility, and are available to try based on your use case if you have issues with certain clients, such as hypervisors that might require specific capabilities that come with the Linux Kernel or SPDK option. Stopping the service enables these options. After selecting, restart the service.

What is the difference between SPDK and Linux Kernel?

Linux Kernel runs in the kernel space (standard Linux drivers). Choose when you need the rich Linux ecosystems features (filesystem, LVM, encryption, snapshots, and standard tools) or when you want maximum compatibility, and if you prefer lower idle CPU and easier power management.

SPDK (Userspace) runs entirely in the user space. Choose when you need maximum performance (lowest latency, highest IOPS/core, best tail latency), when the system has many NVMe drives, if you have high-speed networking (100 GbE+) requirements, and when CPU efficiency under heavy load is critical.

Settings
SettingDescription
Base NQNSpecifies the TrueNAS NVMe NQN identification number, and accepts manual or copy/paste entry of an NQN. It is used as the prefix of a subsystem NQN at creation if a subNQN is not supplied. Modifying this value does not change the subNQN of any existing subsystems.
Enable Asymmetric Namespace Access (ANA)Allows an Enterprise-licensed High Availability (HA) storage system to inform a host about the optimal controller path to access a namespace. It is equivalent to Asymmetric Logical Unit Access (ALUA) in iSCSI. ANA helps storage arrays communicate with hosts and inform the host which controller provides the best (lowest latency) path to specific namespaces, enabling intelligent multipathing and improving performance in NVMe-oF environments.
Enable Remote Direct Memory Access (RDMA)Allows configuring one or more ports after enabling and selecting RDMA as the transport. It requires an Enterprise license, an RDMA-capable system, and network equipment. Inactive on systems without an Enterprise license. If the system does not have the required hardware, it shows Not enabled, because this system does not support RDMA.
Generate Cross-port Referrals for Ports on This SystemAllows xport_referral. If ANA is active, referrals are always generated between the peer ports on each TrueNAS controller node.

Add Subsystem Wizard

The Add Subsystem wizard opens after clicking Add on the NVMe-oF Subsystem card or Add Subsystem on the NVMe-oF screen. The wizard has two parts: What to Share and Access. What to Share shows by default.

What to Share

The What to Share screen settings configure the subsystem and add a namespace.

Add Subsystem What to Share Screen
Figure 12: Add Subsystem What to Share Screen
Settings
SettingDescription
Subsystem NameSpecifies the name of the subsystem. Names can consist of upper and lower case alphabetic, numeric, and special characters such as the dash (-), underscore (_), ampersand (&), at (@), or hashtag (#).
NQNShows Generate from global settings and the edit edit icon. Clicking on the edit edit icon or the text converts the field to text-entry and allows manually entering an NVMe Qualified Name (NQN) used to identify the subsystem. TrueNAS creates an NQN using the base NQN shown on the NVMe-oF Global Configuration screen.

Add to the right of Namespaces opens the Add Namespaces screen.

Access

The Add Subsystem wizard Access screen configures hosts allowed to connect to the subsystem and ports the target uses to communicate with hosts.

Add Subsystem Access Screen
Figure 13: Add Subsystem Access Screen

Allow any host to connect is selected by default. It allows connections to any host. When not selected, it shows the Allow Hosts and Add button that opens the Add Host screen to configure a host.

Add Subsystem Access with Allowed Hosts
Figure 14: Add Subsystem Access with Allowed Hosts

The Add button to the right of Ports shows a dropdown list of options:

  • TCP - xx.xxx.x.xxx:#### if a TCP port is assigned this does not show on the list. If a port is not assigned, any available port IP address:port number for a host shows on the list.
  • Create New - Opens the Add Ports screen.
  • Manage Ports - Opens the Ports dialog.

Save saves changes, creates the subsystem, closes the wizard screen, and returns to the previous screen.

Add Namespace Screens

The Add Namespace screens settings and options create namespaces. Use to select or create the storage device (zvol or file) for the NVMe-oF share.

Add to the right of Namespaces on the What to Share option of the Add Subsystem wizard opens the Add Namespace screen. Add on the Namespaces card on the NVMe-oF screen opens the Add Namespaces screen.

Add Namespace Screen
Figure 15: Add Namespace Screen

The Add Namespace screen has three tabs:

  • Zvol (selected by default) - Adds a zvol.
  • Existing File - Adds an existing file in a dataset or zvol.
  • New File - Creates a new file in the storage location selected.

Zvol Tab

The Zvol tab on the Add Namespace screen allows selecting an existing or creating a new zvol namespace. Path to Zvol has two fields: the blank field that populates with the path manually entered or selected with the file browser, and the file browser field.

Add Namespace Zvol Tab
Figure 16: Add Namespace Zvol Tab

Create Zvol allows adding a new Zvol while selecting the path to the storage location. It opens the Add Zvol screen. It only shows on the Zvol tab and activates after selecting the parent dataset in the file browser field.

Add Zvol Screen

Use to create a new zvol for the namespace to use for storage. Create Zvol on the Add Namespace screen with the Zvol tab selected opens this screen.

Add Zvol Screen Settings

SettingDescription
NameSpecifies a short name for the zvol that is not longer than 63 characters to prevent potential problems accessing zvols as devices. For example, you cannot use a zvol with a 70-character file name or path as an iSCSI extent.
SizeSpecifies a size and value such as 10 GiB. You can include units like t as in TiB, or G. You can increase the size of the zvol later, but you cannot reduce the size. If the size is greater than 80% of the available capacity, the creation fails with an out-of-space error unless you select Force size.

Additional Options

SettingDescription
Force sizeSets the system to restrict creating a zvol that brings the pool to over 80% capacity. When set, forces creation of the zvol (not recommended). By default, the system does not let you create a zvol if that operation brings the pool to over 80% capacity. Setting this overrides this rule.
SparseEnables using thin provisioning where disk space for this volume is allocated on-demand as new writes are received. Use caution when enabling, as writes can fail when the pool is low on space.
CommentsEnter any notes about the zvol. Descriptions show on the iSCSI screens when the zvol is used in a block share.
SyncSets the data write synchronization. Options:
  • Inherit - Gets the sync settings from the parent dataset.
  • Standard - Uses the sync settings requested by the client software.
  • Always - Waits for data writes to complete.
  • Disabled - Never waits for writes to complete.
CompressionSets the compression algorithm. Compression encodes information in less space than the original data occupies. We recommend choosing a compression algorithm that balances disk performance against the amount of space saved. Options:
  • LZ4 - Generally recommended as it maximizes performance and dynamically identifies the best files to compress.
  • ZSTD - Uses the Zstandard compression algorithm. Has several options for balancing speed and compression.
  • Gzip - Has options that range from 1 for least compression with best performance to 9 for maximum compression with greatest performance impact.
  • ZLE - Has a fast algorithm that only eliminates runs of zeroes.
  • LZJB - A legacy algorithm that is not recommended for use.
ZFS DeduplicationSets TrueNAS to transparently reuse a single copy of duplicated data to save space based on the selected option. Options:
  • Inherit - Uses the parent or root dataset settings.
  • On - Uses deduplication.
  • Off - Does not use deduplication.
  • Verify - Performs a byte-to-byte comparison when two blocks have the same signature to verify that the block contents are identical.
Deduplication can improve storage capacity, but it is RAM-intensive. Compressing data is generally recommended before using deduplication. Deduplicating data is a one-way process. Deduplicated data cannot be undeduplicated! Do not change this setting unless instructed to by your TrueNAS support engineer.
Read-onlyAllows or prevents storage volume (zvol, dataset) modification. Inherit ues the the parent setting. On prevents modifying the dataset. Off allows users to access the dataset to modify its contents.
Block sizeSets the zvol default block size. Automatically chosen based on the number of disks in the pool for general use cases. The default is 16KiBt, other options are 4KiB, 8KiB, 16KiB, 32KiB, 64KiB, 128KiB.
SnapdevControls visibility of the volume snapshot devices in the .zfs directory under /dev/zvol/poolname on the dataset. Options are Visible shows the directory, Invisible hides the directory, or Disabled disables access to the directory (default setting).
Use Metadata (Special) VDEVsStores data blocks in a special allocation class (fusion pool) metadata VDEV. Options:
  • Inherit - Uses the parent dataset setting. Displays the inherited value in human-readable form, for example, Inherit (128 KiB) or Inherit (off).
  • On - Enables the special allocation class for this dataset. Shows the Threshold field where you enter the maximum block size to store in the special class. Valid values are 1 byte to 16 MiB. The default threshold is 16 MiB. Blocks smaller than or equal to the threshold are assigned to the special allocation class; larger blocks are assigned to the regular class.
  • Off - Disables storing blocks in the special allocation class.
Before enabling this setting, you must add a metadata special class VDEV to the pool.

Encryption

Encryption settings secure data within this zvol. These settings establish the level and type of encryption applied. The default setting is Inherit (non-encrypted) when the root or parent dataset for the new storage is unencrypted. If encrypted, it shows Inherit (encrypted).

When a zvol is encrypted, Edit on the Encryption card found on the Datesets screen opens a configuration screen where you can change the passphrase for a zvol encrypted with the passphrase type, but you cannot change to a key encryption type. If the zvol is not encrypted, you do not see encryption options on the Edit Zvol screen.

SettingDescription
Inherit (non-encrypted/encrypted)Inherits encryption from the parent dataset when selected. Default setting. Clearing shows the Encryption settings. When the parent is encrypted, this option defaults to Inherit (encrypted); otherwise, it shows (non-encrypted). If the parent is encrypted with the passphrase type, the zvol can only use passphrase encryption. When the parent is encrypted with a key, the zvol can use either key or passphrase encryption. Refer to the Encryption Settings article for more details.
EncryptionSecures data within this zvol. Data is unusable until unlocked with an encryption key or passphrase. If parent dataset has encryption enabled, it is not possible to disable this option. The default encryption type is key. Clearing the Encryption checkmark hides the encryption settings. For detailed encryption configuration and management that covers pool-level encryption settings refer to the ZFS encryption man page, and ZFS key management.

Disabling the inheirt option shows the Encryption Type setting the Key and Passphrase options. Each shows different settings.

SettingDescription
Encryption TypeSets the type of encryptiuon to Key or Passphrase. Key shows key-based encryption settings, a system-generated key field, an option to use a manual entry key, and a key-based encryption algorithms. Passphrase shows text fields for manual or copy/paste entry of a passphrase, and passphrase authentication algorithms.
Generate keySets TrueNAS to generate a random encryption key for securing the dataset. Shows when Encryption Type is set to Key. Clearing this shows the Key field that accepts manual or copy/paste entry of an encryption key.
Warning! The encryption key is the only means to decrypt the information stored in a key-encrypted dataset. Store encryption keys in a secure location! Creating a new key file invalidates a previously downloaded key file (for this dataset). Delete any previous key file backups and back up the new key file.
KeySpecifies a manually entered encryption key string to secure the dataset.
AlgorithmSets the encryption algorithm. Shows a list of mathematical instruction algorithms that determine how plaintext converts into ciphertext for key and passphrase encryption types. See Advanced Encryption Standard (AES) for more details on each option.
Passphrase
Confirm Passphrase
Specifies an alphanumeric string or phrase to secure the dataset.
pbkdf2itersSets the number of password-based key deviation function 2 (PBKDF2) iterations used for reducing vulnerability to brute-force attacks. Entering a number larger than 100000 is required. See PBKDF2 for more details.

Existing File Tab

The Existing File tab on the Add Namespace allows selecting an existing file as a namespace.

Add Namespace Existing File Tab
Figure 21: Add Namespace Existing File Tab

There are two Path to File fields: the blank field and the file browser field. The top blank field populates with the path for the existing file selected using the file browser field below it.

New File Tab

The New File tab on the Add Namespace screen allows creating a new file for a namespace.

Add Namespace New File Tab
Figure 22: Add Namespace New File Tab
Settings
SettingDescription
Parent DirectorySpecifies the path to the dataset or zvol where you intend to add the file. It shows two fields: a blank text-entry field and a file browser field. The top blank field populates with the path to the parent directory selected using the file browser field below it.
FilenameSpecifies the name of the file crated. Names can consist of upper and lower case alphabetic, numeric, and special characters such as the dash (-), underscore (_), ampersand (&), at (@), or hashtag (#).
File SizeSpecifies the storage capacity (size) for this file.

Save saves the settings, closes the screen, and returns to the previous screen.

Delete Namespace Dialog

The Delete Namespace removes the namespace configuration from TrueNAS.

Delete Namespace Dialog
Figure 23: Delete Namespace Dialog

The delete icon to the right of a file opens a Delete Namespace dialog showing the option to delete the file.

Delete Namespace and File Dialog
Figure 24: Delete Namespace and File Dialog

Add and Edit Host Screens

The Add Host screen specifies a host and adds it to a subsystem when the Allow any host to connect option on the Add Subsystem > Access screen is not enabled. The Edit Host screen shows the fields associated with the subsystem and allows you to change the host settings.

Add Host Screen
Figure 25: Add Host Screen

Require Host Authentication shows the additional setting options.

Add Host Screen Require Authentication
Figure 26: Add Host Screen Require Authentication
Settings
SettingDescription
Host NQNSpecifies the unique identifier obtained from the host you allow to access the subsystem. Format of the NQN is nqn.2019-05.com.example:storage-array-01.
Require Host AuthenticationSets TrueNAS to require additional authentication for the host connection. When enabled, shows additional authentication settings: Hash, Key For Host To Present, Key For TrueNAs To Present (Optional), generate keys for each key option, and Also use Diffie-Hellman key exchange for additional security.
HashSets the authentication hash TrueNAS uses for the connection with the assoicated host. Shows the current hash option SHA-256 and the edit edit icon that shows a dropdown list of hash options. Options are SHA-256, SHA0384, and SHA-512.
Key For Host To PresentSets the DH-CHAP key, obtained from the host, to authenticate access to the subsystem. Accepts manual or copy/paste entry of a hash. Use Generate Key directly under the field to have TrueNAS create a key to copy/paste into the host to use as the authentication key for that host.
Generate KeySets TrueNAS to generate the DH-CHAP key for the host. Populates the Key For Host To Present field with this system-generated DH-CHAP key for that host.
Key For TrueNAs To Present (Optional)Specifies the secret key the TrueNAS system presents to the host that further validates the connection between the host and TrueNAS when the host connects to the subsystem (bi-directional authentication). Accepts copy/paste of a key or use the Generate Key directly below this field to populate with a system-generated key. Provide this key to the host connecting with TrueNAS to authenticate the TrueNAS system in the connection authorization.
Generate KeyPopulates the Key For TrueNAS To Present field with a system-generated bi-directional authentication key.
Also use Diffie-Hellman key exchange for additional securityEnables further security through a Diffie–Hellman key exchange. This affords greater authentication security than using only the CHAP keys for authentication.

Hosts Window

The Hosts window shows a table listing the host NQN, if it requires authentication, and the number of subsystems that use it. The host row shows the edit edit icon and the delete delete icons.

Hosts Dialog
Figure 27: Hosts Dialog

Add New opens the Add Host screen.

Edit opens the Edit Host screen.

Delete opens a delete confirmation dialog for the port.

After deleting the host, the Host window shows any remaining assoicated hosts configured in TrueNAS or shows the window with no hosts listed and the Add New button.

Delete Host Dialog

The Delete Host confirmation dialog deletes the host(s) from the listed subsystems listed in the dialog and from TrueNAS.

Delete Host Dialog
Figure 28: Delete Host Dialog

Cancel closes the dialog without removing the host from the subsystem.

Delete Anyway deletes the host from the subsystem(s) specified in the dialog.

Add Port Screen

The Add Port Screen shows settings to add or select a port to associate with the subsystem. Ports are formatted as IP address:port. 4420 is the default port number, commonly selected for NVMe-oF with IP addresses, and we recommend using this port rather than adding a custom port.

Add Port Screen
Figure 29: Add Port Screen
Settings
SettingDescription
Transport TypeSets the transport type. Options are: TCP, RDMA, or Fibre Channel. The RDMA and Fibre Channel options require Enterprise licenses and systems with compatible/supporting hardware.
PortSets the current port assignment. 4420 is the default and recommended port number. We recommend using this port rather than entering a custom port number.
AddressSets an existing static IP address for the port assignment.

Edit Port Screen

The Edit Port screen shows current port settings for the selected subsystem. The edit edit icon on the port row listed on the Ports dialog opens the Edit Port screen.

Edit Port Screen
Figure 30: Edit Port Screen
Settings
SettingDescription
Transport TypeSets the transportation type to the option selected on the dropdown list. Options are TCP, RDMA, or Fibre Channel. The RDMA and Fibre Channel options require Enterprise licenses and systems with compatible/supporting hardware.
PortSpecifies the current port assignment and allows manual or copy/paste entry of a new port number.
AddressSets the port to the current static IP address assignment for the TrueNAS network interface, or any other static IP on the system that the subsystem can use.

Ports Window

The Ports window shows a table showing the port name, type, IP address, communication port number, and the number of subsystems that use it. The port row shows the edit edit icon and the delete delete icon.

Ports Dialog
Figure 31: Ports Dialog

Add New opens the Add Port screen.

Edit opens the Edit Port screen.

Delete opens a delete confirmation dialog for the port.

After deleting the port, the Ports window shows any remaining configured ports, or shows an empty window with the Add New button.

Delete Port Dialog

The Delete Port confirmation dialog removes the port from the selected subsystem but does not delete it from TrueNAS. A deleted port shows on the Add dropdown list on the Ports card for a selected subsystem on the NVMe-oF screen. The dialog shows the name of the subsystem and the assigned IP address:port assignment.

Delete Port Dialog
Figure 32: Delete Port Dialog

Cancel closes the dialog without removing the port from the subsystem. Delete Anyway removes the port assignment from the subsystem specified in the dialog.