Hey all, I’m sure a few of you have seen the plugin we are developing over on Reddit, but I wanted to make a formal post on the forum here to hopefully get more testers and feedback.
The plugin, source code, and documentation is all available here on the Github:
Here is a quick rundown:
- iSCSI Block Storage - Direct integration with TrueNAS SCALE via iSCSI targets
- ZFS Snapshots - Instant, space-efficient snapshots via TrueNAS ZFS
- Live Snapshots - Full VM state snapshots including RAM (vmstate)
- Cluster Compatible - Full support for Proxmox VE clusters with shared storage
- Automatic Volume Management - Dynamic zvol creation and iSCSI extent mapping
- Configuration Validation - Pre-flight checks and validation prevent misconfigurations
- Dual API Support - WebSocket (JSON-RPC) and REST API transports
- Rate Limiting Protection - Automatic retry with exponential backoff for TrueNAS API limits
- Storage Efficiency - Thin provisioning and ZFS compression support
- Multi-path Support - Native support for iSCSI multipathing
- CHAP Authentication - Optional CHAP security for iSCSI connections
- Volume Resize - Grow-only resize with preflight space checks
- Error Recovery - Comprehensive error handling with actionable error messages
- Performance Optimization - Configurable block sizes and sparse volumes
In the future we plan on adding NVMeOF support, automatic snapshot management (similar to Pure Storage “SafeMode” snapshots), API key rotation, and a few other things that you can view in the wiki under “Ideas.md”
The aim of the project is to have TrueNAS be a seamless block storage available to PVE, without all the headaches of doing it manually. Plus to have well put together documentation and guides.
Currently there is a note worthy limitation in TrueNAS itself that prevents reads from reaching their full speed over a single interface. Noted in the known limitation wiki, under the multipath section.
I’m hoping with some discussion here that TrueNAS/iXSystems can implement more knobs for iSCSI tuning on the server side. NVME-oF should in theory not have the same problems, but this has not been implemented into the project yet, but is on the list of features to be added.
If you have any suggestions, feedback, or want to help out please leave comments here or in the discussions board on the Github repo. And for those willing to try it, please try to break it! The more testing that can be done, the more robust the plugin can be! We’ve tried creating tools to help us with development (as found in the tools folder) to make sure all features work as expected. If any part of the documentation is confusing or not clear enough, please let us know!
