NVMe-oF Share Screens

The NVMe-oF screens provide access to screens, widgets, 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 Widget

The NVMe-oF Subsystems widget shows on the Shares screen. The header shows the status of the NVMe service as Stopped or Running, the Add button, and the more_vert dropdown menu with two options:

  • Turn Service On/Off toggle. 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 that 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 table in the NVMe-oF Subsystems widget lists each subsystem added in TrueNAS.

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.

The more_vert dropdown menu for each subsystem shows two options:

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

Delete Subsystem Dialog

The Delete Subsystem dialog confirms you want to delete the subsystem before it is deleted from the TrueNAS system.

Delete Subsystem Dialog
Figure 2: Delete Subsystem Dialog

Force forces the delete operation if it is in use.

Cancel closes the dialog without deleting the subsystem.

Delete removes the subsystem from the TrueNAS system.

NVMe-oF Screen

The NVMe-oF screen displays a table listing subsystems (targets) added to Truenas, and a set of Details widgets for the subsystem selected in the table. Shares on top breadcrumb returns you to the Shares screen.

Before adding an NVMe-oF subsystem, the NVMe-oF screen shows a general widget 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.

After adding a subsystem, the NVMe-oF screen Subsystem table lists it. The first row of the table is selected by default and shows four Details widgets for that subsystem. Select the row of any listed subsystem to view the detail widgets for that subsystem.

Subsystems Table

The NVMe-oF screen Subsystem table lists subsystems added to TrueNAS. 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 widgets until these are added.

Details Widgets

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

Details Widget

The Details widget 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 Widget
Figure 5: Subsystem Details Widget
Settings
SettingDescription
NameShows 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.
NQNThe NVMe Qualified Name (NQN) that identifies the subsystem, includes the base NQN and name of the subsystem. The edit edit icon changes the NQN ID to a text-entry field. It accepts copy/paste of a new properly formatted NQN ID number.

Namespaces Widget

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

Subsystem Namespaces Widget
Figure 6: Subsystem Namespaces Widget

Add opens the Add Namespace screen.

Edit opens the Edit Namespace screen.

Delete opens a confirmation dialog for the namespace.

Ports Widget

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

Subsystem Ports Widget
Figure 7: Subsystem Ports Widget

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. After removing a port, the Add button dropdown list shows the removed port and all available ports on the system in the format IP address:port.

Associated Hosts Widget

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

Subsystem Associated Hosts Widget
Figure 8: Subsystem Associated Hosts Widget

After adding a host, the widget 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 Widget with a Host
Figure 9: Associated Hosts Widget 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 that 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

Set system-wide NVMe-oF settings. Config Service on the NVMe-oF Subsystem widget 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 Scree
Settings
SettingDescription
Base NQNText-entry field that shows the TrueNAS NVMe NQN identification number and accepts manual or copy/paste entry of a 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)When enabled, 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)When enabled, allows configuring one or more ports after enabling and selecting RDMA as the transport. It requires an Enterprise license, and 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 SystemWhen enabled, allows 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 widget 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 allows configuring the subsystem and adding a namespace.

Add Subsystem What to Share Screen
Figure 11: Add Subsystem What to Share Screen
Settings
SettingDescription
Subsystem NameText-entry field for 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 changes to a text-entry field that allows manually entering an NVMe Qualified Name (NQN) that is used to identify the subsystem. TrueNAS creates an NQN using the base NQN shown on the NVMe-oF Global Configuration screen.
AddOpens the Add Namespaces screen.

Access

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

Add Subsystem Access Screen
Figure 12: Add Subsystem Access Screen

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

Add Subsystem Access with Allowed Hosts
Figure 13: 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 and Edit Namespace Screens

The Add Namespace and Edit Namespace screens show the same settings and options. 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 widget on the NVMe-oF screen opens the Add Namespaces screen. The edit edit icon on the Namespaces widget opens the Edit Namespaces screen.

Add Namespace Screen
Figure 14: Add Namespace Screen

These screens have three tabs:

Zvol Tab

The Zvol tab on the Edit Namespace screen allows selecting an existing or creating a new zvol namespace. There are two Path to Zvol fields: the blank field and the file browser field. The top blank field populates with the path for the existing zvol or parent dataset selected using the file browser field below it.

Edit Namespace Zvol Tab
Figure 15: Edit Namespace Zvol Tab

Create Zvol only shows on the Zvol tab. It activates after selecting the parent dataset in the file browser field. It opens the Add Zvol screen.

Existing File Tab

The Existing File tab on the Edit Namespace allows selecting an existing file as a namespace. 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.

Edit Namespace Existing File Tab
Figure 16: Edit Namespace Existing File Tab

New File Tab

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

