If PVE can do iSCSI against a “real” storage array (e.g. EMC, Pure, NetApp) then it can use a TrueNAS system as well. iSCSI is iSCSI is iSCSI – it’s either compliant with RFC7143 or it’s not iSCSI.
The issue here is, unfortunately, not a lack of compliance with the iSCSI standard itself, exactly. It took a while to unravel exactly why this is so complicated. A few points:
- There are multiple standards/protocols to talk to an iSCSI target. Proxmox’s builtin “ZFS over iSCSI” storage type implements a subset of them. See: Storage: ZFS over ISCSI - Proxmox VE
This backend accesses a remote machine having a ZFS pool as storage and an iSCSI target implementation via ssh. For each guest disk it creates a ZVOL and, exports it as iSCSI LUN. This LUN is used by Proxmox VE for the guest disk.
The following iSCSI target implementations are supported:
LIO (Linux)
IET (Linux)
ISTGT (FreeBSD)
Comstar (Solaris)
- First issue: TrueNAS uses an iSCSI target implementation that is not on that list, and has no plans to implement one of the target implementations on the list.
Result: An unofficial, separate TrueNAS-compatible iSCSI storage plugin for Proxmox was created and maintained by TheGrandWazoo on GitHub.
- Second issue: iX does not officially support third party software accessing TrueNAS and running ZFS commands. It bypasses the TrueNAS “middleware,” which means TrueNAS itself isn’t aware of changes being made to the underlying ZFS pool, which can lead to unpredictable results. As much as possible, the TrueNAS API must be used to access the middleware to do ZFS operations.
- Third issue: TrueNAS 24.10/25.04 depreciated the old API that the previous Proxmox TrueNAS plugin used, breaking TheGrandWazoo’s plugin.
Result: Using TheGrandWazoo’s plugin as inspiration, a new project has implemented a TrueNAS-compatible ZFS-over-iSCSI plugin for Proxmox that is compatible with TrueNAS 24.10 and 25.04 and uses the current TrueNAS API. It’s currently in alpha testing, and not quite feature complete–a bit more work needs to be done to finish stripping out the SSH commands.