unRAID® is an embedded operating system that boots off a USB flash device and loads into a root RAM file system. unRAID utilizes a modern Linux kernel that has been built with up-to-date hardware drivers, which is what allows it to operate across a variety of different platforms. The OS is based on a customized build of Linux that has been tuned to minimize consumption of space in system memory and remain compatible with a wide variety of computing hardware. All configuration data relating to the operating system is stored on the flash device and loaded at the same time as the operating system itself. Upon first boot, the operating system can be configured through a web interface that can be accessed by any capable browser (Internet Explorer, Firefox, Google Chrome, Safari, etc.). Once configured to manage your disk devices, you can then begin taking advantage of other system capabilities.
We break down unRAID into two primary components: Network Attached Storage and Application Hosting.
Network Attached Storage
The primary concept behind an unRAID array is it’s ability to manage an aggregate of disk devices (JBOD) that is protected by a dedicated parity device. A parity device provides a way for you to reconstruct data from a failed disk onto a new one. While it seems mind boggling that one drive can possibly back up other drives that have way more storage capacity than the parity, it is able to reconstruct the missing data from a failed drive using binary logic called XOR (eXclusive OR). Since hard drives store data in zeroes and ones, when a drive fails the parity compares the binary data on all the drives and can deduce the missing data to rebuild.
User Share File System
Unlike most RAID systems, unRAID saves data to individual drives. Once you set up your folders on an individual drive, unRAID replicates those folders in an overall share or parent directory that gives you an aggregate view across the entire server. For example, in the first screenshot below, you can see the Web browser view of the shares (or folders) on the unRAID server. To view all the weddings on the server, you would simply click on the View icon to the right of the Wedding Videos folder. This presents a new window showing a high-level directory of all my videos. Clicking on Wedding Videos gives the entire list of wedding videos. Need to know which disk contains a specific wedding video? You can see it listed under the “Location” column.
The cache drive feature of unRAID provides faster data capture. Generally speaking, by using a cache in an array of 3 or more devices, you can achieve up to 3x write performance. When data is written to a user share that has been configured to use the cache device, all of that data is initially written directly to the dedicated cache device. Because this device is not a part of the array, the write speed is unimpeded by parity calculations. Then an unRAID process called “the mover” copies the data from the cache to the array at time and frequency of your choosing. Once the mover completes, the space consumed previously on the cache drive is once again freed to front-end other write operations to cache-enabled user shares.
New to unRAID 6: Cache Pools
With a single cache device, data captured there is at risk, as a parity device doesn’t protect it. However, you can build a cache with multiple devices both to increase your cache capacity as well as to add protection for that data. The grouping of multiple devices in a cache is referred to as building a cache pool. The unRAID cache pool is created through a unique twist on traditional RAID 1. Here are just some of the benefits:
- Improved Data Protection – With a single cache device, there’s a possibility that you can lose your data if the device fails before the data gets moved to the array. With a cache pool, however, all write operations are replicated across two separate disks to ensure that the loss of any one drive in the pool does not cause a system outage.
- Increased System Uptime – If a cache pool device fails, the system will continue to operate as normal. No need to drop everything to deal with a system outage. You can simply change the device when convenient.
- Better Scalability – Add more devices of different sizes to your pool as you need to and grow on-demand.
- Optimized for SSDs – unRAID now has native support for TRIM, which can substantially reduce the number of write operations when used as a cache device. Benefits of SSDs vs. HDDs:
- They don’t require time to ‘spin up’ or consume a lot of power to operate (they are fast and efficient);
- They are also smaller, so you can fit more of them into a smaller space for highly compact, crazy fast storage.
- When used for storing large quantities of smaller files (e.g., metadata), SSDs can provide a faster response time for these files to the application compared to spinning hard disks; and
- SSDs are most ideal for supporting virtual machines. VM performance benefits on an SSD are comparable to what a user would experience with them on a desktop PC vs. a spinning disk.
Note: SSDs are only supported as part of a cache pool, not in the unRAID array at this time.
- Optimized for Virtualization – Virtual machines and applications can have their data reside on the cache pool permanently for overall improved performance, while keeping mass-storage content on the array still accessible to those virtual instances using VirtFS (for KVM Virtual Machines) and Docker (for Containers). Given the desire for “fast-as-you” responsiveness in application and machine performance, using the cache pool for virtual machine/application storage is a no-brainer. Use of SSDs in a cache pool extends this benefit even further.
Running applications on unRAID can offer users the same benefits that are gained by running them on other devices. Just like on a smartphone, tablet, Mac, or PC, running applications on your NAS will give you more value out of your investment in hardware. The applications available to you on unRAID are also designed to save time, money, or otherwise improve your quality of life. But how does unRAID allow for these applications to run safely and without disrupting core NAS services?
New to unRAID 6: Docker Containers
Traditional NAS-based applications are designed to install into either a “jail” or some other form of isolated run-time environment to limit the impact the application can have towards overall NAS stability and clean operation. However, these traditional approaches come with a number of limitations and challenges of their own:
- They cannot support applications written for other operating systems.
- They can be cumbersome to install and even more difficult to remove.
- They don’t always “play nice” with other applications in the same OS.
Docker addresses these problems in a number of key ways:
- It allows for the use of any Linux operating system to empower a given application (no longer limited by the operating system of the host itself).
- It removes the “installation” process that applications have to go through by providing pre-installed “images” that ensure a consistent run-time experience for the user. This also makes it easy to remove applications when the user is done with them.
- It enables applications that would normally have issues with coexistence to live in harmony in the same operating environment.
In addition, thanks to some of our loyal community members, users can quickly find a number of applications easily installable through Docker on unRAID through the Lime Technology Docker Containers forum. And while a large number of unRAID community-maintained applications can be found there, you can browse the Docker Registry to check out the over 14,000 containerized applications that are available. In addition, many of our own forum members have taken it upon themselves to build additional Dockerized applications as well a comprehensive Docker management tool for use in the unRAID 6 beta that’s available now.
Once more, Docker is ridiculously efficient at utilization of system resources including memory, CPU, disk, and network as compared to other virtualization technologies. Docker provides an ideal approach to running headless Linux-based applications on top of a storage appliance platform (NAS).