Edit Namespace New File Tab
Figure 17: Edit Namespace New File Tab
Settings
SettingDescription
Parent DirectoryShows 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.
FilenameText-entry field for the name of the file. Names can consist of upper and lower case alphabetic, numeric, and special characters such as the dash (-), underscore (_), ampersand (&), at (@), or hashtag (#).
File SizeText-entry field for the storage capacity (size) you want to grant this file.

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

Delete Namespace Dialog

The Delete Namespace opens after clicking the delete icon to the right of a zvol on the Namespaces widget.

Delete Namespace Dialog
Figure 18: 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 19: Delete Namespace and File Dialog

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
Figure 20: Add Zvol Screen
Settings
SettingDescription
NameText-entry field for the name given to the zvol. Best practice is to enter a short name that does not exceed 63 characters to prevent issues with accessing the zvol. Names can consist of upper and lower case alphabetic, numeric, and special characters such as the dash (-), underscore (_), ampersand (&), at (@), or hashtag (#), etc.
SizeText-entry field to specify the size and value allocated to the file. For example, enter 10 GiB.
Force sizeWhen enabled, the system restricts creating a zvol that brings the pool to over 80% capacity. Set to force creation of the zvol (not recommended).
SparseEnables using thin provisioning where disk space for this volume is allocated on demand as new writes are received. Use caution when enabling this feature, as writes can fail when the pool is low on space.
SyncSets the data write synchronization. Options are:
  • Inherit takes the sync settings from the parent dataset.
  • Standard uses the settings requested by the client software.
  • Always waits for data writes to complete.
  • Disabled never waits for writes to complete.
  • CompressionEncodes information in less space than the original data occupies. We recommend choosing a compression algorithm that balances disk performance with the amount of saved space. LZ4 is generally recommended because it maximizes performance and dynamically identifies the best files to compress. GZIP options range from 1 for least compression and best performance, through 9 for maximum compression with greatest performance impact. ZLE is a fast algorithm that only eliminates runs of zeroes.
    ZFS DeduplicationTransparently reuses a single copy of duplicated data to save space. 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!
    Read-onlyWhen enabled, it prevents modifying the zvol.
    Block sizeShows a dropdown list of options to set the zvol default block size. Block size is automatically chosen based on the number of disks in the pool for a general use case.
    SnapdevDropdown list of options to control whether the volume snapshot devices under /dev/zvol/⟨pool⟩ are hidden or visible. The default value is Inherit (hidden).

    Encryption Settings

    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, this shows Inherit (encrypted).

    Clearing the checkbox shows the Encryption Type setting with two options: Key and Passphrase. Each option shows different setting options.

    Add Zvol Encryption
    Figure 21: Add Zvol Encryption

    Key Type Settings

    The Key settings accept a system-generated or user-entered encryption key. Creating a new key file invalidates the previously downloaded key file associated with this dataset. Shows with Generate Key selected by default. This automatically generates an encryption key for the zvol. Clearing the checkmark shows the additional key encryption settings.

    Add Zvol Key Encryption
    Figure 22: Add Zvol Key Encryption
    Settings
    SettingDescription
    Generate KeyRandomly generates an encryption key to secure the zvol. Disable to manually enter an encryption key.

    WARNING: The encryption key is the only means to decrypt the information stored in this zvol. Store the encryption key in a secure location.
    KeyText-entry field that accepts manually entering or copy/pasting an alpha-numeric string to use as the encryption key for this zvol.
    AlgorithmDropdown list of mathematical instruction sets that determine how plain text is converted into cipher text. See [Advanced Encryption Standard (AES)(https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)] for more details.

    Passphrase Type Settings

    The Passphrase settings set encryption to a passphrase of your choice to encrypt the data in the zvol.

    Add Zvol Passphrase Encryption
    Figure 23: Add Zvol Passphrase Encryption
    Settings
    SettingDescription
    PassphraseText-entry field that accepts manual or copy/paste of a user-defined string that decrypts the zvol. Use instead of an encryption key.

    WARNING: The passphrase is the only means to decrypt the information stored in this dataset. Be sure to create a memorable passphrase or physically secure the passphrase.
    Confirm PassphraseConfirms the user-defined string entered in Passphrase. Entries must match.
    pbkdf2itersThe pencil icon shows a dropdown list of options to set the number of password-based key derivation function 2 (PBKDF2) iterations to reduce vulnerability to brute-force attacks. Entering a number larger than 100000 is required. See PBKDF2 for more details.
    AlgorithmThe pencil icon shows dropdown list of options to set the mathematical instruction that determine how plain text is converted into cipher text. See Advanced Encryption Standard (AES) for more details.

    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 24: Add Host Screen

    Require Host Authentication shows the additional setting options.

    Add Host Screen Require Authentication
    Figure 25: Add Host Screen Require Authentication
    Settings
    SettingDescription
    Host NQNText-entry field that accepts manual or copy/paste of 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 AuthenticationWhen selected/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.
    HashShows 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 PresentThe 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 KeyPopulates the Key For Host To Present field with a TrueNAS system-generated DH-CHAP key for the host.
    Key For TrueNAs To Present (Optional)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 26: Hosts Dialog

    Add New opens the Add Host screen.

    Edit opens the Edit Host screen.

    Delete opens a delete confirmation dialog for the port.

    Delete Host Dialog

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

    Delete Host Dialog
    Figure 27: 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

    by subsystems. Ports are formatted as IP address:port.

    Add Port Screen
    Figure 28: 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.
    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 29: Edit Port Screen
    Settings
    SettingDescription
    Transport TypeDropdown list of options for 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.
    PortText-entry field that shows the current port assignment and allows manual or copy/past entry of a new port number.
    AddressDropdown list that shows the current static IP address assignment and any other static IP on the system 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 30: Ports Dialog

    Add New opens the Add Port screen.

    Edit opens the Edit Port screen.

    Delete opens a delete confirmation dialog for the port.

    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 widget 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 31: 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.