My interest in storage is longstanding—I loved playing with different file systems in my early Unix days and then I worked on Google’s and Microsoft’s distributed storage solutions—and, about four years ago, I started running a home-grown NAS leveraging FreeBSD and its excellent ZFS support. I first hosted the server on a PowerMac G5 and then upgraded it to an overkill 72-core ThinkStation that I snapped second-hand for a great price.
But as stable and low maintenance as FreeBSD is, running day-to-day services myself is not my idea of “fun”. This drove me to replace this machine’s routing functionality with a dedicated pfSense box a year ago and, for similar reasons, I have been curious about dedicated NAS solutions.
I was pretty close to buying a second-hand NAS from the work classifieds channel when a Synology marketing person (hi Kyle!) contacted me to offer a partnership: they’d ship me one of their devices for free in exchange for me publishing a few articles about it. Given my interest to drive-test one of these appliances without committing to buying one (they ain’t cheap and I wasn’t convinced I wanted to get rid of my FreeBSD-based solution), I was game.
And you guessed right: this article is one of those I promised to write but, before you stop reading, the answer is no. This post is not sponsored by Synology and has not been reviewed nor approved by them. The content here, including any opinions, are purely my own. And what I want do do here is compare how the Synology appliance stacks against my home-built FreeBSD server.
A blog on operating systems, programming languages, testing, build systems, my own software projects and even personal productivity. Specifics include FreeBSD, Linux, Rust, Bazel and EndBASIC.
The hardware
Here are the two contenders in my comparison:
- My home-built NAS:
- Hardware: ThinkStation P710 equipped with 2x Intel Xeon E5-2697 v4 processors (18c/36t) at 2.30GHz, 64GB of RAM, 2x Seagate 4TB Enterprise Capacity 7200 RPM drives and a Samsung 970 EVO Plus SSD 500GB.
- Operating system: FreeBSD 14.
- Storage configuration: ZFS with the two HDD drives in mirror mode and with the SSD set up as the L2ARC plus ZIL log for the drive pool.
- The Synology NAS:
- Hardware: Synology DS923+ equipped with 3x Synology Plus Series 4TB 5400 RPM drives and the same Samsung 970 EVO Plus SSD 500GB that I moved from one machine to the other. The box is equipped with a 4-core AMD Ryzen Embedded R1600 and 4GB of RAM.
- Operating system: Synology’s own DiskStation Manager (DSM).
- Storage configuration: btrfs with the three HDD drives set up in RAID 5 mode and with the SSD set up to act as the cache for the drive pool.
The two configurations are quite different—after all, I am comparing a workstation machine with lots of spare CPU and RAM to a dedicated machine specifically crafted for file sharing—so it’s going to be difficult to be “fair” in any comparison. In any case, here are a few things to contrast:
IOPS: The P710 runs with 2 7200 RPM drives in mirror mode whereas the DS923+ runs with 3 5400 RPM drives in RAID 5 mode. The number of total IOPS from each is going to differ but… for all purposes, the 1Gbit NIC that each machine has is the limiting factor in performance so I haven’t bothered to run any performance tests. Both can saturate the network, so there is that.
Quality: Both the P710 and the DS923+ are impressive machines—maybe not PowerMac G5 impressive levels, but pretty, pretty close. I love the ThinkStation’s outer design and the interior shows great cable management and airflow. As for the NAS, I love the lightweight and small form factor that allows placing it pretty much anywhere. Both are tool-less enclosures.
Noise: When idle, both machines are equally quiet. The ThinkStation gets really, really loud under heavy load though, and it is also uncomfortably loud even at idle when the room temperature is warm (around or over 25C). The DS923+, however, seems quiet throughout. The Synology Plus Series HDDs are also quieter than the ones I had in the ThinkStation, and that’s partly because they are slower 5400 RPM drives. In any case, these two machines stay in my garage so I don’t care about their noise.
Power consumption: I unfortunately do not own a tool to measure it, but it’d be neat to compare how these two stack up. I’m sure I’ve thrown money away by keeping the ThinkStation online 24x7 and having those drives never rest (ZFS doesn’t let them spin down) but it’s hard to care about it because my power bill is dominated by heating almost year-round.
FreeBSD and ZFS
FreeBSD is my current favorite system for servers. FreeBSD remains close to its Unix roots and maintains rational and orthogonal tooling (unlike Linux), is quick and trivial to maintain (I could run through the 13 to 14 upgrade in… 15 minutes?), and bundles modern technology like ZFS and bhyve (unlike NetBSD, sadly, which used to be my BSD of choice).
It is true that FreeBSD gave me some headaches when I ran it on the PowerMac G5, but that’s expected due to the machine being 20 years old and FreeBSD’s PowerPC support being a Tier 2 platform. The thing is that I never intended to run a NAS on the G5; it just so happened to be the only machine I had available for it. In any case, I have had zero problems on the ThinkStation. Mind you: when I bought this machine, both Windows and Fedora experienced occasional freezes with their default installations (before pulling upgrades from the network) and FreeBSD never has shown any signs of instability.
As for ZFS, it is hard to convey the feeling of “power” you experience when you type zpool
and zfs
commands and see the machine coordinate multiple disks to offer you a dependable storage solution. Creating file systems on a pool, creating raw volumes for VMs or iSCSI targets, taking snapshots, replicating snapshots over the network or to backup USB drives, scrubbing the drives to verify data integrity… all are trivial commands away.
ZFS feels slow though. I grew up thinking of file systems as contiguous portions of a disk and tinkering with their partitioning scheme to keep groups of data unfragmented for speedy access. Due to the way ZFS operates, however, none of this archaic knowledge applies (and to be honest, I do not know how ZFS works in detail internally). That said, a hard drive’s seek time is around 10ms and has been like that for decades, which combined with the fact that we are now spoiled by having SSDs everywhere, exacerbates how slow an HDD-based solution feels no matter the file system.
Regarding network connectivity, FreeBSD offers all sorts of networked file systems and services. The base system provides NFSv3, NFSv4, FTP, and iSCSI targets. The ports (packages) system offers whatever else you may need, including SMB, DLNA, and even ancient protocols like AppleTalk or distributed protocols like Ceph. All configuration is done by hand over SSH in the traditional Unix way of editing configuration files—aka messing around with different, inconsistent text formats.
Synology’s DSM and btrfs
The DS923+ runs Synology’s own operating system: the DiskStation Manager (DSM). The DSM is a headless-first system designed to be accessed over the network, which is no surprise. What is surprising is the choice of the interface: while most networked devices offer some sort of a web-based tabbed UI, the DSM offers a desktop environment—with overlapping windows no less. This feels like a gimmick to me, and a quite neat one, but overkill nonetheless.
If we peek under the covers, which we can do by logging into the machine over SSH, we find that the DSM is a Linux system. No surprises here after seeing that its choice of file system is btrfs. But what kind of Linux is it? A weird one, let me tell you. Luckily, you do not have to interact with it at all if you don’t want to, but hey, I’m curious so I did look.
The DSM seems to be some sort of Debian derivative based on the fact that dpkg
is installed, but otherwise I cannot find any other obvious remains of what might have been a Debian installation; even dpkg -l
shows nothing. What I can tell is that the btrfs file systems are mounted under /volume1
and, in there, we can find one directory per shared folder that we create in the UI. We can also find various directories prefixed with @
, which is a… weird choice for Unix file names, and I understand are managed by the DSM. These include things like @appdata
or @userpreference
, which carry strong Windows vibes.
Considering that the DS923+ is almost a PC and runs Linux, I did look to see if it was possible to run FreeBSD instead. It turns out some people have tried this, and FreeBSD does run, but it lacks drivers to control power to the drives so it cannot actually leverage the storage devices. From what I understood, the DS923+ seems to have dedicated hardware to control power the drive pool, and this hardware logic is controlled via GPIO.
Which got me even more curious: if the DSM explicitly controls power to the drive pool, how does it boot and how does it remain responsive even after shutting down the drives? I guessed that the device comes with a tiny drive to hold the DSM and boots off of it, and upon inspecting the dmesg
and looking for non-obvious stuff, I found this:
sd 7:0:0:0: Attached scsi generic sg3 type 0
sd 7:0:0:0: [synoboot] 245760 512-byte logical blocks: (126 MB/120 MiB)
sd 7:0:0:0: [synoboot] Write Protect is off
sd 7:0:0:0: [synoboot] Mode Sense: 23 00 00 00
sd 7:0:0:0: [synoboot] No Caching mode page found
sd 7:0:0:0: [synoboot] Assuming drive cache: write through
sd 7:0:0:0: [synoboot] Attached SCSI disk
Ah-ha. A small 120MB (flash?) drive that acts as the system device. However… this separation of system vs. drive pool comes with a price: the drive pool often shuts off, and powering it back on is slow (10–15 seconds are not unusual). When you try to reach the NAS over the network and the pool is off, it can feel as if the NAS is unreachable / down, which has already confused me a few times and caused me to started diagnosing network issues. Quite annoying to be honest, but obviously this can be configured in the Hardware & Power menu:
Regarding network connectivity, the DSM offers multiple networked file systems and services out of the box, namely: SMB, NFS v3, NFS v4, AFP, FTP, and rsync. I’m actually surprised to see AFP, AppleTalk’s “replacement”, in the default set of supported file systems in this day and age, but there it is. Additionally, the DSM provides its own package management system to install a limited set of additional services and utilities, which I used to add DLNA support.
Seeding the NAS
Anyhow, let’s change topics and talk about the DS923+ itself.
The first thing I had to do after getting the device was to seed it with data. I needed to copy about 1TB of photos and documents from the FreeBSD machine to the DS923+, which is not a lot, but is large enough that different copy mechanisms can make a huge difference in the time the copy takes. In particular, the choice of protocol matters for a quick copy: both SMB and NFS are OK with large files, but transferring many small files with them is painful. Fortunately, the DSM allows rsync over SSH and I used that to do the initial seeding.
Now, using rsync came with two “problems”. The first is that I had to know the path to the shared folders in the file system to specify the rsync targets. This is not clearly exposed through the UI, so I had to rely on SSH to log into the machine and figure out that the shared folders are at /volume1/<shared_folder>/
as I briefly mentioned in the previous section.
Which led to the second problem or, rather, surprise: even though I had set up 2FA for the user accounts I created in the DSM UI, 2FA was meaningless when accessing the machine over SSH. I understand why that may be, but then I question what the point of enabling 2FA really is if one can gain access to the machine without it. The same is true of SMB by the way: you just need an account’s password, not the 2FA. So, unless you disable all networked file systems and only allow web access to the NAS, all the 2FA does is give you a false sense of security.
Peace of mind
When comparing my custom FreeBSD server to the newer DS923+, the main difference I can notice is an increase in “peace of mind”. Yes, FreeBSD is very stable and ZFS is great… but I wasn’t running the ThinkStation as a dedicated NAS: I was mixing the machine’s NAS responsibilities with those of a host for development tasks. I always felt uncomfortable about the health of the system and I wasn’t convinced that my maintenance was “good enough” to safeguard my data.
As you can imagine, being uncomfortable about your data is not something you want to feel: trust is The Thing you most want in a storage solution, and there are a few things that stand out during the setup of the system that gave me warm feelings on this topic.
The first and obvious one is that the DSM offers to encrypt the pool right from the beginning, which is something you should always do in this day and age: encryption is cheap in CPU terms, the data you own is precious, and the devices that store it tend to be small and light so they are at risk of theft. But beware: the key is stored on the device to allow auto-mounting by default, which means a knowledgeable thief could still gain access. Thus, this level of encryption is only useful to facilitate the disposal of drives. That said, you can configure additional encryption on each shared folder if you want per-user password-protected encryption.
The second thing is that, nowhere in the setup process I was asked to create a Synology account for the NAS to be fully functional. You might think that this is a given, but seeing the state of other hardware or software products these days… it’s not. So this sent a very welcome message. I ended up needing to create an account for certain features that required it, but these were completely optional.
The third thing, which is actually one of those features that required creating a Synology account, is the ability to send email notifications for system alerts. Email-based alerts are terrible in large organizations (and of course the DSM offers better alternatives, like ActiveInsight), but for my personal use case, emails are perfect and make a huge difference with my previous FreeBSD setup. I can rest assured that I’ll be told about anything unusual with the DS932+ in a way that I will notice. With my custom build, I had certain monitoring features in place like weekly disk scrubs and periodic online backups… but no way to properly notify me of problems with either: if anything went wrong, I would not have known on time, and that was very unsettling.
The fourth and final thing is that the DSM has been built throughout the years by people that deal with storage all the time, and it’s fair to assume that they know a thing or two about running a NAS. I have reasonable confidence that the configuration of the system and the storage pool is going to be “correct” over time, particularly across upgrades, whereas I was never quite sure of it with my manual FreeBSD setup. One such example is with the NFS configuration: setting up the NFSv4 server in the DSM was pretty much knob-free—so when things didn’t work with the clients, I could assume that the issue was almost certainly with the clients themselves.
Additional apps
As I mentioned earlier, the DS923+ is pretty much a PC with Linux in a tiny box, so in principle it can host any kind of software you like. The way this works is via DSM’s own “marketplace” where you can find new services to add to the machine.
I did add the optional DLNA service so that I could play videos from my Xbox, and also toyed with with the Domain Server (and later gave up due to the sheer complexity of setting up a domain just for home use). But there are other interesting optional features. For example, you can create virtual machines on the DS923+ which, despite the limited CPU and RAM of the machine, can come in handy from time to time. I suppose with a more powerful box from Synology, the story here would be quite different.
One thing to highlight is that these extra pieces of software are curated: you aren’t just installing an extra service to the underlying Linux machine. You are installing an extension to the DSM, which comes with new configuration panels in the UI and full integration with the system. You never have to know that Linux is there if you don’t want to.
Backup solutions
Having a dedicated NAS with a storage pool that protects against corruption is great, but a singly-homed box like this is still subject to massive data loss due to ransomware, physical damage caused by fire or flooding, and correlated disk failures. Backups are critically important.
With the FreeBSD setup, my backup strategy involved using zfs send
and zfs receive
to back up snapshots into two USB drives: one kept in a fire safe and one kept offsite. This worked but I had to figure out the syntax of these commands over and over again, which didn’t make me feel confident about these actions. I did also back up irreplaceable data to a OneDrive account using rclone
, which was good but… manual and ad-hoc as well. Needless to say, while the backups existed, they were often stale and they were a pain to manage.
Backing up a NAS is difficult though. For one, a NAS is designed to store lots of data, which means the backup targets have to be large capacity-wise too. And for another, given the DS923+ reduced physical size, it is likely to end up placed in a location that isn’t super convenient to access, which will make attaching temporary USB drives and the like an annoying experience.
For now, what I have tried is the optional Cloud Sync package that allows replicating to many cloud services, including OneDrive. And it’s a joy to use. I could trivially install the package, log into my Microsoft account, and configure the two specific folders I care about backing up. I could even respect the previous file layout of my OneDrive account so I did not have to re-upload anything. And the tool supports encryption too, which you may want if you really don’t like those cloud providers from training their AI systems with your data.
There is more though. Synology offers a variety of products for remote and physical backup. The one that does interest me the most is Snapshot Replication, which provides something similar to what I was doing with zfs send
and zfs receive
, but unfortunately requires a second Synology system offsite that I don’t have. The other solutions are Active Backup for Business and Hyper Backup, which I still would like to evaluate but haven’t had a chance to look into.
Future
To conclude this brief review and comparison, let me say that I’m happy with the DS923+ experience so far. I don’t think I need it because my FreeBSD solution worked well enough, but considering that I like to use the ThinkStation as the host for my VMs and as my primary development machine—aka, a fun toy—I feel more at peace with a dedicated appliance that stores my precious data.
For more details, you can visit Synology’s product pages for the DS923+ and the Plus Series HDDs. And if you want to roll your own FreeBSD-based solution, Chapter 22 of the FreeBSD handbook on ZFS is a good place to start.