← All projects

Setting up iSCSI on TrueNAS for my Steam library

How I configured a TrueNAS iSCSI target over a dedicated 10GbE connection and presented it to my gaming PC as a local disk for Steam — with jumbo frames and write caching tuned for game workloads.


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:

  1. Discovery tab → Discovery Portal → enter 192.168.10.1 → OK
  2. Targets tabsteam-target should appear → Connect
  3. 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 + Rdiskmgmt.msc):

  1. A new ~2.7TB disk appears as Unknown / Unallocated
  2. Right-click → Initialise Disk → select GPT → OK
  3. Right-click the unallocated space → New Simple Volume → Next
  4. Use full available space → Next
  5. Assign drive letter G: → Next
  6. Format settings:
    File system:          NTFS
    Allocation unit size: 65536 (64K — optimal for large game files)
    Volume label:         Steam-NAS
    
  7. 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 → PropertiesPolicies 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

  1. Open Steam → Settings → Storage
  2. Click + and browse to G:
  3. 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.