Storing data for industrial applications requires a robust system that can handle a high volume of access requests without slowing down. Additionally, drives in servers that operate at high temperatures for long periods of time are prone to failure, and simply backing up the data may not be sufficient because it takes time to make the backup available and the server remains unavailable during this time.
RAID (Redundant Array of Independent Disks) can provide a cost-effective solution by offering redundancy and improved performance. This overview provides an introduction to RAID and its features.
What is RAID?
RAID, or Redundant Array of Independent Disks, is a virtualization technology that combines multiple physical disk drives into logical units for the purpose of data redundancy, improved performance, or both. The data is distributed across the drives using one of several methods called RAID levels, depending on the desired level of redundancy and performance.
These methods, also known as data distribution layouts, are identified by the term “RAID” followed by a number, such as RAID 0 or RAID 1. Each RAID level offers a different balance of reliability, availability, performance and capacity. RAID levels higher than RAID 0 provide protection against unrecoverable sector read errors and failures of entire physical drives.
Three terms used to describe any RAID level are Striping, Mirroring and Parity.
Striping – data striping is the technique of segmenting logically sequential data, such as a file, so that consecutive segments are stored on different physical storage devices.
Mirroring – disk mirroring is the replication of logical disk volumes onto separate physical hard disks in real time to ensure continuous availability. It is most commonly used in RAID 1. A mirrored volume is a complete logical representation of separate volume copies.
In a disaster recovery context, mirroring data over long distance is referred to as storage replication. Depending on the technologies used, replication can be performed synchronously, asynchronously, semi-synchronously, or point-in-time. Replication is enabled via microcode on the disk array controller or via server software. It is typically a proprietary solution, not compatible between various data storage device vendors.
Mirroring is typically only synchronous. Synchronous writing typically achieves a recovery point objective (RPO) of zero lost data. Asynchronous replication can achieve an RPO of just a few seconds while the remaining methodologies provide an RPO of a few minutes to perhaps several hours.
Disk mirroring differs from file shadowing that operates on the file level, and disk snapshots where data images are never re-synced with their origins.
Parity – parity bit, or check bit, is a bit added to a string of binary code. Parity bits are a simple form of error detecting code. Parity bits are generally applied to the smallest units of a communication protocol, typically 8-bit octets (bytes), although they can also be applied separately to an entire message string of bits.
The parity bit ensures that the total number of 1-bits in the string is even or odd. Accordingly, there are two variants of parity bits: even parity bit and odd parity bit. In the case of even parity, for a given set of bits, the bits whose value is 1 are counted. If that count is odd, the parity bit value is set to 1, making the total count of occurrences of 1s in the whole set (including the parity bit) an even number. If the count of 1s in a given set of bits is already even, the parity bit’s value is 0. In the case of odd parity, the coding is reversed. For a given set of bits, if the count of bits with a value of 1 is even, the parity bit value is set to 1 making the total count of 1s in the whole set (including the parity bit) an odd number. If the count of bits with a value of 1 is odd, the count is already odd so the parity bit’s value is 0. Even parity is a special case of a cyclic redundancy check (CRC), where the 1-bit CRC is generated by the polynomial
|7 bits of data||(count of 1-bits)||8 bits including parity|
Standard RAID Levels
RAID 0 consists of striping, but no mirroring or parity. Compared to a spanned volume, the capacity of a RAID 0 volume is the same; it is the sum of the capacities of the drives in the set. But because striping distributes the contents of each file among all drives in the set, the failure of any drive causes the entire RAID 0 volume and all files to be lost. In comparison, a spanned volume preserves the files on the unfailing drives. The benefit of RAID 0 is that the throughput of read and write operations to any file is multiplied by the number of drives because, unlike spanned volumes, reads and writes are done concurrently.
RAID 1 consists of data mirroring, without parity or striping. Data is written identically to two or more drives, thereby producing a “mirrored set” of drives. Thus, any read request can be serviced by any drive in the set. If a request is broadcast to every drive in the set, it can be serviced by the drive that accesses the data first (depending on its seek time and rotational latency), improving performance. Sustained read throughput, if the controller or software is optimized for it, approaches the sum of throughputs of every drive in the set, just as for RAID 0. Actual read throughput of most RAID 1 implementations is slower than the fastest drive. Write throughput is always slower because every drive must be updated, and the slowest drive limits the write performance. The array continues to operate as long as at least one drive is functioning.
RAID Levels 2 to 6 integrate some form of parity with data striping, mitigating the risks of dividing files by the use of a dedicated parity drive.
- RAID 0 consists of striping, but no mirroring or parity.
- RAID 1 consists of data mirroring, without parity or striping.
- RAID 2 consists of bit-level striping with dedicated Hamming-code parity.
- RAID 3 consists of byte-level striping with dedicated parity.
- RAID 4 consists of block-level striping with dedicated parity.
- RAID 5 consists of block-level striping with distributed parity.
- RAID 6 consists of block-level striping with double distributed parity.
Nested / Hybrid RAID Levels
In practice, it is rare to come across any of the higher levels of RAID, as they are hard to implement. It is more common to go for a hybrid approach, combining RAID 0 and RAID 1 configurations in different ways.
RAID 0+1 creates two stripes and mirrors them. If a single drive failure occurs then one of the mirrors has failed, at this point it is running effectively as RAID 0 with no redundancy. Significantly higher risk is introduced during a rebuild than RAID 1+0 as all the data from all the drives in the remaining stripe has to be read rather than just from one drive, increasing the chance of an unrecoverable read error (URE) and significantly extending the rebuild window.
RAID 1+0 (RAID 10) creates a striped set from a series of mirrored drives. The array can sustain multiple drive losses so long as no mirror loses all its drives.
JBOD RAID N+N. With JBOD (just a bunch of disks), it is possible to concatenate disks, but also volumes such as RAID sets.
How are RAID Configurations Created?
Data distribution across multiple drives can be managed either by specialized computer hardware or by software. Software solutions may be part of the operating system, part of the firmware and drivers supplied with a standard drive controller (also known as “hardware-assisted software RAID”), or they may be entirely contained within the hardware RAID controller.
Hardware RAID controllers can be configured through card BIOS or Option ROM before an operating system is booted, and after the operating system is booted, proprietary configuration utilities are available from the manufacturer of each controller. Unlike the network interface controllers for Ethernet, which can usually be configured and serviced entirely through the common operating system paradigms like ifconfig in Unix, without a need for any third-party tools, each manufacturer of each RAID controller usually provides their own proprietary software tooling for each operating system that they deem to support, ensuring a vendor lock-in and contributing to reliability issues.
Software RAID implementations are provided by many modern operating systems. Software RAID can be implemented as:
- A layer that abstracts multiple devices, thereby providing a single virtual device (such as Linux kernel’s md and OpenBSD’s softraid)
- A more generic logical volume manager (provided with most server-class operating systems such as Veritas or LVM)
- A component of the file system (such as ZFS, Spectrum Scale or Btrfs)
- A layer that sits above any file system and provides parity protection to user data (such as RAID-F)
Firmware and driver-based
Software-implemented RAID is not always compatible with the system’s boot process, and it is generally impractical for desktop versions of Windows. However, hardware RAID controllers are expensive and proprietary. To fill this gap, inexpensive “R.A.I.D. controllers” were introduced that do not contain a dedicated RAID controller chip, but simply a standard drive controller chip with proprietary firmware and drivers. During early bootup, the R.A.I.D. is implemented by the firmware and, once the operating system has been more completely loaded, the drivers take over control. Consequently, such controllers may not work when driver support is not available for the host operating system. An example is Intel Rapid Storage Technology, implemented on many motherboards.
Is a RAID Setup Right for You?
If you are working with a large volume of data, implementing a RAID configuration is a good idea. The redundancy and improved availability offered by RAID are important for any critical computing service, such as a web server or internal database.
One of the main benefits of RAID is that it can be implemented cost-effectively by combining multiple less expensive drives to achieve performance similar to that of a more expensive storage device. In some cases, like RAID 10, you may not even need a hardware controller as operating systems like Linux support it out of the box.
We like to make life easier ….
Our technical & commercial team members will always provide you with valuable but impartial advice around the products and services that BVM provide. With their collective backgrounds, they’ll provide you with the benefit of their knowledge and experiences when & where you need it. We’ll always help you in the first instance and get back to you when additional information is required.