| layout | default |
|---|---|
| title | iSCSI on XCP-ng - GUI Quick Start Guide (Xen Orchestra) |
This guide walks you through configuring iSCSI storage on XCP-ng using Xen Orchestra (XO) web interface with multipathing enabled.
📘 For CLI-based setup: See iSCSI Quick Start (CLI) 📘 For production best practices: See iSCSI Best Practices
{% include quickstart/disclaimer.md %}
- XCP-ng 8.2 or later with Xen Orchestra installed
- iSCSI storage array with:
- Portal IPs (at least 2 for multipathing)
- Target IQN
- LUN/Volume created and mapped to XCP-ng hosts
- Dedicated storage network interfaces configured
- CHAP credentials (if required by your storage array)
{% include quickstart/glossary-link-iscsi.md %}
Before adding iSCSI storage, ensure your storage network interfaces are configured on each host.
- Navigate to Home → Hosts and select your host
- Go to the Network tab
- Identify your storage interfaces
XO Host Network tab showing storage interfaces
- If needed, configure static IPs on storage interfaces via Network → PIFs
- Open XCP-ng Center and connect to your pool
- Select a host → Networking tab
- Configure storage interfaces with static IPs
Multipathing must be enabled at the pool level before adding iSCSI storage.
- Navigate to Home → Pools and select your pool
- Go to the Advanced tab
- Find Multipathing and enable it
XO Pool Advanced tab - Multipathing toggle
- Click Save or apply the changes
If XO doesn't show the multipathing option, use CLI on the pool master:
# Enable multipathing for the pool
xe host-param-set uuid=<HOST_UUID> other-config:multipathing=true
xe host-param-set uuid=<HOST_UUID> other-config:multipathhandle=dmpFor optimal performance with your storage array, configure custom multipath settings.
# Create custom multipath configuration
cat > /etc/multipath/conf.d/custom.conf << 'EOF'
devices {
device {
vendor "PURE"
product "FlashArray"
path_selector "service-time 0"
path_grouping_policy group_by_prio
prio alua
hardware_handler "1 alua"
failback immediate
rr_weight uniform
no_path_retry 0
}
}
EOF
# Restart multipathd
systemctl restart multipathdNote: Adjust the
vendorandproductvalues to match your storage array.
⚠️ CRITICAL for Multi-Subnet/VLAN Architectures:When your storage array uses VLAN tagging or presents iSCSI targets on multiple subnets, each discovery query only returns targets from that specific subnet. To discover ALL paths, you must provide at least one IP from EACH subnet in the Target field.
Example: Pure FlashArray with 2-subnet architecture:
- Subnet A (VLAN 30):
10.10.3.10,10.10.3.11(CT0, CT1)- Subnet B (VLAN 31):
10.10.4.10,10.10.4.11(CT0, CT1)Discovering from
10.10.3.10alone returns only 2 targets (both on VLAN 30). To get all 4 paths, enter:10.10.3.10,10.10.4.10
- Click New → Storage in the top menu
XO New menu showing Storage option
- Select iSCSI as the storage type
- Fill in the iSCSI connection details:
| Field | Value | Description |
|---|---|---|
| Name | Pure-iSCSI-SR |
Descriptive name for the SR |
| Description | Pure FlashArray iSCSI |
Optional description |
| Host | Select pool master | Initial host for discovery |
| Target IPs | 10.10.3.10,10.10.4.10 |
Comma-separated IPs - one from EACH subnet |
| Port | 3260 |
iSCSI port (default: 3260) |
💡 Key Point: The Target IPs field accepts comma-separated values. For multi-subnet architectures, include one IP from each subnet to ensure XO discovers all available paths.
iSCSI SR creation form with connection details
-
Click Discover IQNs or Connect
-
Select the target IQN from the dropdown
- Select the LUN to use
- If CHAP is required, enter credentials:
- Username: Your CHAP username
- Password: Your CHAP secret
Note: CHAP authentication is optional. Skip if not required.
- Click Create
SR reattach confirmation (if existing data found)
- Navigate to Home → SRs (Storage Repositories)
- Find your new iSCSI SR in the list
- Click on it to view details
SR details page showing status and configuration
- Verify the SR shows:
- Status: Connected (green)
- Type: lvmoiscsi
- Shared: Yes (available on all hosts)
- In the SR details, check the Physical Block Devices (PBDs) section
- Each host should show "connected" status
***SR Hosts tab showing multipathing with 4/4 paths per host connected_
Connect to each host via SSH and verify multipath:
# Check multipath status
multipath -ll
# Expected output showing multiple paths:
# 3600... dm-X VENDOR,PRODUCT
# size=100G features='0' hwhandler='1 alua' wp=rw
# |-+- policy='service-time 0' prio=50 status=active
# | |- 1:0:0:1 sda 8:0 active ready running
# | `- 2:0:0:1 sdb 8:16 active ready running
# `-+- policy='service-time 0' prio=10 status=enabled
# |- 3:0:0:1 sdc 8:32 active ready running
# `- 4:0:0:1 sdd 8:48 active ready running***Terminal showing multipath -ll with multiple active paths_
- Click New → VM
- Select your template (e.g., Ubuntu, CentOS)
- In the Disks section, select your new iSCSI SR
***VM creation showing iSCSI SR selected for disk storage_
- Complete the VM creation wizard
- Start the VM and verify it runs correctly
-
Check network connectivity:
ping 10.100.1.10 # Your portal IP nc -zv 10.100.1.10 3260 # Test iSCSI port
-
Check multipath service:
systemctl status multipathd
-
View logs in XO:
- Navigate to Home → Logs
- Filter for storage-related events
-
Check path status:
multipath -ll | grep -E "status|failed"
-
Reinstate paths:
multipathd show paths multipathd reinstate path <device>
-
Restart multipath:
systemctl restart multipathd
| Task | Xen Orchestra Location |
|---|---|
| View SRs | Home → SRs |
| Pool Settings | Home → Pools → Advanced |
| Host Network | Home → Hosts → [Host] → Network |
| Logs | Home → Logs |
| Create VM | New → VM |
# List SRs
xe sr-list
# Check SR status
xe sr-list name-label="Pure-iSCSI-SR"
# Verify multipath
multipath -ll
# Check PBD connections
xe pbd-list sr-uuid=<SR_UUID>- iSCSI Best Practices - Production deployment guidance
- iSCSI CLI Quick Start - Command-line configuration
- NFS Quick Start - Alternative storage protocol
- [Common Troubleshooting]({{ site.baseurl }}/common/troubleshooting-common.html)





