April 13, 2010
By Pierre Vignéras
Abstract:
RAID has still not been adopted by most end-users despite its inherent quality such as performance and reliability. Reasons such as complexity of RAID technology (levels, hard/soft), set-up, or support may be given. We believe the main reason is that most end-users own a vast amount of heterogeneous storage devices (USB stick, IDE/SATA/SCSI internal/external hard drives, SD/XD Card, SSD, …), and that RAID-based systems are mostly designed for homogenous (in size and technology) hard disks. Therefore, there is currently no storage solution that manages heterogeneous storage devices efficiently.
In this article, we propose such a solution and we call it PROUHD (Pool of RAID Over User Heterogeneous Devices). This solution supports heterogeneous (in size and technology) storage devices, maximizes the available storage space consumption, is tolerant to device failure up to a customizable degree, still makes automatic addition, removal and replacement of storage devices possible and remains performant in the face of average end-user workflow.
Although this article makes some references to Linux, the algorithms described are independent of the operating system and thus may be implemented on any of them.
Introduction
Whereas RAID1 has been massively adopted by the industry, it is still not common on end-users desktop. Complexity of RAID system might be one reason… among many others. Actually, in a state-of-the-art data center, the storage is designed according to some requirements (the ”top-bottom” approach already discussed in a previous article2). Therefore, from a RAID perspective, the storage is usually composed of a pool of disks of same size and characteristics including spares3. The focus is often on performance. The global storage capacity is usually not a big deal.
The average end-user case is rather different in that their global storage capacity is composed of various storage devices such as:
- Hard drives (internal IDE, internal/external SATA, external USB, external Firewire);
- USB Sticks;
- Flash Memory such as SDCard, XDCard, …;
- SSD.
On the opposite, performance is not the big deal for the end-user: most usage does not require very high throughput. Cost and capacity are main important factors along with ease of use. By the way, the end-user does not usually have any spare devices.
We propose in this paper an algorithm for disk layout using (software) RAID that has the following characteristics:
- it supports heterogeneous storage devices (size and technology);
- it maximizes storage space;
- it is tolerant to device failure up to a certain degree that depends on the number of available devices and on the RAID level chosen;
- it still makes automatic addition, removal and replacement of storage devices possible under certain conditions;
- it remains performant in the face of average end-user workflow.
Algorithm
Description
Conceptually, we first stack storage devices one over the other as shown in figure 1.
Figure 1:Stacking storage devices (same size, ideal RAID case).
On that example with
devices, each of capacity
(terabytes), we end up with a global storage capacity of
. From that global storage space, using RAID, you can get:
- a 4 Tb (
) virtual storage devices (called PV for Physical Volume4 in the following) using RAID0 (level 0), but then you have no fault tolerancy (if a physical device fail, the whole virtual device is lost).
- a 1 Tb (
) PV using RAID1; in that case, you have a fault tolerancy degree of 3 (the PV remains valid in the face of 3 drives failure, and this is the maximum).
- a 3 Tb (
) PV using RAID5; in that case, you have a fault tolerancy degree of 1;
- a 2 Tb (
) PV using RAID10; it that case, the fault tolerancy degree is also 15 (
is the number of mirrored sets, 2 in our case).
Read more