On another forum, someone asked about a basic primer regarding RAID
drive arrays and NAS (Network Attached Storage) systems. For the
benefit of the rest of the world, here is my response (paraphrased to be
more generic, since the original post was to a Mac forum.)
NAS basics
First off, despite the way they are marketed, a NAS is not an external
hard drive. It is what the name implies - Network Attached Storage. The
NAS has a special-purpose computer built-in. It appears to your computer as a
file server on your LAN. You attach it to an Ethernet hub/switch
(which your computer will also be attached to.)
If it works properly, your computer should see the NAS as a network file
server. On Mac OS X, you should be able to click on the Network icon in
the Sidebar of a Finder window, locate it and mount its volume(s) on
your desktop. On Windows, you should be able to open the Network
Neighborhood/My Network Places icon, locate it and mount its volume(s).
Once the drive is mounted, it should behave like any other volume (hard
drive, flash card, etc.), except, of course, that you probably won't be
able to boot from it. It's still a network server, not a local hard
drive.
When selecting an NAS, be sure it has good support for your operating
system's network protocol. For Mac OS, this is AppleShare. For
Windows, this is Windows File Sharing. For UNIX, this is NFS. Most
operating systems can connect to "foreign" servers, but they won't work
at peak efficiency, and may end up operating with some quirks (like not
supporting your OS's entire range of characters in filenames.)
Expect an NAS to be slower than a local hard drive. 100M Ethernet is
significantly slower than ATA, SATA and FireWire drives. It might even
be slower than some USB drives. If your NAS supports Gigabit Ethernet
(and your LAN is GigE, of course), then you might not notice a
significant speed difference.
RAID basics
When people speak of RAID, they are typically referring to one of the
following technologies:
Name |
Description |
RAID-0 |
RAID level 0, aka "striping" |
RAID-1 |
RAID level 1, aka "mirroring" |
RAID-5 |
RAID level 5 - striping with distributed checksums |
RAID levels 2, 3, and 4 are rarely used, and will not be described
here.
RAID-0, aka "striping" is not really a RAID system, because it
provides no redundancy. Your data is spread across all the drives in
the array. If any drive fails, you've lost all the data in the
array. (In other words, the overall reliability of the array is less
than that of a single drive!) RAID-0 has the advantage of maximizing
the storage capacity of the array, and increasing performance (since
each drive only has to read/write half the data), but at the cost of
reduced reliability.
RAID-1, aka "mirroring" does just what the name implies. Every
piece of data is written to both drives - one is an identical copy of
the other. If one drive fails, it is automatically removed from the
array, and the remaining drive is used instead. RAID-1 offers
redundancy (making the reliability of the array greater than that of a
single drive), but at the expense of 50% of your storage capacity, since
all data is written to both drives.
For small RAID arrays (those with only two drives), RAID-1 is the only
possible mechanism for providing redundancy. For larger arrays (with
more drives), it is inefficient and RAID-5 should be considered instead.
RAID-5 is what large RAID arrays typically use. Error-recovery
data is generated for all your data, and the combined data (your data
and the recovery data) is striped across three or more drives. If any
single drive fails, the entire array remains functional. If two drives
fail, however, all data in the array is lost. The capacity of a RAID-5
array is the total capacity of all-but-one of the drives.
For example, suppose you have five drives in a RAID-5 array. When you
write data to the array, 25% of your data will go on each of four
drives, and error-recovery data will be written to the fifth. (Which
drive gets each piece of data is irrelevant. It actually rotates across
all the drives in the array, in order to maximize performance.)
Now suppose a drive in this array has failed and you try to read the
data back. If the failed drive is the one with the error-recovery data,
the array can get your data from the remaining four drives (since they
are the ones that actually contain it). If the failed drive is holding
data, the data on the remaining three drives, combined with the
error-recovery data, can be used to reconstruct what was on the failed
drive.
In addition to these RAID levels, there are also two common "hybrid"
RAID levels: RAID-0+1 and RAID-1+0. These, as the names imply, involve
both mirroring and striping, to provide increased capacity with
redundancy.
RAID-0+1 is a mirror of a striped drive array. Your data is
striped across a set of two or more drives (a-la RAID-0), then the
striped-set of drives are mirrored to another set of identical drives
(a-la RAID-1). If a single drive fails, its entire striped-set gets
hosed, but the mirror of the striped-set keeps on working. If multiple
drives fail, and they all belong to the same striped-set, the array can
keep on working. If multiple drives from different striped-sets fail,
the entire array is lost.
RAID-1+0 is a striped set of mirrored drives. Each drive is
mirrored against a matching drive. Your data is striped across all of
the mirrored-pairs. If a single drive fails, its mirror-partner drive
keeps the array working. If multiple drives fail, but each is in a
different mirrored-pair, the array keeps on working. If multiple drives
fail, but two are in the same mirrored-pair, the entire array is lost.
While these hybrid RAID levels are often used for inexpensive
software-based RAID arrays, they are wasteful of storage, because of all
the mirroring. RAID-5 is much more efficient, and is preferable, where
possible.
It should be noted that with all of the RAID levels that support
redundancy (all but RAID-0), you can replace a failed drive with a new,
blank drive, and the RAID controller will rebuild its contents from the
data stored on the other drives in the array. Good RAID systems will
allow you to do this without turning off the power or even interrupting
service to users on the network (a feature known as hot-swappable
drives.)
Of course, when a drive fails, even if the array remains operational, it
will be operating without any redundancy - an additional drive failure
can trash the entire array. So it's very important to keep a spare
drive on-hand. This way, when one fails, you can quickly swap it for
the spare. This practice is known as keeping a "cold spare".
This is compared to a "hot spare" drive. A hot spare is a spare drive
that is attached to the RAID controller. It is not part of any
configured array, but sits idle (and possibly powered-off) until a drive
in the array fails. When this happens, the RAID controller immediately
removes the failed drive from the array and starts using the hot-spare
in its place.
The point behind a hot-spare drive is that when there's a failure, the
amount of time the array goes without redundancy can be reduced to the
absolute minimum amount of time.
Of course, once this happens, you will still want to replace the failed
drive, in order to make another hot-spare available, in case another
drive fails. Because ordering new drives may take a week or two, some
large RAID systems will allow two or more hot-spare drives.
Capacities
Clearly, the overall capacity of a RAID array will be a function of the
number of drives, the capacity of the drives, the number of drives used
as hot-spares, and the RAID level configured. Some examples follow:
An array of only two drives can not support RAID-5. It must be configured
as either RAID-0 (no redundancy) or RAID-1 (mirroring.) If the drives
hold 500GB each, the RAID-0 array will be able to hold 1TB, and the
RAID-1 array will be able to hold 500GB.
An array of 3 drives can be used either as RAID-0, or RAID-5. Using
our example of 500G drives, the RAID-0 array will be able to hold 1.5TB
(but remember, there's no redundancy, so if any one of the three fails,
all data is lost!). The RAID-5 array will be able to hold 1TB
(remember, the overall capacity of RAID-5 is that of all-but-one of the
drives.)
An array of 4 drives can be configured in four different ways: RAID-0,
RAID-0+1, RAID-1+0, or RAID-5. Using 500G drives, RAID-0 will provide
2TB (but with no redundancy), RAID-0+1 and RAID-1+0 will provide 1TB,
and RAID-5 will provide 1.5TB.
If hot-spares are used, just don't count them when figuring out the
array capacity.
Conclusion
NAS and RAID terminology may be confusing to novices, but the concepts
are not overly complicated. The important points to remember are:
- NAS devices are network file servers. They run a self-contained
operating system, but are otherwise the same as a server you might
set up on your own using a separate computer.
- RAID comes in three main flavors: RAID-0, RAID-1 and RAID-5
- RAID-0 maximizes the storage capacity of the array, but offers no
redundancy. If one drive in a RAID-0 array fails, all your data
is lost.
- RAID-1 mirrors drives. This increases reliability, but at the
expense of storage capacity. The overall capacity of a RAID-1
array is 50% of the aggregate capacity of the drives. It is your
only choice if you only have two drives and want redundancy.
- RAID-5 is a happy medium between RAID-0 and RAID-1, if you have
three or more drives. Single-drive failures will not make the
array fail, and the overall capacity is greater than RAID-1.
Keep in mind, however, that RAID systems are not a substitute for making
regular backups of your system. RAID (all levels other than 0) will
protect you against single drive failures, but backups protect you from
many other things, including:
- Simultaneous failure of multiple drives (e.g. a bad power surge
that fries the entire array.)
- Accidental (or deliberate) deletion or corruption of files.
- Software bugs, viruses, and worms
- Natural disasters (fire, flood, hurricane, etc.)