<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Smb on rHomelab</title><link>https://rhomelab.com/tags/smb/</link><description>Recent content in Smb on rHomelab</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://rhomelab.com/tags/smb/index.xml" rel="self" type="application/rss+xml"/><item><title>NFS vs SMB vs iSCSI: Picking the Right Protocol to Share Your Data Hoard</title><link>https://rhomelab.com/data-hoarding/nfs-vs-smb-vs-iscsi-for-data-hoarders/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate><guid>https://rhomelab.com/data-hoarding/nfs-vs-smb-vs-iscsi-for-data-hoarders/</guid><description>A practical comparison of NFS, SMB, and iSCSI for sharing storage out of a home NAS or data-hoarding array: how each one actually works, where each wins, and the mistakes that cause file corruption when they get mixed.</description><content:encoded><![CDATA[<p>Most people pick a sharing protocol by accident. Whatever the NAS web UI defaulted to, or whatever worked the first time they tried mapping a drive on Windows, becomes the permanent choice, usually without anyone asking whether it actually fits the workload. For a media library that mostly gets read by one Jellyfin box, that accident rarely bites. For a Proxmox cluster sharing storage across nodes, or a mixed household of Windows laptops and Linux boxes hitting the same array, the wrong protocol choice shows up later as corrupted files, mysterious permission errors, or a performance ceiling nobody can explain. The three real options, NFS, SMB, and iSCSI, solve different problems, and the right call depends on what&rsquo;s connecting, not what&rsquo;s easiest to click through first.</p>
<h2 id="nfs-the-linux-native-file-sharing-protocol">NFS: the Linux-native file-sharing protocol</h2>
<p>NFS (Network File System) shares files, not blocks, and it&rsquo;s built around the assumption that everything talking to it understands POSIX permissions. A client mounts an NFS export and sees it as if it were a local directory, with the same <code>ls -la</code> output, the same UID/GID ownership model, the same symlink behavior. That&rsquo;s the appeal: it&rsquo;s lightweight, it&rsquo;s been stable for decades, and on a Linux-to-Linux path it has less protocol overhead than SMB, which matters when you&rsquo;re pushing large sequential transfers (media files, backup streams, VM disk images) across a gigabit or faster link.</p>
<p>The catch is exactly that POSIX assumption. NFS doesn&rsquo;t ship its own user database. Permissions are enforced by matching numeric UID and GID between the client and the server, which means if your NAS has <code>plex</code> as UID 1000 and your Proxmox host has a different service running as UID 1000, NFS will happily let that unrelated process read and write files it has no business touching, because as far as NFS is concerned, the numbers match. Keeping UID/GID mappings consistent across every machine that mounts an export is a real operational burden, and it&rsquo;s the single most common cause of &ldquo;why can&rsquo;t I write to this NFS share even though the permissions look fine&rdquo; questions. NFSv4 added Kerberos-based identity mapping to fix this properly, but almost nobody runs it at home because setting up a Kerberos realm for a homelab is its own rabbit hole. In practice, most home NFS deployments either run everything as a shared UID or just accept the exposure on a trusted internal VLAN.</p>
<p>NFS has no concept of a Windows client without extra software, and modern Windows versions dropped the NFS client from default installs entirely. If anything in your household touches storage from Windows or macOS without extra configuration, NFS alone won&rsquo;t cover it.</p>
<p><strong>Where NFS wins:</strong> Linux-to-Linux storage, especially Proxmox or other hypervisors mounting shared storage for VM disks, and any workload where you control every client&rsquo;s UID/GID mapping yourself (a media server pulling from a NAS, a backup job writing to a dedicated target). It&rsquo;s also the simplest shared-storage backend to stand up for Proxmox clustering, which is worth knowing if you&rsquo;ve read the clustering article on this site and are choosing what to put behind it.</p>
<h2 id="smb-the-one-everything-actually-speaks">SMB: the one everything actually speaks</h2>
<p>SMB (also called CIFS in its older incarnation, implemented on Linux via Samba) is the protocol Windows file sharing is built on, and by extension the protocol every consumer OS, phone app, and smart TV has at least some support for. Where NFS assumes a POSIX world, SMB brings its own authentication (usernames and passwords, or AD/LDAP integration for anything beyond a handful of users) and its own ACL model layered on top of whatever the underlying filesystem supports. That makes permission management more self-contained: you create a Samba user, you grant that user access to a share, and it doesn&rsquo;t matter what UID the client machine thinks it&rsquo;s running as, because SMB handles identity at the protocol level instead of trusting numbers from the network.</p>
<p>The tradeoff is overhead. SMB&rsquo;s protocol chattiness, especially on older SMB1/SMB2 implementations, used to make it noticeably slower than NFS for large sequential transfers on the same hardware. Modern SMB3 with multichannel support closes most of that gap on a fast local network, and for anything under 10GbE the difference rarely matters in practice, but on a tuned 10GbE or faster link doing heavy sequential I/O (bulk backups, large media ingests), NFS still tends to edge it out. SMB also does real file locking that Windows applications expect (so two people don&rsquo;t silently clobber the same Office document), which NFS historically handled more loosely.</p>
<p><strong>Where SMB wins:</strong> anything with Windows or macOS clients in the mix, anything accessed by phones/tablets/smart TVs, and any share where you want per-user access control without syncing UID numbers across every machine on the network. For most home data-hoarding setups, where the array gets browsed from a laptop, streamed to a TV app, and occasionally hit from a phone, SMB is the default for a reason, not an accident.</p>
<h2 id="iscsi-block-storage-not-file-storage">iSCSI: block storage, not file storage</h2>
<p>iSCSI is a different category entirely. NFS and SMB hand out files and directories; iSCSI hands out a raw block device over the network, called a LUN (logical unit number), that the client formats and manages itself exactly as if it were a locally attached disk. There&rsquo;s no browsing an iSCSI target in a file manager, no concept of &ldquo;a file&rdquo; at the protocol level at all, just blocks. The client (the initiator) connects to the target (your NAS or storage server) and gets what looks like an empty drive to partition, format, and mount.</p>
<p>That block-level approach has a specific, narrow set of advantages. A single filesystem on top of an iSCSI LUN performs closer to local-disk speeds than either file-sharing protocol, because there&rsquo;s no file-protocol translation layer in the way, just block I/O. It&rsquo;s also the protocol of choice when an application genuinely needs exclusive, low-level access to a device, databases that want direct control over their storage layout, or a Windows failover cluster that needs shared block storage multiple nodes can see.</p>
<p>The real cost is that iSCSI LUNs are normally single-writer. Multiple machines can see the same LUN, but unless you&rsquo;re running a cluster-aware filesystem on top (VMFS-style, or a clustered filesystem like OCFS2 or GFS2) that coordinates writes, two hosts writing to the same LUN at once will corrupt it, because nothing is arbitrating file-level locks the way NFS and SMB do natively. iSCSI also adds real setup complexity: initiators, targets, portals, and on anything beyond a single connection, you&rsquo;re looking at multipath configuration to get redundancy. For a typical home NAS sharing a media library or backup target, iSCSi is usually overkill. It earns its complexity when a specific workload actually needs block-level access or raw performance that file sharing can&rsquo;t deliver, not as a default.</p>
<p><strong>Where iSCSI wins:</strong> shared VM storage behind a hypervisor cluster where you need true block-level performance and you&rsquo;re running a cluster-aware filesystem on top, or any application that explicitly wants a raw block device rather than a file-sharing mount.</p>
<h2 id="the-mistake-serving-the-same-data-over-two-protocols-at-once">The mistake: serving the same data over two protocols at once</h2>
<p>It&rsquo;s tempting to export the same directory over both NFS and SMB so every client type can reach it however it wants. Don&rsquo;t, at least not for anything being written to from both sides. NFS and SMB enforce locking and permissions differently, and a file one client has open and locked under SMB semantics isn&rsquo;t visible as locked to an NFS client touching the same inode, and vice versa. Two processes editing or appending the same file through different protocols at once is a real, if intermittent, path to corrupted data, worse than any single protocol&rsquo;s own quirks. If you need dual access, make one protocol the single writer and the other read-only, or split the dataset so each protocol owns its own directory tree.</p>
<h2 id="picking-one-in-practice">Picking one, in practice</h2>
<p>For a typical data-hoarding setup, the honest default is SMB for anything a human or a consumer app touches directly, NFS for Linux-only backend plumbing (a media server&rsquo;s library mount, a backup target, Proxmox shared storage) where you control both ends, and iSCSI reserved for the specific case where something genuinely needs block-level access. Don&rsquo;t pick based on which one your NAS vendor made the flashiest setup wizard for. Pick based on what&rsquo;s actually connecting, and change your mind later if the workload changes. Nothing here is permanent; re-exporting a dataset under a different protocol is an afternoon of work, not a migration.</p>
]]></content:encoded></item></channel></rss>