A home-built Solaris system that has evolved for more than a decade
The NASDEV server began in 2007 as a personal project to build a capable home server while continuing to explore Solaris, ZFS, networking and systems administration.
What started as a relatively simple storage system has gradually evolved into a much more capable platform supporting network storage, services, development environments, virtualised workloads and the NASDEV website itself.
Rather than replacing the system every few years, the approach has been to evolve it.
Hardware has been upgraded as required, operating systems have been updated, storage capacity has grown, and individual services have been added or retired as technology and requirements have changed.
The result is a system with a surprisingly long history.
Where it started
The original storage pool was built using four 1 TB disks running under Solaris.
The system was deliberately designed around ZFS, which provided an attractive combination of storage management, data integrity, snapshots and flexibility.
Over time the original disks were replaced with larger drives:
4 × 1 TB → 4 × 2 TB → 4 × 4 TB
The underlying architecture has remained remarkably consistent throughout those upgrades.
This has provided an interesting opportunity to observe how a storage system can evolve without having to redesign the entire platform every time capacity requirements increase.
Solaris
Solaris has remained at the centre of the system throughout its development.
The server has progressed through several generations of Solaris, eventually reaching Solaris 11.4.
The system also makes extensive use of Solaris Zones to separate different services and environments.
This has allowed the server to evolve from a simple NAS into a small collection of independent systems running on the same physical hardware.
Some of the zones have very specific roles, while others exist primarily as development or experimental environments.
This separation has proved particularly useful when experimenting with new software or configurations without disturbing the core services.
Storage
The storage system is based around ZFS, which has been one of the most enduring parts of the NASDEV architecture.
The original motivation was straightforward: I wanted reliable network storage that I could administer myself and understand at a fairly deep level.
Over the years ZFS has provided much more than that.
Snapshots, datasets, checksumming, storage management and the ability to replace drives and expand capacity have all become important parts of the system.
The storage architecture has also evolved as the role of the server has expanded.
What began as a home NAS is now part of a much broader infrastructure.
Services and Zones
The physical server hosts a number of separate Solaris environments, each with its own purpose.
Among them are systems providing:
- Network attached storage
- Web services
- Database services
- Reverse proxy functions
- Development environments
- Peer-to-peer services
- Performance and testing environments
The use of Zones provides a useful balance between isolation and efficiency. Multiple environments can share the same physical hardware while remaining logically separated.
This has also made the server a useful platform for experimenting with Solaris itself.
A configuration change in one environment doesn't necessarily have to affect everything else running on the system.
The NASDEV Website
One of the more recent developments has been the addition of the NASDEV website itself to the infrastructure.
The site is running on Joomla and is hosted within the same general environment that has evolved from the original server project.
That creates an interesting feedback loop:
The server documents the projects, and the website documents the server.
The website you're reading is therefore not just a demonstration site running on a generic hosting platform. It is another component of the system that this project has gradually produced.
Why keep an old system?
There are certainly easier ways to build a home server today.
Modern hardware is inexpensive, virtualisation is commonplace, cloud services are readily available and turnkey NAS products can provide excellent storage systems with very little administration.
But that's not really the point of this project.
The value of NASDEV has always been in understanding the technology by building and operating it.
Keeping a system running for many years also exposes problems and behaviours that aren't obvious in a short-lived test environment.
Hardware fails.
Software changes.
Configurations evolve.
Requirements change.
And sometimes something that has worked perfectly for ten years suddenly behaves differently after an upgrade.
Those experiences are difficult to reproduce in a laboratory.
An evolving project
The Solaris Home Server isn't really a finished project.
It has been evolving since 2008 and will probably continue to evolve for as long as there is something interesting to learn from it.
The current system represents only the latest stage in that evolution.
Future changes will be documented here, along with the problems, solutions and engineering decisions behind them.
Some of those changes will be planned.
Others will probably begin with:
"I wonder why it's doing that?"
And those are often the most interesting ones.
Project status
Status: Active
Started: 2008
Platform: Solaris 11.4
Primary technologies: Solaris, ZFS, Zones, networking and systems administration