I will take the counter argument to most that have responded already and say “no noticeable difference in performance” when music is stored on a NAS instead of local SSD. (Assuming, of course, properly configured networking between the Roon Core system and the NAS.) FWIW, I have my Roon Core running on a dedicated CentOS 7 system with all the music files stored on my Synology RS3617xs+.
There is only one thing that local storage gets you: immediate auto-updates to the Roon metadata when you change files in the library. File change notifications over SMB are unreliable at best. This is not a Roon problem. This is an SMB/OS problem. You can work around this in two ways: 1) modify the full scan interval in the Roon Settings, or 2) force a manual scan. Personally, I don’t want Roon trying to update its metadata until after I’ve finished with my library changes anyway, so I prefer going in and forcing a manual scan once I am done. (If there was an option, I would disable Roon’s automatic library scans entirely.)
Before people say “SSD has to be faster”… It’s the raw music files stored on the NAS, NOT the Roon metadata. Music files require very little network bandwidth. Typically in the ~1.5-3 Mbit/s range. Even the worst case of DSD512 is only ~50Mbit/s. 100Mbit/s Ethernet won’t even get stressed by that, never mind 1GBit/s Ethernet… (Wi-Fi is a different story, but that goes back to my prior statement that I’m assuming you have proper networking in place. Wi-Fi is not proper networking for “server” systems like your Roon Core and NAS.)
All your searches, artwork displays, etc., come from the Roon metadata, and that is stored locally on your Roon Core system. Aside from initial play start, Roon also starts preparing the next track about 5-10 seconds before the current song ends. So song transitions are seamless. Further, if you skip around within a song, the underlying music file has been cached in the Roon Core systems’ kernel block cache (see next paragraph) so isn’t going back to the NAS to read any data (unless you skip forward a good chunk, and then you are in the same situation as “initial play start”). While initial play start is slightly slower than a locally attached SSD for the music storage, the difference is so small I doubt most people would notice it unless specifically testing for it. In other words – in real world usage, it makes no practical difference.
Keep in mind that all “unused” RAM in the Roon Core system is actually used by the kernel as an I/O block cache (all modern operating systems do this – Linux is just maybe a bit smarter about it than Windows or OSX). Since Roon itself doesn’t directly allocate much memory (unless you have a gargantuan library), the 8GB most people put in NUCs means you have ~6.5GB of RAM available as block cache. That will also cache the Roon metadata as well. Aside from small SSDs being so cheap these days, you don’t even really need an SSD for the metadata. You will experience a bit of slow startup after the Roon Core is rebooted, since the block cache does not persist between reboots. But once Roon has been running awhile and accessed much of its metadata, that metadata gets cached in RAM in the block cache so the type of storage device used at that point becomes moot. About the only thing that would be slower is writes to the database, going on the assumption that the database they use is calling sync() on its writes to force at least the journal to physical storage right away. Otherwise, Linux will just buffer the writes in the block cache and then lazy write them in the background when the page cleaner wakes up every thirty seconds (Windows is even more forgiving with its page cleaner).
There is huge upside to storing the music files on your NAS. Like it’s WAY easier to back them up. Also, you can give the Roon Core’s NAS user account read-only access to the music, so Roon can’t ever modify the music files themselves. Make a “Roon Backups” share and give the Roon user read-write access to that share alone, so that you can have Roon automatically do backups of the Roon metadata to the NAS.