As Server Message Block support has been in the news recently, it's a good time to discuss storage appliances that offer this service. The advantage that these devices provide is the ability to add storage to your network painlessly and cost-effectively.
Our poster child for this class of devices will be the Snap Server 2200 from Snap Appliance Inc. Snap makes a range of these network-attached storage devices designed for workgroup, departmental or enterprise use (we were going to use the "d" word - deployment - but thought better of it).
The differences between these categories are storage capacity - 80G bytes is the low end and 2.16 terabytes in a single box is the high end - and features such as which RAID levels are supported, bundled utilities and form factor (desktop for the low end and rack mount for the high end).
So this leads us to a quick diversion on RAID, which stands for Redundant Array of Inexpensive Disks. Note that some people claim that RAID stands for "Redundant Array of Independent Disks," but not so. Now you have a fine trivia card to pull out when the occasion arises.
The idea of RAID is, at least at first blush, pretty simple: You take several low-cost drives and write your data across them in such a manner that if (heaven forfend) a drive goes bad (such as a data error, a head crash or the entire drive being sucked into a wandering wormhole and spat out in an alternate universe where data recovery is unlikely), you have a back-up copy.
Yep, simple in theory and anything from fairly simple to fiendishly cunning in practice. First, you have RAID 0, which is useless in terms of providing redundancy but has its own performance benefits.
RAID 0 distributes the blocks of each file across multiple disk drives (this is called striping), which significantly improves performance by letting reads be split across the duplicated drives. Thus, while one drive is performing one I/O request the other is handling a different request. Level 0 is the fastest and most-efficient RAID type but has no fault-tolerance.
The next level, RAID 1, provides disk mirroring. This keeps two disk drives synchronized so that if the primary drive fails you have a real-time duplicate. RAID 1 is used for high-performance, fault-tolerant environments.
RAID 2 is for disk drives that do not have built-in error detection. As all SCSI drives have built-in error detection and as RAID systems usually use SCSI drives, RAID 2 is not generally used.
RAID 3 is the same as RAID 0 but stripes the data across multiple drives at the byte level and has a single dedicated disk drive that stores error-correction data. This level delivers good performance, and can detect and correct data errors that a drive's built-in error correction can't handle. RAID 3 requires drive controllers that provide hardware support for byte striping.
RAID 3 is better suited to environments in which access to large sequential records is the norm, but it doesn't let multiple reads and writes be overlapped. It also requires special drives (called synchronized-spindle drives) to avoid performance degradation with small records.
RAID 4 is the same as RAID 3 but with block-level rather than byte-level striping. RAID 4 is not used as it offers no advantages over RAID 5.
The highest level, RAID 5, uses block-level data striping across multiple drives and error correction also across multiple drives. This is considered the best choice for multi-user environments in which writes are less common than reads.
The Snap Server 2200 can be configured to use RAID 1 (mirroring), RAID 0 (striping) or Just a Bunch Of Disks (JBOD). Actually JBOD is not RAID at all but "disk spanning," which makes the drives look like a single huge drive - great for capacity, but like RAID 0, no redundancy. On the other hand, JBOD is better than RAID 0 because a disk failure under RAID 0 makes it really hard to recover data - it is striped across the drives. Under JBOD the blocks that make up files will be easier to find and reconstruct.