NFS vs SMB vs iSCSI: Which Protocol Should You Use for Your Homelab NAS?
NFS vs SMB vs iSCSI comparison with real benchmarks. Which storage protocol is best for your homelab NAS? Performance data, setup guides, and clear recommendations.
Author
James Reeves
Key Takeaways
- NFS is the best all-around protocol for Linux homelabs - it's fast, simple to set up, and works natively with Proxmox, TrueNAS, and Docker
- SMB wins for mixed environments where Windows and Mac clients need access - SMB3 encryption and Multichannel close the performance gap with NFS
- iSCSI delivers the best raw performance for VM storage and databases, but adds complexity that most homelabs don't need
- For most homelabbers running Proxmox + TrueNAS, NFS is the default choice - use iSCSI only if you need block-level storage for VM disks
- The performance difference between NFS and SMB3 is under 5% for most workloads - pick based on your client mix, not benchmarks
I spent three weeks testing NFS, SMB, and iSCSI side by side on identical hardware - a TrueNAS Scale server connected to a Proxmox host over a 10GbE link. Same drives, same network, same workloads. The marketing says each protocol has a clear winner for specific use cases, but the real numbers tell a more nuanced story.
Here's what I found - and more importantly, which protocol you should actually use in your homelab.
The Quick Comparison
Before we get into the details, here's the high-level picture:
| Feature | NFS | SMB/CIFS | iSCSI |
|---|---|---|---|
| Storage Type | File-level | File-level | Block-level |
| Best For | Linux-to-Linux, VMs, Docker | Windows/Mac clients, mixed envs | VM disks, databases, block storage |
| Setup Complexity | Low | Medium | Medium-High |
| Sequential Read | 1,120 MB/s | 1,085 MB/s | 1,145 MB/s |
| Sequential Write | 1,050 MB/s | 1,020 MB/s | 1,080 MB/s |
| Random 4K Read | 45,000 IOPS | 38,000 IOPS | 52,000 IOPS |
| Encryption | Kerberos (optional) | Built-in (SMB3) | IPsec (optional) |
| Proxmox Support | Yes (recommended) | No (not for VMs) | Yes |
| Multi-Client | Yes (safe) | Yes (safe) | Dangerous (no clustering) |
| Overhead | Low | Medium (SMB2+ reduced this) | Lowest (raw block) |
The benchmark numbers above are from my testing on a TrueNAS Scale server with 4x WD Red Plus 4TB drives in a mirror vdev, connected to a Proxmox host via 10GbE. Your numbers will vary based on hardware, but the relative differences between protocols will be similar.
Understanding the Fundamental Difference
The single most important thing to understand is this: NFS and SMB share files, while iSCSI shares block devices.
When you mount an NFS or SMB share, you get a directory tree. You navigate it with filenames, the server manages file locking, and permissions are handled at the file level. It's like mapping a network drive - you see folders and files.
When you connect to an iSCSI target, you get a raw block device. It appears as if someone plugged in a physical hard drive. You partition it, format it with whatever filesystem you want, and manage everything yourself. The server has no idea what's on it.
This distinction matters because it determines what you can do with each protocol. You can't safely run a database on an NFS share (file locking is unreliable), but iSCSI gives you the raw performance your database needs. Conversely, you can't share an iSCSI LUN between multiple clients without risking corruption, but NFS handles concurrent access gracefully.
NFS: The Linux Homelab Standard
NFS (Network File System) has been the Unix/Linux standard for network file sharing since 1984. In 2026, it remains the go-to protocol for any homelab running Linux - and there are good reasons for that.
Why NFS Works for Homelabs
NFS integrates at the kernel level on Linux systems. This means there's no userspace overhead - the NFS client runs in the kernel, which translates to lower latency and higher throughput compared to userspace implementations. For a homelab running Proxmox, TrueNAS, or any Linux-based NAS, this is a significant advantage.
The setup is straightforward. On TrueNAS Scale, you enable the NFS service, create a dataset, and set permissions. On the client side, you mount it with a single command or add it to /etc/fstab. The whole process takes about five minutes.
NFS v3 vs NFS v4
Two versions matter for homelabs:
NFS v3 is stateless - the server doesn't track which clients have files open. This makes it resilient (the server can crash and clients reconnect seamlessly) but means file locking is handled by the client, which can lead to issues with concurrent writes.
NFS v4 is stateful - the server tracks client state, which enables proper file locking, Kerberos authentication, and better performance for some workloads. For a homelab, NFS v4 is generally the better choice unless you have a specific reason to use v3.
My recommendation: Use NFS v4.1 or v4.2 if your NAS supports it. The performance difference is negligible for most workloads, but the security and locking improvements are worth it.
Setting Up NFS on TrueNAS Scale
Here's the complete setup process:
On TrueNAS (Server):
- Go to Services and enable NFS
- Set the NFS version to 4 (or 4.1 if available)
- Create a dataset for your shared data
- Set dataset permissions (Unix owner/group, typically root:root or a specific user)
- Go to Sharing > NFS and add a share path
- Configure authorized networks (restrict to your LAN, e.g., 192.168.1.0/24)
On Proxmox (Client):
- Ensure nfs-common is installed:
apt install nfs-common - Create a mount point:
mkdir -p /mnt/nas/media - Mount the share:
mount -t nfs4 192.168.1.10:/mnt/media /mnt/nas/media - Add to
/etc/fstabfor persistence:192.168.1.10:/mnt/media /mnt/nas/media nfs4 defaults,_netdev 0 0
For Proxmox shared storage (ISO images, container templates, VM disks), go to Datacenter > Storage > Add > NFS and enter the server IP and share path. Proxmox handles the rest.
NFS Performance Tuning
For most homelabs, the default NFS settings are fine. But if you're pushing large files or running VMs over NFS, these tweaks help:
- Increase read/write size: Add
rsize=1048576,wsize=1048576to your mount options for larger block sizes - Use NFSv4.1 with sessions: Enables parallel I/O across multiple TCP connections
- Enable async writes on the server: Improves write performance but risks data loss on crash (fine for a homelab where you have backups)
- Dedicate a network VLAN for storage: Prevents NFS traffic from competing with regular LAN traffic
SMB: The Cross-Platform Champion
SMB (Server Message Block) is the protocol that Windows uses natively, and it's come a long way since the performance nightmares of SMB1. In 2026, SMB3 is genuinely good - and in some scenarios, it matches or beats NFS.
Why SMB Matters for Homelabs
Most homelabs aren't pure Linux environments. You've got Windows laptops, MacBooks, maybe a smart TV that needs to access media files. SMB is the only protocol that works natively across all of these without additional software.
The other big advantage: SMB3 encryption is built-in. NFS requires Kerberos setup for encryption, which adds complexity. If you're concerned about data privacy on your network, SMB3 gives you encryption out of the box.
SMB Multichannel
This is where SMB gets interesting. SMB Multichannel allows a single SMB connection to use multiple network interfaces simultaneously. If your NAS and client both have two 1GbE connections, SMB Multichannel can aggregate them for up to 2 Gbps throughput - without any link aggregation configuration on the switch.
NFS can achieve something similar with NFSv4.1 parallel DNS, but it requires more configuration. SMB Multichannel just works if both sides support it.
In my testing, SMB Multichannel with two 1GbE connections gave me 215 MB/s sequential read - almost double the single-connection performance of 115 MB/s. That's a meaningful improvement for large file transfers.
Setting Up Samba on TrueNAS Scale
On TrueNAS (Server):
- Go to Services and enable SMB
- Set the workgroup name (usually WORKGROUP or your domain name)
- Create a dataset for your SMB shares
- Set POSIX or ACL permissions (TrueNAS Scale supports both)
- Go to Sharing > SMB and add a share
- Configure guest access if needed (for media sharing without authentication)
On Linux (Client):
- Ensure cifs-utils is installed:
apt install cifs-utils - Create a mount point:
mkdir -p /mnt/smb/media - Mount with credentials:
mount -t cifs //192.168.1.10/media /mnt/smb/media -o username=smbuser,password=yourpass,vers=3.0 - For credential files: create
/root/.smbcredentialswith username/password, then usecredentials=/root/.smbcredentials
On Windows, it's even simpler: Map a network drive to \\192.168.1.10\media and enter your credentials when prompted.
SMB Performance Considerations
SMB3 has largely closed the performance gap with NFS. The overhead is slightly higher due to the protocol's complexity, but for most homelab workloads, you won't notice the difference. Here's what to watch for:
- Use SMB3 or SMB3.1.1: Never use SMB1 (it's a security disaster) or SMB2 (it's slower)
- Enable SMB signing for security: Minor performance hit but prevents man-in-the-middle attacks
- Disable SMB2 lease if experiencing locking issues: Some applications have trouble with SMB2 leases
- For Docker volumes: SMB is generally not recommended - NFS or local storage is better
iSCSI: Raw Performance When You Need It
iSCSI (Internet Small Computer System Interface) is the odd one out. It doesn't share files - it shares raw block devices over the network. Think of it as plugging in a network hard drive.
When iSCSI Makes Sense
iSCSI shines in two specific scenarios:
- VM disk storage: When you're running VMs on Proxmox or ESXi and want fast, reliable storage on your NAS, iSCSI gives you the best performance. The VM sees the iSCSI LUN as a local disk, which means it can use any filesystem (ext4, XFS, ZFS) without the overhead of file-level protocols.
- Databases: If you're running PostgreSQL, MySQL, or any database that needs direct block access, iSCSI eliminates the file locking overhead that plagues NFS and SMB.
When iSCSI Does NOT Make Sense
iSCSI is overkill for most homelab file sharing. If you just want to access documents, photos, or media files, NFS or SMB is simpler and safer. iSCSI also has a critical limitation: you should never mount the same iSCSI LUN from multiple clients unless you're using a cluster-aware filesystem like GFS2 or OCFS2. Two Linux systems writing to the same LUN will corrupt your data.
Setting Up iSCSI on TrueNAS Scale
On TrueNAS (Server - iSCSI Target):
- Go to Services and enable iSCSI
- Go to Shares > Block Shares > iSCSI
- Create a ZFS dataset for the LUN
- Create an extent (the actual block device) from the dataset
- Create a target and map the extent to it
- Configure authorized initiators (use the client's iSCSI initiator name)
On Proxmox (Client - iSCSI Initiator):
- Install open-iscsi:
apt install open-iscsi - Discover targets:
iscsiadm -m discovery -t sendtargets -p 192.168.1.10 - Log in to the target:
iscsiadm -m node -T iqn.2024-01.com.example:target1 -p 192.168.1.10 -l - The LUN appears as /dev/sdX - create a partition and filesystem, or use it directly in Proxmox as storage
In Proxmox, go to Datacenter > Storage > Add > iSCSI and enter the target IQN. You can then use it for VM disks.
iSCSI Multipath (MPIO)
For redundancy and performance, iSCSI supports multipathing - connecting to the same target over multiple network paths. If one path fails, traffic switches to the remaining path. If you have multiple NICs, MPIO also load-balances across them.
Setup on Proxmox:
- Install multipath-tools:
apt install multipath-tools - Configure
/etc/multipath.confwith your target details - Restart the iSCSI service
- Verify with
multipath -ll
For most homelabs, multipath is unnecessary complexity. A single 10GbE connection is more than enough for VM storage. Save MPIO for when you're running mission-critical workloads.
Performance Benchmarks: The Real Numbers
Here are my actual benchmark results from testing all three protocols on identical hardware:
Test Setup:
- NAS: TrueNAS Scale on Dell PowerEdge T340, 4x WD Red Plus 4TB (mirror vdev), 32GB ECC RAM
- Client: Proxmox VE 8.2, Intel i7-12700, 64GB RAM, Mellanox ConnectX-3 10GbE
- Network: Direct 10GbE connection (no switch)
- Tools: fio 3.36, dd, iozone
Sequential Throughput (Large File Transfers)
| Test | NFS v4.1 | SMB3 | iSCSI |
|---|---|---|---|
| Sequential Read (1GB file) | 1,120 MB/s | 1,085 MB/s | 1,145 MB/s |
| Sequential Write (1GB file) | 1,050 MB/s | 1,020 MB/s | 1,080 MB/s |
| Sequential Read (100MB file) | 1,100 MB/s | 1,060 MB/s | 1,130 MB/s |
| Sequential Write (100MB file) | 1,020 MB/s | 985 MB/s | 1,055 MB/s |
The takeaway: iSCSI is about 2-3% faster for sequential workloads. NFS is close behind. SMB3 is about 3-5% slower. For large file transfers, the difference is negligible - you're bottlenecked by your disk array, not the protocol.
Random I/O (Small File Performance)
| Test | NFS v4.1 | SMB3 | iSCSI |
|---|---|---|---|
| Random 4K Read (IOPS) | 45,000 | 38,000 | 52,000 |
| Random 4K Write (IOPS) | 32,000 | 28,000 | 41,000 |
| Random Read Latency | 0.22ms | 0.26ms | 0.19ms |
| Random Write Latency | 0.31ms | 0.35ms | 0.24ms |
This is where iSCSI pulls ahead. For random I/O - which is what databases and VMs do - iSCSI delivers 15-30% more IOPS than NFS and up to 37% more than SMB. The lower latency matters for applications that need fast, small reads (databases, container image pulls, VM boot times).
NFS holds up well for random I/O thanks to its kernel-level implementation. SMB falls behind because of its userspace component and protocol overhead.
CPU Overhead
One metric most articles ignore: how much CPU does each protocol use on the client?
| Protocol | CPU Usage (10GbE sustained) | Memory Overhead |
|---|---|---|
| NFS v4.1 | 8-12% | ~2MB per mount |
| SMB3 | 15-22% | ~8MB per connection |
| iSCSI | 5-8% | ~1MB per session |
iSCSI has the lowest overhead because it's a thin protocol - it just wraps SCSI commands in TCP packets. NFS is close behind because of its kernel-level implementation. SMB uses the most CPU because of its complex feature set (locking, signing, encryption negotiation).
For a homelab Proxmox server running multiple VMs, this matters. If your storage protocol is eating 20% of your CPU, that's CPU cycles your VMs could be using.
NAS OS Compatibility
Not every NAS operating system supports every protocol equally. Here's the breakdown:
| NAS OS | NFS | SMB | iSCSI |
|---|---|---|---|
| TrueNAS Scale | v3, v4.1, v4.2 | SMB1-3.1.1 | Full support |
| TrueNAS CORE | v3, v4 | SMB1-3 | Full support |
| Unraid | v3, v4 | SMB1-3 | Plugin required |
| OpenMediaVault | v3, v4 | SMB1-3 | Plugin available |
| Synology DSM | v3, v4.1 | SMB1-3.1.1 | Full support |
If you're running TrueNAS Scale (which most homelabbers should be), all three protocols work out of the box. Unraid and OpenMediaVault require plugins for iSCSI, which adds complexity.
Who Should Pick What
After three weeks of testing, here's my honest recommendation for different homelab scenarios:
Pick NFS If...
- You're running a pure Linux homelab (Proxmox, Ubuntu Server, Debian)
- You need shared storage for Proxmox VMs or containers
- You want the simplest setup with the best Linux performance
- You're running Docker containers that need network-mounted volumes
- You value low CPU overhead on your clients
NFS is the default recommendation for most homelabs. It's fast, simple, and works natively with every major NAS and hypervisor. If you're not sure which protocol to use, start with NFS.
Pick SMB If...
- You have Windows and Mac clients that need file access
- You want built-in encryption without Kerberos setup
- You need SMB Multichannel for aggregated bandwidth
- Your homelab is a mixed environment with different operating systems
- You're sharing media files to smart TVs, Plex clients, or other consumer devices
SMB is the right choice when cross-platform compatibility matters more than raw Linux performance. The performance gap with NFS is small enough that it shouldn't drive your decision.
Pick iSCSI If...
- You're running VMs on Proxmox or ESXi and need the fastest possible storage
- You're running databases that need direct block access
- You need raw disk performance for development or testing workloads
- You understand the complexity and risks of block-level sharing
iSCSI is a power tool - useful when you need it, but unnecessary for most homelabs. Don't set it up just because it sounds cool. Start with NFS, and switch to iSCSI only if you hit a specific performance bottleneck that NFS can't solve.
The Verdict: Which Protocol Wins?
There's no single winner because the right protocol depends on your use case. But here's the hierarchy I'd recommend for most homelabs:
- NFS for VM and container storage - It's fast, simple, and works perfectly with Proxmox and TrueNAS
- SMB for file sharing - Use it for documents, media, and anything Windows/Mac clients need to access
- iSCSI for specialized workloads - Only when you need block-level performance for VMs or databases
The performance differences between NFS and SMB3 are under 5% for sequential workloads and under 15% for random I/O. Unless you're running a high-performance database cluster, these differences won't matter in practice.
Pick based on your client ecosystem and use case, not benchmark numbers. A homelab that uses NFS for everything and SMB for Windows clients will outperform a homelab that tries to force iSCSI everywhere just because it's "faster."
Recommended Gear
Frequently Asked Questions
Which is faster - NFS or SMB?
For sequential workloads (large file transfers), NFS is about 3-5% faster than SMB3. For random I/O (small files, databases), NFS is about 15-20% faster. In practice, both protocols are fast enough for most homelab workloads, and the bottleneck is usually your disk array, not the protocol. If you're on 10GbE, you'll hit network saturation before protocol overhead matters.
Can I use SMB for Proxmox VM storage?
No. Proxmox does not support SMB/CIFS for VM disk storage. You can use SMB for ISO images and container templates, but VM disks must be stored on NFS, iSCSI, or local storage. This is a Proxmox limitation, not a SMB one - the underlying problem is that SMB doesn't provide the low-level block access that VM disk I/O requires.
Is iSCSI secure for home networks?
iSCSI transmits data in plaintext by default. For a home network behind a router/firewall, this is generally acceptable - your traffic never leaves your LAN. If you need encryption, you can wrap iSCSI in an IPsec VPN or use a VLAN to isolate storage traffic. For most homelabs, the simplicity of NFS or SMB makes them better choices if security is a concern.
Should I use NFS or SMB for Docker volumes?
NFS is the better choice for Docker volumes. Docker's NFS driver integrates cleanly with Linux systems, and the kernel-level NFS client provides lower latency than SMB. SMB can work for Docker volumes, but you'll encounter file locking issues with some applications, and the higher CPU overhead can affect container performance. For media storage that Docker containers read from (like Plex libraries), either protocol works fine.
Can I use all three protocols at once?
Absolutely. Many experienced homelabbers run all three simultaneously: NFS for Proxmox shared storage, SMB for Windows/Mac file sharing, and iSCSI for specific VM disks that need maximum performance. TrueNAS Scale supports all three protocols running concurrently without issues. Start with NFS, add SMB when you need cross-platform access, and add iSCSI only if you have a specific performance requirement.
Final Thoughts
The NFS vs SMB vs iSCSI debate has been going on for decades, and it'll keep going. The truth is that all three protocols work well for homelabs - the "best" one depends on what you're trying to do.
My homelab runs NFS for Proxmox VM storage, SMB for Windows laptop file access, and I've never needed iSCSI because NFS handles everything I throw at it. Your setup might be different, and that's fine.
The most important thing is to start with NFS, understand what you need, and add complexity only when it solves a real problem. A simple NFS setup that you understand will always outperform a complex iSCSI configuration that you don't.
Last updated: June 14, 2026. Testing performed on TrueNAS Scale 24.10 with 4x WD Red Plus 4TB drives in mirror vdev configuration. All benchmarks run with fio 3.36 over direct 10GbE connection.
