I have a TrueNAS box with several terabytes of storage and a gaming PC running out of local SSD space. Rather than buying another drive, I used iSCSI over a dedicated 10GbE connection to present a chunk of TrueNAS storage to the gaming PC as a raw block device. Windows sees it as a local disk, Steam has no idea it’s network storage, and the performance over 10GbE with jumbo frames is indistinguishable from a local SATA SSD.
Why iSCSI over SMB
SMB shares don’t work reliably with Steam — it either refuses to install to them or throws errors mid-game. iSCSI bypasses this by presenting storage at the block level. Windows formats the volume with NTFS and treats it exactly like a locally attached drive. Steam never knows the difference.
Network setup
The iSCSI traffic runs over a dedicated 10GbE link between the TrueNAS box and the gaming PC, isolated from general LAN traffic. The TrueNAS 10GbE NIC is bound to 192.168.10.1 on a dedicated storage subnet. Jumbo frames (MTU 9000) are enabled end-to-end to reduce CPU overhead on large sequential transfers.
TrueNAS configuration
Step 1 — Create a Pool
Navigate to Storage → Create Pool. Configure your drives in your preferred RAID layout (mirror or RAIDZ depending on drive count). Name the pool gamepool.
Step 2 — Create a Dataset
Under the gamepool pool, create a dataset for organisational purposes:
Name: games
Type: Filesystem
Compression: LZ4
Step 3 — Create a Zvol
A Zvol is a block-level dataset — the backing store for iSCSI. Navigate to Storage, click the three dots next to your dataset → Add Zvol:
Name: steam-games
Size: 2.7 TiB
Block size: 4096 (matches the extent logical block size)
Sparse: Enabled (thin provisioning)
The full path will be zvol/gamepool/steam-games.
Step 4 — Set Pool Available Space Threshold
Under pool options, set:
Pool Available Space Threshold: 20
This triggers alerts before the pool fills completely, preventing write failures.
Step 5 — Enable the iSCSI Service
Navigate to Services and enable iSCSI. Set it to start automatically on boot.
Step 6 — Configure iSCSI: Portal
Shares → iSCSI → Portals → Add:
Description: 10gbe-portal
IP Address: 192.168.10.1
Port: 3260
Discovery Auth Method: None
Binding to the specific 10GbE IP rather than 0.0.0.0 ensures iSCSI traffic stays on the dedicated storage interface and doesn’t bleed onto the main LAN.
Step 7 — Configure iSCSI: Initiator Group
Shares → iSCSI → Initiators → Add:
Allow All Initiators: ✅
Description: gaming-pc
Step 8 — Configure iSCSI: Extent
Shares → iSCSI → Extents → Add:
Name: steam-extent
Extent Type: Device
Device: zvol/gamepool/steam-games
Logical Block Size: 4096
Disable Physical Block Size Report: Unchecked
Enable TPC: ✅
RPM: SSD
Setting the logical block size to 4096 aligns with modern drive and filesystem sector sizes, reducing write amplification. TPC (Third Party Copy) enables SCSI XCOPY commands which can speed up large file operations.
Step 9 — Configure iSCSI: Target
Shares → iSCSI → Targets → Add:
Target Name: steam-target
Target Alias: gaming-pc-steam
Portal Group: 10gbe-portal
Initiator Group: gaming-pc
Step 10 — Associate Target with Extent
Shares → iSCSI → Associated Targets → Add:
Target: steam-target
LUN ID: 0
Extent: steam-extent
Windows configuration
Step 1 — Connect via iSCSI Initiator
Open iSCSI Initiator (iscsicpl) on the gaming PC:
- Discovery tab → Discovery Portal → enter
192.168.10.1→ OK - Targets tab →
steam-targetshould appear → Connect - Tick “Add this connection to the list of Favourite Targets” for persistence across reboots
Step 2 — Configure Jumbo Frames on the Windows NIC
In Device Manager → Network Adapters → right-click the 10GbE NIC → Properties → Advanced:
Jumbo Packet: 9014 Bytes (or 9000, depending on NIC)
Verify end-to-end jumbo frame support:
ping 192.168.10.1 -f -l 8972
All replies should succeed. If any fail, MTU is broken somewhere in the path — check the switch port and TrueNAS NIC settings.
Step 3 — Initialise and Format the Disk
Open Disk Management (Win + R → diskmgmt.msc):
- A new ~2.7TB disk appears as Unknown / Unallocated
- Right-click → Initialise Disk → select GPT → OK
- Right-click the unallocated space → New Simple Volume → Next
- Use full available space → Next
- Assign drive letter
G:→ Next - Format settings:
File system: NTFS Allocation unit size: 65536 (64K — optimal for large game files) Volume label: Steam-NAS - Click Next → Finish
The 64K allocation unit size is important for game workloads — game files are typically large sequential reads and writes, so a larger cluster size reduces metadata overhead and improves throughput.
Step 4 — Write Cache Policy
In Disk Management, right-click the iSCSI disk → Properties → Policies tab:
Enable write caching on the device: ✅
Turn off Windows write-cache buffer flushing: ✅
This enables write-back caching which significantly improves write performance. Note: only enable “Turn off buffer flushing” if your TrueNAS box has a UPS — a power loss during a write could result in data corruption without it.
Step 5 — Add Library to Steam
- Open Steam → Settings → Storage
- Click + and browse to
G: - Optionally set it as the default install location
Performance validation
With 10GbE, jumbo frames, and 64K NTFS clusters:
Sequential read: ~900 MB/s
Sequential write: ~750 MB/s
Game load times are indistinguishable from a local NVMe drive for most titles. The main bottleneck is now the TrueNAS ZFS pool itself rather than the network.
Persistence
The iSCSI connection reconnects automatically on Windows boot via Favourite Targets. The G: drive is available within seconds of reaching the desktop. TrueNAS restarts the iSCSI service on boot automatically.