iSCSI & NVMe-oF Volumes
Export ZFS volumes (ZVOLs) as block storage to application servers via iSCSI or NVMe over Fabrics (NVMe-oF/TCP). Used for databases, virtualization, and any workload requiring raw block devices.
Access
Section titled “Access”- Volumes & Pools — Create ZVOLs (Zpools tab > New ZVOL)
- Mappings — Map volumes to controllers and hosts
- Hosts — Define application servers
- iSCSI — Monitor iSCSI targets, sessions, and connections
- Configure Server > iSCSI — Configure portal groups and targets
- Configure Server > NVMET — Configure NVMe-oF portal groups and subsystems
Workflow
Section titled “Workflow”- Create a ZVOL (see ZFS Pools & Datasets)
- Define the application server (host)
- Create a volume mapping to a controller (iSCSI or NVMe-oF)
- Bind (activate) the mapping
- Connect from the client
Define an Application Server (Host)
Section titled “Define an Application Server (Host)”Navigate to Hosts and click New:
| Field | Description |
|---|---|
| Host Name | Label for the application server |
| Type | iSCSI, NVMeF (NVMe over Fabrics), or FC (Fibre Channel) |
| IP Address | Client IP address |
| iSCSI Name | IQN (for iSCSI hosts) |
| Host NQN | NQN (for NVMe-oF hosts) |
iSCSI Configuration
Section titled “iSCSI Configuration”Set Up Portal Groups
Section titled “Set Up Portal Groups”Navigate to Configure Server > iSCSI:
-
Create a portal group with the server IP and port:
- Portal group tag (integer)
- Portal IP addresses
-
Create an iSCSI target:
- Target node name (IQN format:
iqn.2017-08.com.zettalane:storage.node1) - Portal group assignment
- Optional CHAP authentication (user/password)
- Target node name (IQN format:
Create an iSCSI Volume Mapping
Section titled “Create an iSCSI Volume Mapping”Navigate to Mappings and click New:
| Field | Description |
|---|---|
| Volume | ZVOL to export |
| Controller | iscsi |
| Target ID | Target identifier |
| LUN | Logical Unit Number (or auto) |
| Node Name | iSCSI IQN |
| Access | Restrict to specific host (optional) |
| Cluster ID | For HA configurations |
Click Bind to activate.
Connect an iSCSI Client (Linux)
Section titled “Connect an iSCSI Client (Linux)”# Install initiatorsudo yum install iscsi-initiator-utils # RHEL/Rockysudo apt install open-iscsi # Ubuntu
# Discover targetsiscsiadm -m discovery -t sendtargets -p <VIP>:3260
# Login to targetiscsiadm -m node -T iqn.2017-08.com.zettalane:storage.node1 \ -p <VIP>:3260 --login
# VerifylsblkConnect an iSCSI Client (Windows)
Section titled “Connect an iSCSI Client (Windows)”- Open iSCSI Initiator (Control Panel > Administrative Tools)
- Enter the target IP (VIP address)
- Click Quick Connect
- Select the target and click Connect
NVMe-oF Configuration
Section titled “NVMe-oF Configuration”Set Up Portal Groups
Section titled “Set Up Portal Groups”Navigate to Configure Server > NVMET:
-
Create a portal group with VIP and port:
- Portal group tag
- Portal addresses (e.g.,
10.1.1.91:4420)
-
Create an NVMe subsystem:
- Subsystem NQN (e.g.,
nqn.2019-05.com.zettalane:mayascale-data-node-1) - Portal group assignment
- Optional authentication (user/password)
- Subsystem NQN (e.g.,
Create an NVMe-oF Volume Mapping
Section titled “Create an NVMe-oF Volume Mapping”Navigate to Mappings and click New:
| Field | Description |
|---|---|
| Volume | ZVOL to export |
| Controller | nvmet |
| Target ID / Port | Portal group identifier |
| LUN | Namespace number (or auto) |
| Node Name | NVMe subsystem NQN |
| Access | Restrict to specific host (optional) |
| Cluster ID | For HA configurations |
Click Bind to activate.
Connect an NVMe-oF Client (Linux)
Section titled “Connect an NVMe-oF Client (Linux)”# Load the NVMe-TCP kernel modulesudo modprobe nvme-tcp
# Discover available targetsnvme discover -t tcp -a <VIP> -s 4420
# Connect to a targetnvme connect -t tcp \ -n nqn.2019-05.com.zettalane:mayascale-data-node-1 \ -a <VIP> -s 4420
# Verifynvme list
# Disconnectnvme disconnect -n nqn.2019-05.com.zettalane:mayascale-data-node-1Connect an NVMe-oF Client (Windows)
Section titled “Connect an NVMe-oF Client (Windows)”Windows requires the StarWind NVMeoF Initiator (free):
# Discover targetsStarNVMeoF_Ctrl.exe discovery_tcp <TARGET_IP> <CLIENT_IP>
# Connect to targetStarNVMeoF_Ctrl.exe insert_tcp <TARGET_IP> <CLIENT_IP> <NQN> <HOST_NQN>
# DisconnectStarNVMeoF_ctrl remove <CONTROLLER_ID>Monitoring
Section titled “Monitoring”The iSCSI panel in the sidebar provides read-only monitoring:
- Targets — Active iSCSI targets with IQN, target ID, LUN count
- Initiators — Known iSCSI initiators
- Sessions — Active sessions with initiator name, IP, connection parameters
- Connections — Active connections with header/data digest, segment sizes
# --- Hosts ---
# Create an iSCSI hostmayacli create host dbserver iscsiname=iqn.2024-01.com.example:dbserver \ ipaddress=10.0.1.50
# Create an NVMe-oF hostmayacli create host appserver nqn=nqn.2024-01.com.example:appserver \ ipaddress=10.0.1.51
# Show hostsmayacli show host
# --- iSCSI ---
# Create iSCSI portal groupmayacli create iscsi portalgroup=1 portal="10.1.1.91 10.1.1.95"
# Create iSCSI targetmayacli create iscsi \ nodename=iqn.2017-08.com.zettalane:storage.node1 \ portalgroup=1,2
# Create iSCSI target with CHAP authenticationmayacli create iscsi \ nodename=iqn.2017-08.com.zettalane:storage.node1 \ user=testuser password=testpass portalgroup=1
# Show iSCSI targets and sessionsmayacli show iscsimayacli show iscsi targetsmayacli show iscsi sessionsmayacli show iscsi connections
# Delete iSCSI targetmayacli delete iscsi nodename=iqn.2017-08.com.zettalane:storage.node1
# --- NVMe-oF ---
# Create NVMe-oF portal groupmayacli create nvmet portalgroup=1 portal="10.1.1.91:4420"
# Create NVMe subsystemmayacli create nvmet \ nodename=nqn.2019-05.com.zettalane:mayascale-data-node-1 \ portalgroup=1,2
# Show NVMe-oF targets and sessionsmayacli show nvmetmayacli show nvmet targetsmayacli show nvmet sessions
# Delete NVMe subsystemmayacli delete nvmet nodename=nqn.2019-05.com.zettalane:mayascale-data-node-1
# --- Volume Mappings ---
# Map a ZVOL to iSCSImayacli create mapping volume=tank/vol1 controller=iscsi lun=0 \ targetid=1 nodename=iqn.2017-08.com.zettalane:storage.node1 \ access=dbserver
# Map a ZVOL to NVMe-oFmayacli create mapping volume=tank/vol1 controller=nvmet lun=1 \ targetid=1 nodename=nqn.2019-05.com.zettalane:mayascale-data-node-1 \ access=appserver
# Bind (activate) a mappingmayacli bind mapping volume=tank/vol1
# Unbind (deactivate) a mappingmayacli unbind mapping volume=tank/vol1
# Show all mappingsmayacli show mapping
# Delete a mappingmayacli delete mapping volume=tank/vol1 controller=iscsiSee CLI Guide for the full command reference.