I currently have a 10-year old off-the-shelf NAS (Synology) that needs replacing soon. I haven’t done much with it other than the simple things I mention later, so I still consider myself a novice when it comes to NAS, servers, and networking in general, but I’ve been reading a bit lately (which lead my to this sub). For a replacement I’m wondering whether to get another Synology, use an open source NAS/server OS, or just use a Windows PC. Windows is by far the OS I’m most comfortable with so I’m drawn to the final option. However, I regularly see articles and forum posts which frown upon the use Windows for NAS/server purposes even for simple home-use needs, although I can’t remember reading a good explanation of why. I’d be grateful for some explanations as to why Windows (desktop version) is a poor choice as an OS for a simple home NAS/server.
Some observations from me (please critique if any issues in my thinking):
- I initially assumed it was because Windows likely causes a high idle power consumption as its a large OS. But I recently measured the idle power consumption of a celeron-based mini PC running Windows and found it to be only 5W, which is lower than my Synology NAS when idle. It seems to me that any further power consumption savings that might be achieved by a smaller OS, or a more modern Synology, would be pretty negligible in terms of running costs.
- I can see a significant downside of Windows for DIY builds is the cost of Windows license. I wonder is this accounts for most of the critique of Windows? If I went the Windows route I wouldn’t do a DIY build. I would start with a PC which had a Windows OEM licence.
- My needs are very simple (although I think probably represent a majority of home user needs). I need device which is accessible 24/7 on my home network and 1) can provide SMB files shares, 2) act as a target for backing up other devices on home network, 3) run cloud backup software (to back itself up to an off-site backup location) and, 4) run a media server (such as Plex), 5) provide 1-drive redundancy via RAID or a RAID-like solution (such as Windows Storage Spaces). It seems to me Windows is fine for this and people who frown upon Windows for NAS/server usage probably have more advanced needs.
Never been a better time to try Linux. Ubuntu is pretty easy to get started with (download and setup a bootable USB, stick it and go) and ChatGPT is extremely good about walking you through any questions. You don’t even need to ask highly technical questions, just tell it your goal and your system.
“I just installed Ubuntu 22.04 on my computer and want to SSH into it from a Windows computer on my network, how do I do that?”
“I want to download a file from my Ubuntu command line, how do I do that?”
“I want to setup a share that both Windows and Linux computers can access over my network, how do I do that?”
“I have a github action runner provided by github that includes a run.sh file that needs to run constantly. I want to setup as a background service on my Ubuntu Linux computer so it will always be running as long as the computer is on, how can I do that?”
It will spit out every command line you need in what order, contents of a .service file, tell you how to monitor it, and so on. You can ask it what each line does, what the parameters mean, etc. It’s like having a mid-level sys admin at your fingertips. It will interpret any errors you get, and tell you how to fix them.
Perfect? Maybe not, but its close for a remarkable variety of tasks. It may be, and I’m not joking, 20 times more productive and time efficient than Google searches, reading stackoverflow posts, reading documentations/man pages and trying to decipher what you really need out of any of those sources.
I’m sure some are too paranoid to ask ChatGPT certain things for privacy reasons, and I would anonymize anything you paste in, probably just be a bit mindful of anything involving permissions (you can also ask what security risks exist doing something). Just normal ChatGP3.5 (free) is extremely knowledgeable about Linux CLI and administration along with common packages and apps you’d want to use.
For server:
docker is linux in a jailed namespace (network, filesystem, process tree, etc jail)
Docker hosted on linux is efficient.
Docket hosted on anything else less so.For me, #1 is license costs. I’ve taken home some servers which would require me to buy 4+ windows server licenses because 16 physical cores is a number for entry-level servers at this point. For the cost of those licenses, I could almost buy a new server with a similar amount of cores every single year.
Second, the brand new filesystem, ReFS, (which needs licenses), has just about caught up to what ZFS had in 2005. The biggest omission is that 2005 ZFS could be your root filesystem. This is less important on *nix systems where your root can be tiny, but windows insists on storing tons of stuff on C, which still needs to be NTFS. ZFS also has 22 years of production testing and still has lots of development.
Third, I want to use containers, and windows uses a Linux VM to do that, so why not skip the middle man?
These are my personal reasons. I stress personal because everyone is different.
- it doesn’t do what I tell it to do, but what Microsoft thinks I should want
- difficult to automate (I’ve been told this has been getting better, but I’m still not convinced)
- if things don’t work as I expect, I can’t look at the source code
In most cases I’m much less frustrated by using non-Windows alternatives in infrastructure. For example when I build Windows binaries, I use wine on linux.
windows is a trash server os for use by people who should know better. pick a flavor of linux, or Open/Net/FreeBSD it’ll do a better job of serving your data.
ok ok, that was a little harsh, some of them do know and choose to take the wrong path.
Because it is poop
Windows uses the NTFS File system and TrueNAS uses the OpenZFS file system which is superior to NTFS for storing your data. I’d do some reading on the OpenZFS file system to check out the benefits over NTFS. Running TrueNAS is really easy, you can check it out on Youtube, (installation and configuration videos). The book FreeBSD Mastery:ZFS (Michael W Lucas, Allan Jude) is also a good read on everything ZFS.
Thanks. A few others have mentioned file system benefits of going non-Windows, although I’m not exactly clear what they are and some people mentioned something other than zfs (will need to re-read the replies to remember what). Will look into it though.
Copy on Write or COW comes to mind right away.
The COW mode of operation brings some significant advantages. Since old data is not overwritten, recovery from crashes and power failures should be more straightforward; if a transaction has not completed, the previous state of the data (and metadata) will be where it always was. So, among other things, a COW filesystem does not need to implement a separate journal to provide crash resistance.
Just found this, looks like some good info…https://arstechnica.com/information-technology/2020/05/zfs-101-understanding-zfs-storage-and-performance/3/
If you really have to I suppose Windows client versions will work as for servers. But Windows server version is much nicer to use.
Windows has more overhead, is more expensive, is less interesting/fun IMO, has poor data parity features, and has less of the homelab community’s attention than any purpose built Linux based home-lab OS. But it will definitely do the job with minimum effort from you.
End User Windows has a shit history with forcing updates on you and reboots just because you waited to long.
End User Windows is also not great at managing large numbers of storage drives.
They also aren’t great to manage remotely.
Sever oriented Linux distros are designed with server workflows and high availability in mind. Desktop Windows isn’t. However, if you’re not running mission critical services, who cares? Do whatever is the most practical to you.
I can get behind your pragmatic analysis. If it works, is low power, easy to manage, etc then that might be a good choice! One thing to possibly also consider: how future proof would you say it is?
I have had two Synology boxes and they were my first foray into servers and backup at home. I’m an amateur, or was, and always will be as far as enterprise things. My recent synology 1019+ acts as an awesome plex server using docker only because it still has intel graphics transcoding. Most recent Synology boxes have moved to AMD or intels that don’t have intel graphics. For that reason and that reason alone, I’d get a small box, my preference is linux, but a small box with igpu. That means you’d still need a proper nas for media. Maybe just slowly update the disks in your old synology, or do a DIY, or learn something. But honestly for my nas purposes, I just trust synology, and I have learned all sorts of other options along the way.
Windows bad. Linux good. BSD better.
For real though. Windows cost money, it uses a lot of resources. And Desktop Version is missing vital parts you might want to use on a windows server like Domain Controller, DHCP, Server, Web Server, Hyper-V. Etc.
Those reasons also have most running Limix or even BSD because they are pretty lightweight especially when used headless. Also as open source they are mostly free of cost. And when you virtualize on a free and open source Hypervisor like XCP-ng or Proxmox you can run way more smaller VMs than Windows VMs as they need more resources.
Lots of great responses here, I won’t reiterate what everyone has already explained. The big benefits imo are redundancy using better file systems like ZFS (Truenas) or BTRFS (Synology, unraid), and in general better management of the drives, and data stored on them. These appliances support more robust raid configs as well, so you have a lot less risk losing data. The other big one is simplicity for what you need it to do. Creating an SMB share on a PC using windows isn’t hard, but it’s not nearly as simple as the 3 clicks it takes on the purpose built OS. These OSs also usually have built in solutions for hosting any other apps you may also want to play with. That’s just my two cents.
I sit in r/datahoarder a lot and the general consensus is that BTRFS is unstable and should not be used, and instead people should use EXT4 or ideally ZFS. I know ZFS is the gold standard and expected to be more resource intensive and RAM hungry. Can you shed some light on why you’d use BTRFS?
I am by no means an expert, mostly a home tinkerer with a Plex server. I use BTRFS because my Synology supports it and I use ZFS on my Truenas box. I also use SHR with my Synology so BTRFS makes adding and upgrading drives really flexible as my media library grows. BTRFS and ZFS are very feature rich, as you mentioned ZFS is very RAM hungry which can be a limitation for people just looking to get into the server space on a budget. I think the instability of BTRFS comes from the way it stores data, it can get very fragmented. EXT4 in comparison is pretty boring but it works well and if you’re just writing data to store it you might not need the features and overhead of the other file systems. Personally I have no real preference, I like my Synology and I like my Truenas machine and as a hobbyist they both serve me well, and I would take either over NTFS for a storage appliance.