The reason I put server is that you often have more of a choice between Linux/BSD and Windows Server in that environment. For home and enterprise you are often more constrained due to certain applications. I do use Windows (7 to be exact) and I have used Windows Server in the past. The numbers for install size, system reserved space and memory usage come from Windows Server 2012 (x64) Datacenter build 9200. Numbers for Linux come from Arch Linux, unless stated otherwise.
10. Updates
Windows for updating is slow, in my experience. There`s also no 3rd party support (or very little) when it comes to Windows Updates.
This means you, as the administrator, need to keep checking 3rd party sites or get another update manager to handle these applications (this takes resources). Linux distributions tend to have a repository for all programs on the system, very few need to come from a 3rd party site with no update mechanism. There`s also no need to reboot between updates, except for it the update was the kernel.
9. No GUI, generally
Windows Server, even Core, tends to come with a GUI stack. Core has a cut down version, which only allows certain graphical
programs. This takes resources away from the OS and other services. Linux allows for a complete headless experience — whilst still being able to get updates without the need to install and set up WSUS or editing the registry (and no way to really tell if the changes have worked). This means that those 512GiB of RAM is all for the server and not for a graphics server.
8. Better resource management
Linux has better resource management which is always improving with each kernel release. This means that most distributions need up to 1GiB of RAM to run without issues (laptop uses 519MiB with: GUI, Dropbox and Skype). 1GiB is often stated as the minimum, but will quite happily be the maximum, for most solutions (especially a small VPS). This means that there`s more space for other programs and services. Windows Server recommends 1.5GiB and uses 600MiB (with GUI) with just the standard services running after a fresh install and it shows that you really do need more than that, as Windows is slow if there`s little RAM available. Linux doesn`t really suffer from this.
7. Initial disk space
Windows needs a minimum of 20GiB for first install and updates as a minimum recommendation. It uses around 8-10GiB from first
install (with the added 350MiB “System Reserved” partition). Linux only needs 3GiB (Ubuntu recommends 6-7GiB) but will actually use less than that. A typical install for me (httpd, ntpd, bind, samba) uses about 1.7-2GiB (Arch Linux). This means there`s more space available for your data.
6. CLI
Windows has been build for mainly GUI applications. This means the CLI has lost features to the GUI components. Unfortunately, Microsoft didn`t keep these features for legacy reasons and instead created a PowerShell. PowerShell tries to give back some of the power lost to the cut down of cmd (instead of just making cmd better). Linux, on the other hand, still has a very powerful CLI and the GUI is only there to compliment the CLI tools. The GUI for Linux isn`t a way to get rid of the CLI components but is there to aide in administration, if needed. Everything the GUI can do the CLI can, for the most part. There are very few GUI only programs.
5. Development
Linux is built for developers, mainly. This means the tools developers need are there at the fingertips of any typical install. This saves time trying to find and install needed support for languages such as: Python, Perl and C++. Also, getting these working with a httpd
is also often a few line edits in a config file. Windows often relies on the project compiling for Windows and offering a binary to download. Things also often don`t work together, in a nice fashion. This is why XAMPP and WAMP have come about for web servers which need Apache, PHP and MySQL. The setup has been done for the administrator. Unfortunately, you are then bound to that 3rd party software. If they stop updates then you are unlikely to be able to update to the latest Apache, PHP, MySQL not offered by the 3rd party. This could leave your system vulnerable.
4. File permissions
Linux uses the UNIX file permissions (Read, Write, Execute) to handle what a file can/cannot do. This is easily modified on the command line, along with whom the owner is (so long as you have permission). This is in contrast to Windows where changing the file permissions is through the file dialog. This can make it difficult to quickly sort out a permissions issue on a server (a file set to be read/written by everyone for example, which leaves the file exposed for longer). Changing the owner for a file or directory is also hit and miss for Windows. You can select “include subdirectories” but this doesn`t always go through the subdirectories or only does the first subtree of each subdirectory. This can be a pain to make all subdirectories of a directory owned by a new user.
3. Freedom of code
As the code is open source, for Linux, this means that it is easier to edit, read and audit. This means that there are more eyes on the source code and allows for functionality to be added by anyone. If there is a bug or a feature you need then this can be fixed or added. This also means it`s less likely that there is a backdoor or a security flaw. Those reading this after reading about Heartbleed might find this difficult but OpenSSL has many issues, and is often pseudo-security more so than anything. The project has been around a long time and there have been many features added. It has a large code base and this makes it difficult to audit, with very few funds. The funds are now in place, thanks to the Linux Foundation. This means another Heartbleed is less likely to occur. Open Source is still more secure than closed, as people can see and fix issues — or remove anything they don`t like. Microsoft Windows is closed source, which means that only by disassembling the compiled code can we get any idea what it is actually doing. This is a time consuming process and fixes are therefore slower to come about (as issues are hidden from plain view — often only found when exploited, this gives the bad guys an advantage). This means the only people whom really know what Windows is doing are the developers.
2. SSH vs Telnet
SSH (Secure SHell) is exactly as it says — secure. It allows for secure communication between client and server and also allows for GUI programs to be forwarded from the server to the client without running a full graphical stack on the server. All data is encrypted. Telnet, on the other hand, is insecure. All passwords are sent in plain text and there is no encryption used. If you also want a graphical application you need to run an RDPd which also means running the full graphical stack on the server, as it only forwards the screen and not the information to show the screen. Some telnet clients do support encryption but this is still an exception and probably not the built-in Windows version.
1. Registry or lack thereof
Let`s be honest, the Windows Registry is a nightmare. It can break and get bloated. Trying to bring down the bloat and defrag it can also also cause problems and the server not to boot. Programs often add registry values on install but leave these behind when they are uninstalled. Including that they were installed. This is unneeded information and can build up over time if you keep installing/removing software. Luckily, Linux doesn`t have this problem as the config for applications are all in text files. This means that you can remove a program and delete the config file and that program is removed. You can also uninstall dependencies
for the application at the same time as uninstalling the application, instead of having to start an uninstall and then waiting until it`s finished to start another. The package manager will also remove the config files and anything else related to the software, if told to (example: pacman -Rns 😉 this means you don`t need to do it manually. Text files also take no room in RAM which the registry does. This is why a bloated registry makes Windows so slow yet an old Linux install still run as if it were brand new.
There are also reasons to being for Windows Server and more for being against. The overall decision is yours. If you don`t need a Windows domain or aren`t ingrained in the Windows Ecosystem then is there really a reason to go with Windows? If the answer is yes, then that`s your choice. If the answer is no, why not try Linux? It might just make your day.
Spot on with this write-up, I truly think this amazing site needs far more attention. I’ll probably be back again to see more, thanks for the advice!