The main performance-limiting issues with disk storage relate to the slow mechanical components that are used for positioning and transferring data. Since a RAID array has many drives in it, an opportunity presents itself to improve performance by using the hardware in all these drives in parallel. For example, if we need to read a large file, instead of pulling it all from a single hard disk, it is much faster to chop it up into pieces, store some of the pieces on each of the drives in an array, and then use all the disks to read back the file when needed. This technique is called striping, after the pattern that might be visible if you could see these “chopped up pieces” on the various drives with a different color used for each file. It is similar in concept to the memory performance-enhancing technique called interleaving.

Striping can be done at the byte level, or in blocks. Byte-level striping means that the file is broken into “byte-sized pieces” . The first byte of the file is sent to the first drive, then the second to the second drive, and so on. (See the discussion of RAID level 3 for more on byte-level striping.) Sometimes byte-level striping is done as a sector of 512 bytes. Block-level striping means that each file is split into blocks of a certain size and those are distributed to the various drives. The size of the blocks used is also called the stripe size (or block size, or several other names), and can be selected from a variety of choices when the array is set up.

block-diagram-of-a-raid-striping-configuration
Block diagram of a RAID striping configuration. One controller (which again
can be hardware or software) splits files into blocks or bytes and distributes
them across several hard disks . The block size determines how many “pieces” files
will be split into. In this example, the first block of file 1 is sent to disk #1, then the
second block to disk #2, etc. When all four disks have one block of file 1, the
fifth block goes back to disk #1, and this continues until the file is completed. Note
that file 3 is only on one disk; this means it was smaller than the block size in this case.

Striping is used in the implementation of most of the basic, single RAID levels (and by extension, any multiple RAID levels that use those single RAID levels). However, the actual way striping is set up, and how it is used, varies greatly from level to level. RAID 0 uses block-level striping without parity; RAID 3 and RAID 7 use byte-level striping with parity; and RAID 4, RAID 5 and RAID 6 use block-level striping with parity. Note the distinction between striping with and without parity: striping by itself involves no redundancy, and therefore, provides no data protection. Also see the discussion of RAID 2 for a look at the oddball bit-level striping with ECC defined by that RAID type.

Performance Problems Cause by Striping

Striping, when combined with parity, can have a negative performance impact on write operations. This is because some of the data used to calculate parity may be stored on the disk already. This means that the process to write to the array is:

1. Read the existing data
2. Calculate the parity
3. Write the new parity
4. Write the new data

Data recovery Salon welcomes your comments and share with us your ideas, suggestions and experience. Data recovery salon is dedicated in sharing the most useful data recovery information with our users and only if you are good at data recovery or related knowledge, please kindly drop us an email and we will publish your article here. We need to make data recovery Salon to be the most professional and free data recovery E-book online.